Answers:
您可以尝试使用field.tpl.php
或主题字段theme_field()
。
例如(使用field.tpl.php
):
field.tpl.php
从“模块/字段/主题” 复制到主题目录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文件可能有多种方法来完成此操作,但这只是一种选择。我建议将类而不是样式添加到DIV中,并在样式表中进行更改,而不要使用内联样式。
该格式化文本模块现已为Drupal 7,并且可以让你做到这一点没有自定义主题的工作。
这是使用该theme_field
方法的一种方法(将其添加到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 { 显示:inline-block; *显示:内联; *缩放:1; } .field-type-taxonomy-term-reference .field-items .field-item:after { 内容:“,”; } .field-type-taxonomy-term-reference .field-items .field-item:last-child:after { 内容:“”; }
content: ", \00a0"
:stackoverflow.com/a/5467676/724176
<?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 } ?>
对于定界符和包装器来说,甚至更容易,您可以使用Taxonomy Formatter模块:http : //drupal.org/project/taxonomy_formatter
来自项目页面的更多详细信息:
这是编写的一个小模块,用于为分类项目提供自定义格式程序。默认格式化程序都输出用div包装的术语。该模块添加了一个新的格式化程序,该格式化程序允许您指定元素类型,包装器类型,两者的类,使用的分隔符以及它们是否链接到术语页面。这提供了更多可定制的布局选项。