<?php wpsc_end_category_query(); ?> <?php } else { ?> <div class="wpsc_categorisation_group" id="categorisation_group_<?php echo $category_id; ?> "> <ul class="wpsc_categories wpsc_top_level_categories"> <li class="wpsc_category_<?php echo $curr_cat['term_id']; wpsc_print_category_classes($curr_cat); ?> "> <?php if (!($category_image == WPSC_CATEGORY_URL)) { ?> <a href="<?php echo $link; ?> " class="wpsc_category_image_link"><?php wpsc_parent_category_image($show_thumbnails, $category_image, $width, $height, false, $show_name); ?> </a> <?php } ?>
?> '> <a href="<?php wpsc_print_category_url(); ?> " class='wpsc_category_image_link'> <?php wpsc_print_category_image(45, 25); ?> </a> <a href="<?php wpsc_print_category_url(); ?> " class="wpsc_category_link <?php wpsc_print_category_classes(); ?> "> <?php wpsc_print_category_name(); ?> <?php if (get_option('show_category_count') == 1) { ?> <?php wpsc_print_category_products_count("(", ")"); ?> <?php } ?> </a>
/** * wpsc category loop function * This function recursively loops through the categories to display the category tree. * This function also generates a tree of categories at the same time * WARNING: as this function is recursive, be careful what you do with it. * @param array the category query * @param string the category html * @param array the category array branch, is an internal value, leave it alone. * @return string - the finished category html */ function wpsc_display_category_loop($query, $category_html, &$category_branch = null) { static $category_count_data = array(); // the array tree is stored in this if (isset($query['parent_category_id'])) { $category_id = absint($query['parent_category_id']); } else { $category_id = 0; } $category_data = get_terms('wpsc_product_category', 'hide_empty=0&parent=' . $category_id, OBJECT, 'display'); $output = ''; // if the category branch is identical to null, make it a reference to $category_count_data if ($category_branch === null) { $category_branch =& $category_count_data; } $allowed_tags = array('a' => array('href' => array(), 'title' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'em' => array(), 'strong' => array(), 'b' => array()); $allowedtags = apply_filters('wpsc_category_description_allowed_tags', $allowed_tags); foreach ((array) $category_data as $category_row) { // modifys the query for the next round $modified_query = $query; $modified_query['parent_category_id'] = $category_row->term_id; // gets the count of products associated with this category $category_count = $category_row->count; // Sticks the category description in $category_description = ''; if ($category_row->description != '' && !empty($query['description_container'])) { $start_element = $query['description_container']['start_element']; $end_element = $query['description_container']['end_element']; $category_description = $start_element . wpautop(wptexturize(wp_kses($category_row->description, $allowedtags))) . $end_element; } // Creates the list of classes on the category item $category_classes = wpsc_print_category_classes((array) $category_row, false); // Set the variables for this category $category_branch[$category_row->term_id]['children'] = array(); $category_branch[$category_row->term_id]['count'] = (int) $category_count; // Recurse into the next level of categories $sub_categories = wpsc_display_category_loop($modified_query, $category_html, $category_branch[$category_row->term_id]['children']); // grab the product count from the subcategories foreach ((array) $category_branch[$category_row->term_id]['children'] as $child_category) { $category_branch[$category_row->term_id]['count'] += (int) $child_category['count']; } // stick the category count array together here // this must run after the subcategories and the count of products belonging to them has been obtained $category_count = $category_branch[$category_row->term_id]['count']; $start_element = ''; $end_element = ''; if (isset($query['products_count']['start_element'])) { $start_element = $query['products_count']['start_element']; } if (isset($query['products_count']['end_element'])) { $end_element = $query['products_count']['end_element']; } $category_count_html = $start_element . $category_count . $end_element; if (isset($query['subcategory_container']) && !empty($sub_categories)) { $start_element = $query['subcategory_container']['start_element']; $end_element = $query['subcategory_container']['end_element']; $sub_categories = $start_element . $sub_categories . $end_element; } // get the category images $category_image = wpsc_place_category_image($category_row->term_id, $modified_query); if (empty($query['image_size']['width'])) { if (!wpsc_category_grid_view()) { $width = wpsc_get_categorymeta($category_row->term_id, 'image_width'); } if (empty($width)) { $width = get_option('category_image_width'); } } else { $width = $query['image_size']['width']; } if (empty($query['image_size']['height'])) { if (!wpsc_category_grid_view()) { $height = wpsc_get_categorymeta($category_row->term_id, 'image_height'); } if (empty($height)) { $height = get_option('category_image_height'); } } else { $height = $query['image_size']['height']; } $category_image = wpsc_get_categorymeta($category_row->term_id, 'image'); $category_image_html = ''; if ($query['show_thumbnails'] == 1) { if (!empty($category_image) && is_file(WPSC_CATEGORY_DIR . $category_image)) { $category_image_html = "<img src='" . WPSC_CATEGORY_URL . "{$category_image}' alt='{$category_row->name}' title='{$category_row->name}' style='width: {$width}px; height: {$height}px;' class='wpsc_category_image' />"; } elseif (isset($query['show_name']) && 1 == $query['show_name']) { $category_image_html .= "<span class='wpsc_category_image item_no_image ' style='width: {$width}px; height: {$height}px;'>\n\r"; $category_image_html .= "\t<span class='link_substitute' >\n\r"; $category_image_html .= "\t\t<span>" . __('N/A', 'wpsc') . "</span>\n\r"; $category_image_html .= "\t</span>\n\r"; $category_image_html .= "</span>\n\r"; } } // get the list of products associated with this category. $tags_to_replace = array('[wpsc_category_name]', '[wpsc_category_description]', '[wpsc_category_url]', '[wpsc_category_id]', '[wpsc_category_classes]', '[wpsc_category_image]', '[wpsc_subcategory]', '[wpsc_category_products_count]'); $content_to_place = array(esc_html($category_row->name), $category_description, esc_url(get_term_link($category_row->slug, 'wpsc_product_category')), $category_row->term_id, $category_classes, $category_image_html, $sub_categories, $category_count_html); // Stick all the category html together and concatenate it to the previously generated HTML $output .= str_replace($tags_to_replace, $content_to_place, $category_html); } return $output; }