web-dev-qa-db-ja.com

条件付きでカスタムビューモードのスタイルを変更する

ds モジュールで作成したカスタム表示モードがあります。この表示モードにはノード記事が一覧表示され、各記事は次のように表示されます。

  • 題名
  • 解説
  • url
  • term参照フィールド
  • 他のいくつかのフィールド...

用語参照フィールドに応じていくつかのスタイルを条件付きで追加したい例:最初の記事には値「1」の用語参照があり、この記事の背景を「赤」に変更します。2番目の記事には用語参照があります値「2」、背景を「緑」に変更して......

EDIT:

これは、いくつかのフィールドの表示を管理する方法のイメージです。 enter image description here

私の興味は、フラグフィールドです。これは、(title、color(16進値)、description ...)という分類フィールド参照です。このフラグフィールドは、フォーマッタには「編集可能」( editablefieds モジュールで実行)があるため、編集者はこのフィールドの値を編集できます。

フラグ魔女の隣に別のフィールドを追加したいのは、現在のフラグ分類用語のcolorフィールドであり、たとえば単純なdiv一部のwidthheightを使用し、backgroun-color、このカラーフィールド

以前の投稿よりも明確であることを願っています:)

前もって感謝します。

1
Boussetta moez

これは 特定のビューモードにテンプレートを提供する方法? によく似ています。ここで、カスタムphpコードを追加して、そのビューモードで使用される変数を追加したり、使用されているテンプレートに単純なif/else/in_arrayを追加したりできます(これはカスタムテンプレートに限定されません。テーマのデフォルトのnode.tpl.phpをいつでもオーバーライドできます。

更新:用語参照フィールドに応じてcssクラスのみを追加します。

// can also be THEME_
function MYMODULE_preprocess_node(&$vars) {
  if ($vars['view_mode'] == 'myviewmode') {
    if(isset($vars['node']) && isset($vars['node']->field_my_term_reference)) {
      // class to add a general has-term-reference-class
      $vars['classes'][] = 'has-term-reference';
      // add a specific term-reference-class
      foreach($vars['node']->field_my_term_reference as $tid) {
        // class based on term id
        $vars['classes'][] = 'term-id-' . $tid;
        // class based on term name
        $term = taxonomy_term_load($tid);
        $vars['classes'][] = 'term-name-' . $term->name;
      }
    }
  }
}
1
Andre Baumeier

私はおそらく自分でjavascriptでこれを行うでしょう。ただし、ビューのみで実行する場合は、次のようにできます。

すべての表示フィールドを複製して、それぞれが2つになるようにします。

これらのフィールドのセットに移動して、カスタムCSSタグを追加します。このタグのCSSをテーマに記述して、1つの条件で必要なことを実行します。

2番目のフィールドセットに移動して同じことを行いますが、別の条件用に記述されたCSSで新しいCSSタグを使用します。

次に、各セットの各フィールドで、参照フィールドの値に基づいて、これらのフィールドの表示に条件を設定します。フィールドは、条件が満たされている場合にのみ表示されます。これはうまくスケーリングしません。これを3つ以上の条件でスケーリングする場合は、コメントしてください。N条件の別の解決策を考え出すことができます。 (ソリューションはそれほど単純ではありません。)

0
Brandon Bearden