2017-06-27 11 views
0

私は現在、記事記事ページ(関連記事)の関連記事のリストを取得しようとしています。私は私がしようとすると、出力getCategoryIdしかし、私は何を取得/Block/Post/ListPost.phpMagento 2/Wordpress/Fishpig関連記事

public function getRelatedPosts() 
{ 
    $posts = $this->getPosts(); 

    die($this->getCategoryId()); 

    return $this->_postCollection; 
} 

以内に新しい機能を作成しました。ポストコレクションにカテゴリフィルタを適用する方法もわかりません。

誰でもここにアドバイスできますか?

+0

Magento [リンク](https://magento.stackexchange.com/)のためのスタック交換サイトがあります。 –

+0

@MarceloStaudtはい、そこに私の質問が残っていますが、それを削除して、ここに私は以前にはるかに良い運を持っていたここにショットを与える。 – wickywills

+0

@MarceloStaudtモジュールの開発者もこのサイトでより活発に思えます。 – wickywills

答えて

1

getCategoryIdメソッドがどこから得られたのかわかりませんが、これはListPostブロッククラスの一部ではありませんので、うまくいきません。このような方法を発明することはできません。

どのような方法が利用できるかブロッククラスをチェックする必要があります。あなたはポストが関連している必要がありますどのように指定していない

echo sprintf('<pre>%s</pre>', print_r(get_class_methods($this))); 
exit; 

が、私はあなたが取得したい推測している。でも、ファイルをロードせずにクラスに次のPHPを追加することであることを行うための簡単な方法同じカテゴリの投稿これを行うための1つのオプションは、投稿の主要カテゴリを読み込み、これに基づいてポストコレクションを取得することです。 Postクラスのファイルを見ると、getParentTerm($ taxonomy)メソッドが表示されます。

if ($category = $post->getParentTerm('category')) { 
    $relatedPosts = $category->getPostCollection(); 

    // Remove the current post from the collection 
    $relatedPosts->addFieldToFilter('ID', array('neq' => $post->getId())); 
} 

あなたは常に作業しているクラスファイルを見てください。それはオープンソースの美しさです。あなたは文字通り各オブジェクトに対してどのメソッドが利用可能かを知ることができ、どのように動作するかを見ることさえできます。

+0

ありがとうございます - 投稿を削除するために 'addFieldToFilter'を使用することについて知らなかった! – wickywills

関連する問題