【问题标题】:Theming Drupal grouped multiple fields主题化 Drupal 对多个字段进行分组
【发布时间】:2010-11-17 13:45:01
【问题描述】:
我有一个包含 4 个图像的内容类型。
在我看来,它们是分组的(分组多个值)。
我想把每张图片放在一个单独的里,比如:
<ul class="list">
<li><img src="/images/image1.jpg"/></li>
<li><img src="/images/image2.jpg"/></li>
<li><img src="/images/image3.jpg"/></li>
<li><img src="/images/image4.jpg"/></li>
</ul>
我如何实现这一目标?我假设我需要使用 foreach 循环为字段模板文件设置主题,但我不太清楚我应该做什么。
谢谢:)
【问题讨论】:
标签:
drupal
drupal-6
drupal-views
【解决方案1】:
Ran 发布的链接似乎是如何查找视图模板的一个很好的演练。主题化视图与主题化其他任何东西没有太大区别,唯一棘手的部分是确定要覆盖的模板以及调用它的内容。此信息可以在视图 UI 中的主题信息下找到。
无论如何,一旦您开始(记得清除缓存以使 Drupal 使用您的新模板),可能很难弄清楚您可以使用哪些变量等以按照您想要的方式自定义视图。随着时间的推移,这会变得更容易,但我通常使用的策略是开发模块和dpm()。这个漂亮的为您打印变量,并且可以更容易地查看您需要更改什么/如何更改以获得您想要的标记。还要记住在视图模板中准备好 cmets,它有很好的文档说明它为您提供了哪些变量。
【解决方案3】:
各位,感谢你们的帮助,你们把我推向了正确的方向。
我通过在我的 template.php 中覆盖一个名为 theme_content_view_multiple_field 的函数来解决这个问题
function MYTHEME_content_view_multiple_field($items, $field, $values) {
$output = '';
$i = 0;
foreach ($items as $item) {
if (!empty($item) || $item == '0') {
$output .= '<li class="test field-item field-item-'. $i .'">'. $item .'</li>';
$i++;
}
}
return $output;
}
最后我会编辑它,让它只影响这个特定的字段(例如http://drupal.org/node/556232)
干杯:)
【解决方案4】:
谢谢汤姆!这对 Drupal 6 来说就像一个魅力。这里有几行额外的行,它们保留默认标记 (DIV) 并为特定字段更改为 LI,其中 FIELDNAME 是您的 CCK 字段的机器名称。
function MYTHEMENAME_content_view_multiple_field($items, $field, $values)
{
$tag = 'div';
if($field['field_name']=='FIELDNAME')
{
$tag = 'li';
}
$i = 0;
foreach ($items as $item)
{
if(!empty($item) || $item == '0')
{
$output .= '<'.$tag.' class="item_'. $i .'">'. $item .'</'.$tag.'>';
$i++;
}
}
return $output;
}