Я использую расширение 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
архив терминов таксономии.
Приведенный выше плакат верен, что использование маркеров макета является хорошим способом сделать это (хотя дескриптор макета wordpress_post_view_POSTTYPE уже существует, поэтому нет необходимости создавать его через наблюдателя), но я решил, что этот подход, вероятно, будет слишком техническим для большого часть пользователей.
В ответ на это я только что выпустил версию 3.1.1.25 Magento WordPress Интеграция это добавляет поддержку для Пользовательские боковые панели плагин. Этот плагин позволяет вам создавать дополнительные боковые панели в WordPress Admin и запускать их отображение на основе таких вещей, как тип записи, тип архива (категория, дата, домашняя страница, поиск и т. Д.), А также указывать различные боковые панели для каждого конкретного сообщения. Все это можно сделать через страницу администрирования WordPress> Виджеты.
Чтобы добавить эту функцию, обновите расширение до последней версии, а затем установите плагин Custom Sidebars в WordPress Admin. После этого вы сможете создавать собственные боковые панели, не касаясь кода.
Мне удалось собрать решение, проверив тип сообщения в 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();
Спасибо @BenTideswell за то, что предупредили нас о том, что это расширение уже предоставляет соответствующий дескриптор макета, который можно использовать для этой цели, поэтому нам не нужно создавать еще один. Нам нужно сделать только пару обновления макета XML которые нацелены на соответствующий тип сообщения:
<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>