Drupal 7。
私のnode.tpl.phpで、分類用語のリストを出力したい(分類は「チャネル」と呼ばれる)。私が使用する場合:
<?php print render($content['field_channel']); ?>
確かに機能しますが、インライン化するためにできる最善の方法は、CSSを使用して左にフロートさせることです。カンマで区切ってください。何か案は?
THX。
_field.tpl.php
_ または theme_field()
を使用してフィールドにテーマを設定してみてください。
例として(_field.tpl.php
_を使用):
field.tpl.php
_を "modules/field/theme"からテーマディレクトリにコピーしますfield--field-channel.tpl.php
_に変更しますこれが機能するための簡単な例として、_field--field-channel.tpl.php
_は次のようになります。
_<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php if (!$label_hidden) : ?>
<div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>: </div>
<?php endif; ?>
<div class="field-items"<?php print $content_attributes; ?>>
<?php foreach ($items as $delta => $item) : ?>
<div style="display:inline;" class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>>
<?php
print render($item);
// Add comma if not last item
if ($delta < (count($items) - 1)) {
print ',';
}
?>
</div>
<?php endforeach; ?>
</div>
</div>
_
.tplファイルを使用してこれを実行する方法はおそらく複数ありますが、これは1つのオプションにすぎません。インラインスタイルを使用する代わりに、スタイルではなくクラスをDIVに追加し、スタイルシートに変更を加えることをお勧めします。
Text Formatter モジュールがDrupal 7で使用できるようになり、カスタムテーマを使用せずにこれを実行できます。
theme_field
アプローチを使用する1つの方法を次に示します(template.php
ファイルに追加します):
/**
* Implements theme_field()
*
* Make field items a comma separated unordered list
*/
function THEMENAME_field__NAME_OF_FIELD__NAME_OF_CONTENT_TYPE($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 as a comma separated inline list
$output .= '<ul class="field-items"' . $variables['content_attributes'] . '>';
for ($i=0; $i < count($variables['items']); $i++) {
$output .= '<li>'. drupal_render($variables['items'][$i]);
$output .= ($i == count($variables['items'])-1) ? '</li>' : ', </li>';
}
$output .= '</ul>';
return $output;
}
CSSでこれを簡単に行うことができます:
。field-type-taxonomy-term-reference .field-items .field-item { display:inline-block; * display:inline; *ズーム:1; } 。field-type-taxonomy-term-reference .field-items .field-item:after { content: "、"; } 。field-type-taxonomy-term-reference .field-items .field-item:last-child:after { content: ""; }
<?php
if ($node->taxonomy) {
foreach($node->taxonomy as $term) {
if ($term->vid == 3) { // the id of the vocabulary
$my_terms[] = l(
t($term->name),
'taxonomy/term/' . $term->tid
);
}
}
}
if ($my_terms) { ?>
<div class="clear-block">
<div class="terms">
<?php print implode(", ", $my_terms); ?>
</div>
</div>
<?php } ?>
区切り文字とラッパーの場合はさらに簡単で、分類法フォーマッターモジュールを使用します。 http://drupal.org/project/taxonomy_formatter
プロジェクトページの詳細:
これは、分類項目のカスタムフォーマッターを提供するために記述された小さなモジュールです。デフォルトのフォーマッタはどちらも、divでラップされた用語を出力します。このモジュールは、要素タイプ、ラッパータイプ、両方のクラス、使用するセパレーター、および用語ページにリンクするかどうかを指定できる新しいフォーマッターを追加します。これにより、さらにカスタマイズ可能なレイアウトオプションが提供されます。