在构建我的最新Woocommerce项目时,我一直在使用Timber。一切都很好,但是我有一个我无法弄清楚的问题:单个产品页面上的上下文不正确。在单一产品页面上,我有相关的产品,循环中最后一个产品的上下文用作当前单一产品的上下文。
关于使用Timber和Woocommerce的文档有限。尽管我已经尝试了所有方法,但似乎并不能解决问题。
function timber_set_product($post)
{
global $product;
if (is_woocommerce() || is_search() || is_front_page()) {
$product = wc_get_product($post->ID);
}
}
我在做什么错?我的设置与https://github.com/timber/timber/blob/master/docs/guides/woocommerce.md相同,但对我来说无法正常工作。
谢谢!
答案 0 :(得分:0)
将WooCommerce与Timber集成可能会有些复杂,但是一旦您掌握了一些技巧,它就可以正常工作。
主要问题是当您要覆盖WooCommerce时,然后您必须以经典的Wordpress方式覆盖WooCommerce,该主题位于主题的“ / woocommerce”文件夹中,您可以从其中复制要覆盖而不是不覆盖的插件中的文件以Timber方式分离PHP和TWIG文件中的关注点。不过这里不需要。
我们获取产品上下文和相关产品的一种方法是在woocommerce.php中设置产品:
$context = Timber::get_context();
if (is_singular('product')) {
$context['page'] = Timber::get_post();
$product = get_product( $context['page']->id );
$context['product'] = $product;
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'orderby' => 'DESC',
'post__in' => $product->get_related(),
'post__not_in' => array( $product->id )
) ;
$context['related'] = Timber::get_posts( $args );
Timber::render('woo/single-product.twig', $context);
}