4

我正在探索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

3 回答 3

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参数。可能是未来版本的东西;)

于 2015-06-26T08:05:09.597 回答
0

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

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

这会将所有帖子的列表加载到您放置的类别页面的任何位置。但是,您需要更改 categoryposts.phtml 以满足您的需要 - 希望这会有所帮助!

于 2015-01-30T09:42:00.727 回答
-1

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

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

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

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

于 2015-03-25T14:55:40.183 回答