我有6种自定义内容类型和一个按节点类型显示6种类型和组结果的视图。
示例:自定义内容类型是计算机,汽车,食品等。视图按这些类型对节点进行分组:
[exposed filters here]
Computers
- HP P6500
- Leveno HQ3112
Cars
- Ford F150
- GM Silverado
Food
- Apple
- Banana
如何以任意方式对组进行排序?即食品,汽车,电脑。另外,如何为每个组和自定义HTML指定自定义标题?我希望每个组标题旁边都有一张图片,标题上有自定义颜色等。我尝试使用viewfield,views_field_view和viewreference模块完成此操作,并为每种内容类型创建单独的子视图,并使用主视图向他们展示所有内容,但我遇到了暴露的过滤器和分页工作的问题。我可能会以错误的方式解决这个问题。任何建议将不胜感激!
答案 0 :(得分:1)
我正在使用Views 3.x和Drupal 7,所以我不确定这是否完全适用。但我想提及它,因为我遇到了完全相同的问题(问题的排序部分)。
为了以任意方式对组进行排序,我提出的最快的解决方案是使用Global:PHP排序(在Views UI中)。如果食物,汽车和计算机是内容类型,那么这样的东西应该有用......
switch ($row1->type) {
case 'food':
return -1;
break;
case 'computers':
return 1;
break;
case 'cars':
if ($row2->type == 'computers') {
return -1;
}
elseif ($row2->type == 'food') {
return 1;
}
else {
return 0;
}
break;
default:
return 0;
break;
}
我还使用了Views Grouping Row Limit模块,它可以更好地控制组。 使用该模块,您可以通过模板和CSS(组的唯一ID)修改组输出,这将允许您为该组名添加图像。
对于重命名组标题,你可以使用jQuery,但我最终使用了一个视图钩子,hook_views_post_render:
function MODULE_views_post_render(&$view, &$output, &$cache) {
$output = str_replace('<h3>Original Title</h3>', '<h3>' . t('New Title') . '</h3>', $output);
}
希望有所帮助。
答案 1 :(得分:0)
为了完全控制视图输出,我建议您尝试查看modules / views / theme文件夹中的视图模板。不要直接编辑它们,而是将它们复制到主题文件夹并在那里进行编辑。 (你需要清除缓存,以便drupal拿起你的副本)。
要找出你应该编辑的模板,一个非常好的工具是http://drupal.org/project/devel_themer。
对于较小的更改,可以更容易地使用主题挂钩,但如果您想进行大量更改,则可以直接在模板上工作。