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


28

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

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

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

タクソノミー用語が存在する場合、タクソノミーパスに対して生成されるURLエイリアスは、引数が指定された[ビュー]ページとまったく同じであることに注意してください。

URLエイリアス分類パス= vehicle / trucks。引数を含むビューページ= vehicle / trucks。

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

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

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

これは、ビューの後に分類フックが発動する重みの問題ですか?もしそうなら、どのように私はそれが正しく発火し、私に必要な結果を与えるように、ここで重みを再配置できますか?

私があなたが提案しようとしていることは知っています-ビューには、Drupalのデフォルトビューをオーバーライドするタクソノミー/用語/%ビューが付属しています。

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

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

回答:


20

これらの答えはすべて素晴らしい解決策であり、このような有益な答えを提供してくれてありがとう。アシュラー、あなたの回答は、分類法の仕組みと、ビューと分類法の関係について多くのことを教えてくれました。

私は自分の状況に合った解決策を見つけました。皆さんにも役立つかもしれないので、それを共有します。

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

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

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

構成についての詳細を知りたい人がいたら教えてください。


あなたのソリューションは素晴らしい計画のようです!残念ながら、「分類表示を使用すると、ボキャブラリーを特定のビューに関連付けることができます」という部分は表示されません。詳細を教えてください。
ミシエル

分類法表示モジュールをインストールすると、その設定オプションに分類法用語リストの表示方法を制御するオプションが表示されます。ビューはオプションです。ビューを選択してから、そのリストで分類リストアイテムをどのように見せたいかを選択します。これはすべて、あなたが望むようにコンテンツをリストするビューをすでに作成していることを前提としています。保存を押すと、分類リストは設定で選択したビューの出力とまったく同じになります。
blue928

7

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

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

  • ビューはエイリアスに応答しません。これは、Drupalがリクエストで最初に行うことは、すべてのDrupalコンテンツのエイリアスをnode / nid形式標準に変換することだからです。そのため、車両/トラックは、ビューに割り当てられたノード/#に変換されます。ビューはエイリアスからコンテキストを直接取得できません。

必要なものを取得するには、次のいずれかを実行します。

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

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

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


3

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


2

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

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


私は大きなパネルファンではありませんが、それは可能なルートです。また、私はleveltendesign.com/blog/dustin-currie/…でこのチュートリアルに従いました。これは完全に機能しますが、分類ID番号を使用しますが、スペースの代わりにハイフンのような分類名が必要です。このようなトリックをしたことがありますか?
blue928

2
私たちは常にこれを行います。Panelsは、このページをデフォルトで無効にしていますが(デフォルトでは無効になっています)、このエレガントなページとはほとんど言いません。
mpdonadio

詳細を教えてください!:)
クリスハッピー

1

WebbyKatは、ページパスをの/taxonomy/term/%代わりに設定する優れたソリューションを提案しています/categories/%

機能しますが、すべての用語を1つのビューに書き換えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.