スクリーンショット画像フィールドを含む多くのフィールドを持つリソースと呼ばれるコンテンツタイプがあります。アイテムを注文すると、スクリーンショットが下部に表示されます(または設定した重量で表示されます)。しかし、私が欲しいのは、スクリーンショットを他のフィールドのテキストの右側に表示することです(基本的には、css付きのfloat:rightのように)。しかし、私はFirebugを使用して項目のクラスを持ち、float:rightでスタイルを設定しましたが、それでも他のフィールドの隣には表示されませんが、フィールドの下に配置されています...
私は、他のフィールドにラッパーを追加して、そのスクリーンショットフィールドを右に移動できるようにする方法を見つける必要があると思いますが、コンテンツタイプのフィールドにラッパーを追加する方法がわかりません。
これを行う良い方法を知っている人はいますか?
テーマベースのアプローチを使用する場合は、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'] . ': </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;
}
モジュールを追加するのではなく、より効率的に見えるのでそれを行いますが、ユースケースは異なる場合があります。
たぶん フィールドグループモジュール はあなたが探しているものですか?ドキュメントによると、それは多くの種類のラッパーを提供します。
それが役に立てば幸い
あなたはフィールドを使うことができます Formatter Class Module
サイト管理者がクラスを任意のフィールド表示の外部HTMLラッパーに追加できるようにして、CSSおよびJavaScriptがそれらをターゲットにできるようにします。
OR
hook_form_alter を使用して、ラッパーdivをフィールドの接頭辞と接尾辞としてカスタムモジュールで追加できます。例:$form['title']['#prefix'] = '<div class="form-box">';
この問題にはやり過ぎかもしれませんが、私が行うことは、node.tpl.phpをnode--resources.tpl.phpにコピーし、このテンプレートファイルにラッパーを配置することです。
ビューに精通している場合は、フィールドごとに「スタイル設定:フィールドとラベルラッパーのカスタマイズ」(スクリーンショットを参照)オプションがあります。次に、コンテンツタイプごとのパスを「%」(ワイルドカード)で設定します。
PS:ビューには「グローバル:カスタムテキスト」フィールドさえあるので、「置換パターン」で完全に制御できます。