web-dev-qa-db-ja.com

分類法/用語/%リストをビューでオーバーライドするにはどうすればよいですか?

コンテンツタイプにボキャブラリーが関連付けられています。このコンテンツタイプで作成されたノードを分類するために選択できる用語は1つだけです。語彙はVehiclesと呼ばれ、「車、トラック、ボート」という用語があります。コンテンツタイプはVehiclesとも呼ばれます。

パスautoを使用して[vocabulary:name]/[term:name]を表示するので、レンダリングすると、たとえばすべてのトラックが表示されるsite.com/vehicles/trucksが表示されます...典型的なDrupalもの.. OK ...

これで、「vehicles」というパスを持つページであるビューがあります。コンテンツタイプ「車両」のすべてのアイテムを表示するように設定されています。このページビューも、引数「分類用語のID」を取得するように設定されています。

分類用語が存在する場合、分類パス用に生成されたURLエイリアスは、引数が指定されたビューページとまったく同じです。

URLエイリアス分類パス=車両/トラック。引数= Vehicles/Trucksでページを表示します。

これは意図的なものです。私の目標は、引数が存在しない場合にそのコンテンツタイプのすべての結果を表示することでした。存在する場合は、最も重要なことに、その分類用語に基づいて結果をフィルタリングし、引数なしの場合と同じフィールドと構造を維持します(と同じです)。 site.com/vehicles)。

問題は、これが期待どおりに機能していないことです。 site.com/vehiclesは私のビューと関連するフィルターを正しく表示します。 site.com/vehicles/trucksは、Drupalが提供する通常のフォーマットされていない分類法リストのみを示しています。

これは、分類用語ID引数が正しく構成されていないためですか?

これは、ビューの後に分類フックが発生する重要な問題ですか?もしそうなら、どのようにウェイトを再配置して、正しく発砲し、必要な結果が得られるようにできますか?

私はあなたが提案しようとしていることを知っています-ビューにはdrupalデフォルトビューを上書きするための分類/用語/%ビューが付属しています。

しかし、これは私の場合にはうまくいきません。複数のコンテンツタイプがあり、それぞれに独自の語彙があり、それぞれに表示と明確なフィールドのセットがあります(家と車、たとえば非常に異なるフィールドセットがあります)。すべてのコンテンツタイプに同じフィールドがある場合、分類法/用語/%は機能しますが、そのオーバーライドでそれらを模倣することができますが、そうではないため、引数付きのパスを正しく取得して、その語彙用語と私のフィールド構造を維持?

混乱した場合は申し訳ありません。参照用のサイトへのリンク http://www.buyagainbaby.com 。現在、サイトはタクソノミー/ターム/%をオーバーライドとして使用していますが、再度、各ビューがタクソノミーに基づいて結果セットをレンダリングする方法に責任を持つように変更する必要があります。

28
blue928

これらの回答はすべて素晴らしい解決策です。このような情報提供の回答を提供していただきありがとうございます。アシュラー、あなたの回答は、分類法がどのように機能するか、およびビューと分類法との関係について多くのことを教えてくれました。

私の状況に最適な解決策を見つけました。それが皆さんにも役立つ場合に備えて、それを共有します。

上で説明したように、私の問題は、引数のない私のビューが私が望む結果を提供したことですが、引数のあるデフォルトの分類法ビューは、私が望んだものではありませんでした。

これを解決するために、モジュールTaxonomy Display http://drupal.org/project/taxonomy_display をインストールしました。次に、各ビューを再構成して、引数として分類用語IDを指定しました。

分類表示では、語彙を特定のビューに関連付けることができます。これで、taxonomy/term/3のエイリアスであるVehicles/Truckをクリックすると、ビューが引き継がれ、フィールド構造の整合性を維持しながら、実際に正しくレンダリングされます。

構成の詳細を知りたい場合はお知らせください。

20
blue928

私はあなたのセットアップで考慮すべきいくつかの要因があると信じています:

  • ページ、用語、ビュー、またはページパネルにアクセスするには、すべてのパスが一意である必要があります。同じアドレスのコンテンツが2つある場合、表示を制御できなくなります。 Drupalは、分類用語をビューよりも優先するため、呼び出されません。taxonomy/ term /#を使用したビュー定義は、分類用語をインターセプトしますが、指定したとおり、意味のあるURLは表示されません。

  • ビューはエイリアスに応答しません。これは、Drupalがすべての要求に対して行う最初のことは、すべてのDrupalコンテンツのエイリアスをnode/nid形式標準に変換することです。したがって、あなたの場合Vehicles/Truckは、ビューに割り当てられたノード/#に変換されます。ビューは、エイリアスから直接コンテキストを取得できません。

欲しいものを手に入れるには、いくつかのことを行います。

  • コールバックをビューのパスに設定してメニューを作成します。これにより、正しいURLが生成され、ビューが応答できるようになります。

  • ページマネージャー(Ctools Suite内)を有効にしてパネルを使用します。適切なURLに対して定義されたページパネルを定義する場合、ビューをパネルペインに配置するか、コンテキストをパネルページから直接ビューコンテンツペインに渡すことができます。コンテンツペインにはパスがありません。代わりに、ページパネルによって直接設定されたパスなどのコンテキストを使用して、コンテンツを作成します。 nodeone.se にあるこのビデオシリーズは、パネルとページマネージャーを効果的に使用する方法を示す優れた機能を果たします。

  • ビューのコンテンツを画面に表示する別の方法は、 quicktabs モジュールを使用することです。特定の状況に適しているとは思いませんが、ページに定義したタブを選択することで、ビューに直接アクセスすることもできます。

7
Ashlar

ビューには、分類用語をエミュレートしてオーバーライドする組み込みのビューがあります。ビューを使用して分類リストをオーバーライドするには、それを有効にするだけです。 Taxonomy view

4
Jeremy John

私は実際に数日前に同じようなことをしました。私のソリューションはエレガントではありませんが、機能します。私がしたことは、ビューではなくパネルを使用して、分類用語の表示を上書きすることでした。次に、用語ごとに異なるビューをすべてパネルのコンテンツ領域に追加しました。私の場合、各ビューには特定の語彙の結果に制限するフィルターがあるため、分類用語のページにアクセスすると、その特定の語彙のビューのみが表示されます。

私がこれをどのように実装したかについてさらに情報が必要な場合はお知らせください。

2
Patrick Kenny

WebbyKat によって、ページパスを/taxonomy/term/%ではなく/categories/%に設定するという優れたソリューションが提案されています。

機能しますが、すべての用語が1つのビューに書き直されます。

1
timofey.com