web-dev-qa-db-ja.com

drupal 7?

新しいノードを追加して用語をリストに表示するときに、分類用語のどのフィールドを表示するかを設定できないのは少し気がかりです。

ユーザーがいずれかを選択する必要がある用語の束があります。ただし、用語のタイトルを表示するだけでは不十分な場合があるため、新しいノードを追加するときに用語の説明も表示したいと思います。

どうやってそれができる?

6
Alex

単一ノードのページに名前の代わりに分類法の説明を表示するには、これをテーマのtemplate.phpファイルで使用できます。

function mytheme_preprocess_field(&$variables) {
  if ($variables['element']['#field_name'] == 'field_taxonomyfieldname') {
    if (isset($variables['element']['#items'][0]['taxonomy_term']->description)) {
      $variables['items'][0]['#markup'] = $variables['element']['#items'][0]['taxonomy_term']->description;
    }
  }
}

Mytheme、field_taxonomyfieldnameを独自のテーマとフィールド名に変更し、テスト前にDrupalキャッシュをクリアしてください。

2
Vali Hutchison

次の解決策は、要件をわずかに変更します。用語選択ウィジェットの一部として用語説明フィールドが表示されるのではなく、ノード/追加ページに表示されるようにビューブロックセットを作成し、各用語とその説明フィールドの表リストを提供します。

これを行うには、タイプ「分類」の新しいビューを作成します。これには、分類用語と分類用語定義の2つのフィールドがあります。

用語と説明を保持するブロックをユーザーに警告する、term_referenceフィールドに関連付けられたヘルプテキストを配置できます。

ページを混乱させない方法で説明フィールドを含めるように選択ウィジェットを変更することは非常に困難です。

2
Shai

用語参照ツリーモジュール を使用できます。これにより、分類用語のテーマ関数が提供されます。 7つのサブテーマを作成し、template.phpのテーマ関数をオーバーライドします。以下の例では、.- psyクラスをツールチップに変換する tipsy モジュールも使用しているため、ノード追加フォームのツールチップをクリックまたはホバーすると分類用語の説明が表示されますが、もちろん、$ descriptionを出力することもできます。

/**
 * This function prints a single item in the tree, followed by that item's children
 * (which may be another checkbox_tree_level).
 */
function seven_subtheme_checkbox_tree_item($variables) {
    $element = $variables['element'];
    $children = element_children($element);
    $output = "";

    $sm = $element['#level_start_minimized'] ? ' term-reference-tree-collapsed' : '';

    if (is_array($children) && count($children) > 1) {
      $output .= "<div class='term-reference-tree-button$sm'></div>";
    }
    elseif (!$element['#leaves_only']) {
      $output .= "<div class='no-term-reference-tree-button'></div>";
    }

    foreach ($children as $child) {
      // $child is the tid
      $term = taxonomy_term_load($child);
      $description = trim(strip_tags($term->description));
      if (!empty($description)) {
        $tooltip = l('ⓘ', '#', array(
          'attributes' => array(
            'class' => array('tipsy'),
            'title' => $description,
          )
        ));
      }
      $output .= drupal_render($element[$child]) . $tooltip;
    }

    return $output;
}
0
Hans Rossel