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 の配列でコレクションをフィルタリングできる関数がモジュール内にないようです。

AND理想的な世界では、ID フィルターは文字列と配列の両方を受け入れる必要があり、配列の場合は/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 カテゴリに関連付けても、実際にはこれら 2 つの項目が関連付けられているわけではありません。代わりに、これはブログ投稿をそのカテゴリ内のすべての製品に関連付ける簡単な方法です.

カテゴリに対する直接の関連付けを表示する場合は、データベースから関連付けを取得し、取得した ID を使用して投稿コレクションを手動で作成する必要があります。

于 2015-03-25T14:55:40.183 に答える