web-dev-qa-db-ja.com

ブロックビューのコンテキストフィルター

分類用語であるトピック( "news/design"、 "news/coding" ...)のコンテキストフィルターを含むページビュー( "/ news")があり、これは問題なく機能しました。モバイルテーマの一部の変更により、ページビューではなくブロックビューが必要ですが、フィルターで動作させることができません。

古いフィルター設定では、すべての記事を "/ news"で取得しますが、使用しているフィルターは、デフォルト値をフィルターから "taxonomy term ID from url"に変更しました。 「/ news」の空のページが表示されます(これは、ブロックビューが含まれたシンプルなページです)、「/ news/design」の「サイトが見つかりません」などです。ビューのプレビューでは、すべてが正常に機能します。

これらはビューの設定です。

screenshot

19
user6670

一般に、このブロックが機能しない理由は、ブロックに割り当てられたパスがなく、コンテキストフィルターに処理するパスがないためです。ブロックをパスに接続するには、コンテキストフィルター設定に戻り、What to do if the URL is not availableセクションでProvide default valueを選択し、ドロップダウンボックスからRaw value from URLを選択します。 Path Componentボックスから、コンテキストフィルターがその値を取得するURL内の位置を選択します。

特定のケースでは、URLを分類用語として解釈するようビューに指示しましたが、それはおそらくURLの形式(taxonomy/term/tid)ではありません。ビューUIは、エイリアスがコンテキストフィルターで使用できない場合に使用できることを示唆しているため、少し誤解を招く可能性があります。 Drupalは、ビューを呼び出すときにエイリアスをベースURL値に変換します。これがコンテキストフィルターで直接使用できます。エイリアスを使用するには、上記のように具体的に通知する必要があります。ビューは強力ですが、使用するのが少し難しいです。SQLクエリの経験がある場合に使用できるツールの1つは、[設定]タブの[ビューのプレビュー]表示でクエリの表示をオンにすることです。これにより、どのビューが試行されているかがわかりますビューが呼び出されたときに行うこと。

この問題の詳細は この質問 で確認できます

33
Ashlar