Я изучал Magento's Fishpig extension
и нашел интересный способ связать сообщение в блоге & Категории блога в категории magento. Но я не понимаю, как показать на фронтенде страницы категории magento.
Я думаю, что это встроенная функциональность Fishpig module
,
Я пробовал что-то, используя следующий код:
<catalog_category_view>
<reference name="left">
<block type="wordpress/post_associated" name="wordpress_posts_associated" template="wordpress/post/associated.phtml" after="-">
<action method="setTitle" translate="title" module="wordpress">
<title><![CDATA[Related Blog Posts]]></title>
</action>
<action method="setEntity">
<type><![CDATA[category]]></type>
</action>
</block>
</reference>
</catalog_category_view>
Если вы хотите отобразить прямые сопоставления с категорией, вам нужно будет извлечь сопоставление из базы данных и создать коллекцию записей вручную, используя полученные идентификаторы.
Чтобы расширить комментарий Бенса, помощник Fishpig_Wordpress_Helper_Associations
может получить ассоциации для вас.
Здесь вы найдете функцию;
public function getAssociations($type, $objectId, $storeId = null)
Если вы пройдете по этому файлу, вы сможете понять, что вам нужно сделать, но для простоты приведите пример его использования ниже;
$_helper = Mage::helper('wordpress/associations');
$_category = $this->getCurrentCategory();
$_associations = $_helper->getAssociations('category/category',$_category->getId());
$_collection = Mage::getResourceModel('wordpress/post_collection')
->addIsPublishedFilter();
Это вернет массив, где ключами являются идентификаторы категории WP, а значением является его позиция в Magento.
Далее вам нужно будет перевернуть ключи в значения.
Предупреждение Не использовать array_flip
! Если у вас есть категории с одинаковым положением, будет сохранен только последний OE с тем же значением.
Решение Это немного грязно, но затем вы можете перебрать и перестроить массив, который будет использоваться позже;
if($_associations && $_collection->getSize()){
$_wpIds = array();
foreach($_associations as $_id => $_position){
$_wpIds[] = $_id;
}
}
Вы можете отфильтровать свою коллекцию, используя функцию addCategoryIdFilter($categoryId)
,
К сожалению, кажется, что он не принимает массивы, и если он будет применен несколько раз к вашей коллекции, он вернет false. К сожалению, кажется, что в модуле нет функции, которая позволяла бы фильтровать коллекцию по массиву идентификаторов категорий.
В идеальном мире фильтр ID должен принимать как строку, так и массивы, а если массив, то вы должны иметь возможность определять AND
/OR
параметр. Возможно, что-то для будущего выпуска;)
Я обнаружил, что можно показывать сообщения на странице категории, добавив этот код в … category / view.phtml:
<?php echo Mage::getSingleton('core/layout')
->createBlock('wordpress/sidebar_widget_posts')
->setTemplate('wordpress/sidebar/widget/categoryposts.phtml')
->toHtml() ?>
Это загрузит список всех сообщений на страницу вашей категории, где бы вы их ни разместили. Однако вам нужно изменить categoryposts.phtml в соответствии с вашими потребностями — надеюсь, это поможет!
Код в другом ответе покажет самые последние сообщения для всего вашего блога в виджете боковой панели, а это не то, что задает вопрос.
Хотя сообщения блога можно связать с категорией Magento, в настоящее время их невозможно отобразить. Это звучит неправильно, поэтому позвольте мне объяснить.
Когда вы связываете сообщение в блоге с категорией Magento, вы на самом деле не связываете эти два элемента вместе. Вместо этого это быстрый способ связать сообщение в блоге со всеми продуктами в этой категории.
Если вы хотите отобразить прямые сопоставления с категорией, вам нужно будет извлечь сопоставление из базы данных и создать коллекцию записей вручную, используя полученные идентификаторы.