编辑自定义布局的woocommerce模板文件

时间:2013-04-12 03:02:26

标签: php wordpress wordpress-plugin woocommerce

我正在尝试使用woocommerce插件为Wordpress主题添加一些自定义。我试图将商店页面样式化,以在产品顶部或左侧列出类别列表。当您在woocommerce管理设置中的目录页面中启用类别选项时,它会利用content_product_cat2.php模板文件在woocommerce产品循环中显示产品类别缩略图。我移动了那个php文件并开始编辑并获得结果。我删除了缩略图,但我无法从网格格式或循环外获取标题。我可以在我的functions.php中添加一些钩子,但我没有看到woocommerce钩子引用中的任何钩子看起来像他们会做的。也许组合编辑此模板并使用钩子将其放置在循环之前。我不确定那是为什么我发布。 Here is a link to the page.我正在使用它,这里是php文件的内容:

<?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文件可能不是最好的方法。 Jay在下面提到最好编辑content_product.php文件。虽然我最初认为这也是一个很好的解决方案,但我意识到它不会实现我想做的事情。编辑content_product.php只会在循环中进行编辑,我需要在循环之前显示我的类别,这样它们就不会落入循环的网格格式......任何新想法都是???

2 个答案:

答案 0 :(得分:3)

另一种方法是您可以禁用默认的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>';
                        }
                    }
?>

答案 1 :(得分: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。

您也可以使用get_categories http://codex.wordpress.org/Function_Reference/get_categories代替wp_list_categories并编写自己的html输出。这与首先​​提供正确答案的Jay Bhatt所做的相同。