我正在探索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>
答案 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手动构建帖子集合。