検索結果を複数のチャンネルに並べ替える

検索結果に結合する2つのチャンネル、画像と動画があります。キーワードで検索すると効果的です。 entry_dateとtitleでソートします。しかし、私たちはまた、他の分野で並べ替えることを望みます。

単純化するために、各チャンネルのカスタムフィールドvideo_score、image_scoreを想像してください。これは、他の場所から受け取った整数を保持しています。ですから、どのようにorderbyのためにこれら2つを組み合わせることが可能でしょうか?

簡単な場合は、一意の注文番号を持つフィールドvideo_orderとimage_orderを作成できますが、カスタムフィールドが2つのチャンネルにあるため、同じカスタムフィールド名を使用する方法がわかりません。これはorderbyに必要なものです。

コアフィールドをハイジャックする必要がありますか?

ありがとう、 ポール

1

1 答え

これを行うための1つの方法は、 low_search_post_searchフックを使用するカスタムエクステンションを作成することです。 a>。これにより、結果を解析するためのネイティブのchannel:entriesタグに渡されるすべてのパラメータを含む配列が得られます。これには、検索結果のエントリIDを含むentry_idまたはfixed_orderパラメータが含まれます( a LSフィルターがトリガーされました)。

そのIDのリストを使用して、並べ替えたい値をDBに照会し、それらの値に基づいてエントリーIDを再ソートすることができます。新しくソートされたリストでfixed_orderパラメータを設定すると、検索結果が必要な順序で表示されます。

別の方法は、コアフィールドをハイジャックするフィールドタイプを作成することです(あなたの提案通り)のようにview_count_oneを4回します。

1
追加された