0

我有 6 种自定义内容类型和一个按节点类型显示 6 种类型和分组结果的视图。

示例:自定义内容类型是计算机、汽车、食品等。视图按这些类型对节点进行分组:

[exposed filters here]

Computers
 - HP P6500
 - Leveno HQ3112

Cars
 - Ford F150
 - GM Silverado

Food
 - Apple
 - Banana

如何以任意方式对组进行排序?即食品、汽车、电脑。另外,如何为每个组和自定义 HTML 指定自定义标题?我想在每个组标题旁边放一张图片,标题上的自定义颜色等。我尝试使用 viewfield、views_field_view 和 viewreference 模块完成此操作,并为每种内容类型制作单独的子视图,以及一个主视图来显示它们,但我遇到了暴露的过滤器和分页工作的问题。我可能会以错误的方式解决这个问题。我们欢迎所有的建议!

4

2 回答 2

1

我在 Drupal 7 中使用 Views 3.x,所以我不确定这是否完全适用。但是我想提一下,因为我遇到了完全相同的问题(对您的问题进行排序)。

为了以任意方式对组进行排序,我想出的最快解决方案是使用 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);
}

希望有帮助。

于 2013-05-09T21:50:38.610 回答
0

为了完全控制您的视图输出,我建议您尝试查看 modules/views/theme 文件夹中的视图模板。不要直接编辑这些,而是​​将它们复制到您的主题文件夹并在那里进行编辑。(您需要清除缓存,以便 drupal 获取您的副本)。

要找出您应该编辑哪个模板,一个非常好的工具是http://drupal.org/project/devel_themer

对于较小的更改,使用主题挂钩可能更容易,但如果您想做很多更改,直接在模板上工作可能是明智的。

于 2012-11-15T08:23:57.517 回答