使用fishpig在magento类别页面上显示相关的博客帖子/博客类别

时间:2015-01-28 09:47:52

标签: php wordpress 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>

3 个答案:

答案 0 :(得分:2)

  

如果要显示与类别的直接关联,则需要从数据库中检索关联,并使用检索到的ID手动构建帖子集合。

要扩展Bens评论,帮助者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类别ID,值是它在Magento中的位置。

接下来,您需要将密钥翻转为值。

警告请勿使用array_flip!如果您的类别具有相同的位置,则仅保存具有相同值的最后一个oe。

解决方案它有点脏,但您可以循环并重建要在以后使用的阵列;

if($_associations && $_collection->getSize()){
    $_wpIds = array();
    foreach($_associations as $_id => $_position){
        $_wpIds[] = $_id;
    }
}

您可以使用addCategoryIdFilter($categoryId)功能过滤您的收藏。 不幸的是,它似乎不接受数组,如果它被多次应用到你的集合,那么它将返回false。遗憾的是,模块中似乎没有一个功能可以按类别ID数组过滤集合。

在理想情况下,ID过滤器应接受字符串和数组,如果是数组,则应该能够定义AND / OR参数。可能是未来发布的东西;)

答案 1 :(得分:0)

我发现可以通过将此代码添加到... category / view.phtml来显示类别页面上的帖子:

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

这会将所有帖子的列表加载到您的类别页面,无论您放置它们。但是你需要改变categoryposts.phtml以满足你的需求 - 希望这会有所帮助!

答案 2 :(得分:-1)

另一个答案中的代码会在侧边栏小部件中显示整个博客的最新帖子,这不是问题所在。

虽然可以将博客帖子与Magento类别相关联,但目前无法显示它们。这听起来不对,所以让我解释一下。

当您将博客帖子与Magento类别相关联时,您实际上并未将这两个项目关联在一起。相反,这是将博客帖子与该类别中的所有产品相关联的快速方法。

如果要显示与类别的直接关联,则需要从数据库中检索关联,并使用检索到的ID手动构建帖子集合。