2013-04-12 49 views
0

我想使用woocommerce插件將一些自定義添加到Wordpress主題。我試圖將商店頁面風格化,以在產品頂部或左側列出類別列表。當您在woocommerce管理設置的目錄頁面中啓用類別選項時,它會利用content_product_cat2.php模板文件在woocommerce產品循環中顯示產品類別縮略圖。我已經移動該PHP文件,並開始編輯它並獲得結果。我刪除了縮略圖,但無法將標題從網格格式或循環外部獲取。我打開添加一些鉤子到我的functions.php,但我沒有看到woocommerce鉤子引用中的任何鉤子看起來像他們會做的。也許是編輯這個模板並使用鉤子將它放在循環之前的組合。林不知道這就是爲什麼im張貼。 Here is a link to the page.在這裏使用它,即時通訊是php文件的內容:編輯自定義佈局的woocommerce模板文件

<?php 
/** 
* The template for displaying product category thumbnails within loops. 
* 
* Override this template by copying it to yourtheme/woocommerce/content-product_cat.php 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 




global $woocommerce_loop; 

// Custom Edits 

if (is_shop() && in_array($category->slug, array('fakeie'))) { 
return; 
} 


// Store loop count we're currently on 
if (empty($woocommerce_loop['loop'])) 
$woocommerce_loop['loop'] = 0; 

// Store column count for displaying the grid 
if (empty($woocommerce_loop['columns'])) 
$woocommerce_loop['columns'] = apply_filters('loop_shop_columns', 4); 

// Increase loop count 
$woocommerce_loop['loop']++; 
?> 
<li class="product <?php 
if ($woocommerce_loop['loop'] % $woocommerce_loop['columns'] == 0) 
    echo 'last'; 
elseif (($woocommerce_loop['loop'] - 1) % $woocommerce_loop['columns'] == 0) 
    echo 'first'; 
?>"> 

<?php do_action('woocommerce_before_subcategory', $category); ?> 

<a href="<?php echo get_term_link($category->slug, 'product_cat'); ?>"> 



    <h3 style="float:left;"> 
     <?php echo $category->name; ?> 
     <?php if ($category->count > 0) : ?> 
      <mark class="count">(<?php echo $category->count; ?>)</mark> 
     <?php endif; ?> 
    </h3> 

    <?php 
     /** 
     * woocommerce_after_subcategory_title hook 
     */ 
     do_action('woocommerce_after_subcategory_title', $category); 
    ?> 

</a> 

<?php do_action('woocommerce_after_subcategory', $category); ?> 

</li> 

感謝球員......我知道會有人有這方面的經驗。

編輯 - 好吧,所以我意識到編輯content_product_cat.php文件可能不是最好的方式去解決它。周杰倫在下面提到,最好編輯content_product.php文件。雖然我最初認爲這也是一個很好的解決方案,我意識到它不會完成即將發佈的內容。編輯content_product.php只會在循環中進行編輯,並且我需要在循環之前顯示我的類別,以便它們不會陷入循環的網格格式.....任何新的想法?

回答

2

一種替代方法是,您可以禁用默認的woocommerce類別視圖並且不使用該模板。相反,您可以編寫自定義代碼並按照自己的方式獲取類別列表和樣式,並將其添加到woocommerce產品網格中。以下是你如何做到的。

<?php $all_categories = get_categories('taxonomy=product_cat&hide_empty=0&hierarchical=1'); 
        foreach ($all_categories as $cat) { 
         if($cat->category_parent == 23) {       
                 $category_id = $cat->term_id; 
          $thumbnail_id = get_woocommerce_term_meta($cat->term_id, 'thumbnail_id', true); 
          $image = wp_get_attachment_url($thumbnail_id); 
           echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'"><img src="'.$image.'" alt="'. $cat->name .'"/><div>'. $cat->name .'</div></a>'; 
         } 
        } 
?> 
+0

好吧,聽起來不錯,但我有點困惑...我將以上代碼添加到什麼文件。 –

+0

/woocommerce/templates/content-product.php這是woocommerce用於生成產品網格的模板.... –

+0

非常感謝。我將它複製到content-product.php文件中,並沒有顯示類別。我在多個線路位置嘗試過,但沒有成功。我認爲這是一個更好的解決方案,但我也沒有得到它的工作。 –

0

你可以添加到您的functions.php:

add_action('woocommerce_before_shop_loop','showcats'); 


function showcats() 
{ 
    //list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin) 

$taxonomy  = 'product_cat'; 
$orderby  = 'name'; 
$show_count = 0;  // 1 for yes, 0 for no 
$pad_counts = 0;  // 1 for yes, 0 for no 
$hierarchical = 1;  // 1 for yes, 0 for no 
$title  = ''; 

$args = array(
    'taxonomy'  => $taxonomy, 
    'orderby'  => $orderby, 
    'show_count' => $show_count, 
    'pad_counts' => $pad_counts, 
    'hierarchical' => $hierarchical, 
    'title_li'  => $title 
); 

?> 
<ul> 
<?php wp_list_categories($args); ?> 
</ul> 
<? 
} 

function showcatlist() 
{ 
    if(is_shop()) showcats(); 
} 

功能showcats是採用:http://wordpress.org/support/topic/plugin-woocommerce-excelling-ecommerce-category-list。瞭解更多關於:http://codex.wordpress.org/Template_Tags/wp_list_categories。要更改列表的樣式,您將閱讀:

通過將title_li 參數設置爲空字符串,可以刪除最外面的項目和列表。您需要自己將輸出打包爲 排序列表(ol)或無序列表(請參閱上面的示例)。 如果您完全不想使用列表輸出,請將style參數設置爲none。

而不是wp_list_categories你也可以使用get_categories http://codex.wordpress.org/Function_Reference/get_categories並寫出自己的html輸出。這將與第一次提供正確答案的Jay Bhatt完成相同。