web-dev-qa-db-ja.com

フィールド値をクラスとして使用する方法は? Drupal 7

それが最高のタイトルかわからない...

たとえば、フィールドをコンテンツタイプに追加します。優先。私の好みは、これを分類法参照にすることです(オートコンプリート用語ウィジェット(タグ付け)を使用)。

次に、おそらく前処理を通じて、クラスとして入力された用語をノードに追加します(特にティーザーが重要ではない場合)。

私は世界最大のphpコーダーではなく、これがあまり意味をなさない場合は謝罪します。私は3日間壁に頭をぶつけてきました。どんな助けでも大歓迎です:)

MYTHEME_preprocess_node$variables['classes_array'][]と関係があるようですが、指を当てることができないようです。

1
mediaashley

これが出発点です。

function mytheme_preprocess_node (&$variables)
{
  $node = $variables["node"];

  if (isset($node->field_foo["und"][0]["taxonomy_term"])) {
    foreach ($node->field_foo["und"] as $foo) {
      $term = $foo["taxonomy_term"];
      $variables["classes_array"][] = "term-" . str_replace(" ", "-", strtolower($term->name));
    }
  }
}

これはほとんどテストされておらず、実際の状況は異なる場合があります。 field_fooは分類基準のマシン名で、テーマはフラット化$variables["classes_array"]で使用するためにnode.tpl.php

4
mpdonadio

それほど難しいことではありません。

あなたの問題は、あなたが間違った変数を連鎖させているということです、これはうまくいくはずです:

function MYTHEME_preprocess_node(&$vars) {
  $vars['classes'] .= ' foo bar baz'; // $classes is a text string.
}
0
googletorp