показать связанный пост / категорию блога на странице категории magento, используя fishpig

Я изучал 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>

4

Решение

Если вы хотите отобразить прямые сопоставления с категорией, вам нужно будет извлечь сопоставление из базы данных и создать коллекцию записей вручную, используя полученные идентификаторы.

Чтобы расширить комментарий Бенса, помощник 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 параметр. Возможно, что-то для будущего выпуска;)

2

Другие решения

Я обнаружил, что можно показывать сообщения на странице категории, добавив этот код в … category / view.phtml:

 <?php echo Mage::getSingleton('core/layout')
->createBlock('wordpress/sidebar_widget_posts')
->setTemplate('wordpress/sidebar/widget/categoryposts.phtml')
->toHtml() ?>

Это загрузит список всех сообщений на страницу вашей категории, где бы вы их ни разместили. Однако вам нужно изменить categoryposts.phtml в соответствии с вашими потребностями — надеюсь, это поможет!

0

Код в другом ответе покажет самые последние сообщения для всего вашего блога в виджете боковой панели, а это не то, что задает вопрос.

Хотя сообщения блога можно связать с категорией Magento, в настоящее время их невозможно отобразить. Это звучит неправильно, поэтому позвольте мне объяснить.

Когда вы связываете сообщение в блоге с категорией Magento, вы на самом деле не связываете эти два элемента вместе. Вместо этого это быстрый способ связать сообщение в блоге со всеми продуктами в этой категории.

Если вы хотите отобразить прямые сопоставления с категорией, вам нужно будет извлечь сопоставление из базы данных и создать коллекцию записей вручную, используя полученные идентификаторы.

-1
По вопросам рекламы [email protected]