我使用Fishpig WordPress扩展程序用于Magento(使用CPT扩展程序),我似乎无法弄清楚如何根据当前帖子的类型加载侧边栏块。我只想在以下情况下加载特定的块:
recipe
recipe
recipe_category
对于单个帖子视图,我在local.xml中添加了这样的块:
<wordpress_post_view>
<reference name="right">
<remove name="wordpress.widget.categories" />
<block type="wordpress/sidebar_widget_categories" name="wordpress.widget.recipe_categories" before="-" as="recipe_categories" template="wordpress/sidebar/widget/categories.phtml">
<action method="setTitle"><title>Recipe Categories</title></action>
<action method="setTaxonomy"><title>recipe_category</title></action>
</block>
</reference>
</wordpress_post_view>
该工作正常,我只需要弄清楚如何限制它仅显示recipe
帖子类型。 recipe
存档和recipe_category
分类术语存档也是如此。
答案 0 :(得分:2)
上面的海报是正确的,使用布局句柄是一个很好的方法(尽管wordpress_post_view_POSTTYPE布局句柄已经存在,所以不需要通过观察者创建它)但我认为这种方法可能太技术了对于很大一部分用户。
作为对此的回应,我刚刚发布了Magento WordPress Integration的3.1.1.25版,增加了对Custom Sidebars插件的支持。此插件允许您在WordPress管理中创建额外的侧边栏,并根据帖子类型,存档类型(类别,日期,主页,搜索等)触发它们以及为每个特定帖子指定不同的侧边栏。这一切都可以通过WordPress管理员&gt;完成。小部件页面。
要添加此功能,请将扩展程序升级到最新版本,然后在WordPress管理中安装自定义边栏插件。然后,您就可以在不触及任何代码的情况下创建自定义侧边栏。
答案 1 :(得分:0)
我设法通过检查wordpress/sidebar/widget/categories.phtml
模板文件中的帖子类型来拼凑解决方案。仍然对清洁解决方案感兴趣。
$post_type = 'post';
if( $post = Mage::registry('wordpress_post') ) {
$post_type = $post->getPostType();
} elseif( $type = Mage::registry('wordpress_post_type') ) {
$post_type = $type->getPostType();
} elseif( $term = Mage::registry('wordpress_term') ) {
$post_type = $term->getTaxonomy() == 'recipe_category' ? 'recipe' : 'post';
}
if( $post_type == 'recipe' ) {
$this->setTaxonomy('recipe_category');
$this->setTitle('Recipe Categories');
}
$categories = $this->getCategories();
答案 2 :(得分:0)
感谢@BenTideswell提醒我们这个扩展已经提供了一个可以用于此目的的适当布局句柄,因此我们不需要创建另一个。我们只需要针对相应的帖子类型执行几个layout XML updates:
<wordpress_post_view>
<reference name="right">
<remove name="wordpress.widget.categories"/>
</reference>
</wordpress_post_view>
<wordpress_post_view_recipe>
<reference name="right">
<block type="wordpress/sidebar_widget_categories" name="wordpress.widget.recipe_categories" before="-" as="recipe_categories" template="wordpress/sidebar/widget/categories.phtml">
<action method="setTitle"><title>Recipe Categories</title></action>
<action method="setTaxonomy"><title>recipe_category</title></action>
</block>
</reference>
</wordpress_post_view_recipe>