web-dev-qa-db-ja.com

ノードに用語イメージを追加する方法

ノードと、用語を選択するためのいくつかの語彙があります。特定の語彙の用語の画像をノードに表示したい(ノードが特定の語彙の用語に関連付けられている場合、その用語フィールドの画像が表示されます)。これに対する最良の(最も「Drupal」)アプローチは何でしょうか? :)

3
Łukasz Zaroda

これを行う1つの方法-コンテンツタイプのテーマテンプレートファイルを作成/編集したくない場合は、ビューを介して対応するタグ画像を表示します。

これを行う手順は次のとおりです。

  1. 私はすでにあなたの語彙が適切に設定されていて、それに画像フィールドが追加されていて(admin/structure/taxonomy/[YOUR VOCAB ID]/fieldsで実行できる)、いくつかの用語に対応する画像が入力されていると想定しています。
  2. ブロック表示で新しいビューを作成し、関連するコンテンツタイプにのみ適用されるように設定します enter image description here
  3. 用語関係をビューに追加すると、ノードフィールドだけでなく、語彙/用語フィールドにもアクセスできます。 enter image description hereenter image description here
  4. それが完了したら、各ノードについてプルするフィールドに移動します。デフォルトで追加されている「タイトル」フィールドを削除して、用語に関連付けられている画像を表すフィールドのみを追加します。これは、フィールドリストの「分類用語:....」セクションのどこかにあるはずです。
  5. 上記で作成した関係を使用するように設定してください enter image description here
  6. 最後に、このブロックに、表示されているノードに基づいて、表示する画像の手掛かりを取得させたいので、コンテキストフィルターを追加しましょう。 [詳細設定]セクション-> [コンテキストフィルター]で、[コンテンツ:Nid]を追加し、URLにフィルターが存在しない場合に表示されるページからNIDを取得するように設定してください enter image description here
  7. すべて完了!関連するページの1つに移動してテストします。もちろん、デフォルトではどこにも配置されていないため、最初にコンテキストまたはブロック管理ページ(admin/structure/block)を介してブロックを有効にする必要があります。 2番目のサイドバーの実際のコンテンツセクションのブロックを表示します。

これが役立つかどうか教えてください!!

================編集=====================ソリューション2(リクエストに応じて)

テンプレートファイルを使用してこれを行うには、先に進み、通常のnode.tlp.phpファイルをコピーして、node-[YOUR CONTENT TYPE MACHINE NAME] .tpl.phpという名前に変更します。

次に、コンテンツの真下または真上に、次のコードを挿入します。

$term=taxonomy_term_load($node->field_thats_term_reference['und'][0]['tid']);   
$image_field=field_view_field('taxonomy_term', $term,'field_main_image');
print render($image_field);

「field_thats_term_reference」を用語参照フィールドの名前に置き換え、「field_main_image」を画像フィールド名に置き換えてください。

これで印刷されます。これはどこにでも配置できます。印刷結果が実際にどのように見えるかをカスタマイズしたい場合は、変数を設定したら(dvelモジュールがインストールされている必要があります)dpm($ image_field)を実行するだけで、そのフィールドのすべての部分と取得方法を確認できますrender()がすべてを出力するデフォルトの方法とは対照的に、それらを個別に出力したい場合は、それらに対して。その部分はこの質問の範囲を超えていると思いますが、それであなたは始められるはずです!

14