プラグインベースの検索でRelatedTo

$criteria = craft()->elements->getCriteria(ElementType::Entry);
$criteria->section = 'stories';
$criteria->search = $this->query;
$criteria->order = $this->orderSql();
$criteria->limit = 1000;
$criteria->visibility = $this->checkVisibility();
$criteria->thisIsAGuide = ':empty:';

関連するエントリを取得するのに役立つrelatedTo条件を追加する手助けが必要です。

現在の検索スコープはエントリを検索しています( “Story”)。
エントリ(「ストーリー」)にはエントリ(「チャネル」)が含まれています。
そのチャンネルにはカテゴリ(「brandCategories」)があります

I need to return stories that contain entries that have a
matching brandCategory. That brandCategory is getting pulled from a
GET var of “&brands%5B%5D={{categoryId}}

ベストアンサー

You can create 2 queries, first you pull all the channel
entries, that are related to your bandCategory

$criteria = craft()->elements->getCriteria(ElementType::Entry);
$criteria->relatedTo = $bandCategory;
$criteria->section = 'channel';
$relatedChannelEntries = $criteria->ids();

// then continue your code 
$criteria = craft()->elements->getCriteria(ElementType::Entry);
$criteria->section = 'stories';
$criteria->search = $this->query;
$criteria->order = $this->orderSql();
$criteria->limit = 1000;
$criteria->visibility = $this->checkVisibility();
$criteria->thisIsAGuide = ':empty:';
// and search only for entries that are related to channel entries that are related to your band
$criteria->relatedTo = $relatedChannelEntries;

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です