web-dev-qa-db-ja.com

コンテンツタイプの選択したフィールドにラッパー<div>を追加する最良の方法

スクリーンショット画像フィールドを含む多くのフィールドを持つリソースと呼ばれるコンテンツタイプがあります。アイテムを注文すると、スクリーンショットが下部に表示されます(または設定した重量で表示されます)。しかし、私が欲しいのは、スクリーンショットを他のフィールドのテキストの右側に表示することです(基本的には、css付きのfloat:rightのように)。しかし、私はFirebugを使用して項目のクラスを持ち、float:rightでスタイルを設定しましたが、それでも他のフィールドの隣には表示されませんが、フィールドの下に配置されています...

私は、他のフィールドにラッパーを追加して、そのスクリーンショットフィールドを右に移動できるようにする方法を見つける必要があると思いますが、コンテンツタイプのフィールドにラッパーを追加する方法がわかりません。

これを行う良い方法を知っている人はいますか?

1
Sage

テーマベースのアプローチを使用する場合は、template.phpのテーマ関数またはテンプレートファイルを提供できます。詳細はここにあります: https://api.drupal.org/api/drupal/modules!field!field.module/function/theme_field/7

上記のリンクに基づいて特定のテーマ関数をテンプレートファイルに入れ、自分のニーズに合わせて変更します。

    function MY_THEME_field_field_SCREENSHOT($variables) {
      $output = '';

      // Render the label, if it's not hidden.
      if (!$variables['label_hidden']) {
        $output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ':&nbsp;</div>';
      }

      // Render the items.
      $output .= '<div class="field-items"' . $variables['content_attributes'] . '>';
      foreach ($variables['items'] as $delta => $item) {
        $classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even');
        $output .= '<div class="' . $classes . '"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
      }
      $output .= '</div>';

      // Render the top-level DIV.
      $output = '<div class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</div>';

      return $output;
    }

モジュールを追加するのではなく、より効率的に見えるのでそれを行いますが、ユースケースは異なる場合があります。

1
bloke_zero

たぶん フィールドグループモジュール はあなたが探しているものですか?ドキュメントによると、それは多くの種類のラッパーを提供します。

それが役に立てば幸い

2
dinopmi

あなたはフィールドを使うことができます Formatter Class Module

サイト管理者がクラスを任意のフィールド表示の外部HTMLラッパーに追加できるようにして、CSSおよびJavaScriptがそれらをターゲットにできるようにします。

OR

hook_form_alter を使用して、ラッパーdivをフィールドの接頭辞と接尾辞としてカスタムモジュールで追加できます。例:$form['title']['#prefix'] = '<div class="form-box">';

0
Anoop Joseph

この問題にはやり過ぎかもしれませんが、私が行うことは、node.tpl.phpをnode--resources.tpl.phpにコピーし、このテンプレートファイルにラッパーを配置することです。

0
Kartagis

ビューに精通している場合は、フィールドごとに「スタイル設定:フィールドとラベルラッパーのカスタマイズ」(スクリーンショットを参照)オプションがあります。次に、コンテンツタイプごとのパスを「%」(ワイルドカード)で設定します。

PS:ビューには「グローバル:カスタムテキスト」フィールドさえあるので、「置換パターン」で完全に制御できます。

enter image description here

0
CocoSkin