仅使用一个结果隐藏视图?

时间:2011-02-08 06:59:52

标签: drupal drupal-6 drupal-views

我正在使用Drupal 6和Views来构建一系列图像库。 One View创建一个完整大小的幻灯片,另一个View在主图像下创建一个缩略图列表。这样可以正常工作,但是当图库只有一个图像时,缩略图不是必需的,看起来很奇怪。

有没有办法隐藏只包含一个结果的视图?

3 个答案:

答案 0 :(得分:2)

我没有意识到要完成您正在寻找的视图设置。但是,有两种方法可以实现这一点...... jQuery或一些自定义PHP。

的jQuery

视图结果中的每一行都会分配一个views-row-N类。因此,您可以使用jQuery脚本来查看是否有一个div(或每行使用的任何其他容器元素),其上有views-row-2类。如果没有,那么你只有一个结果。所以现在你可以使用jQuery来隐藏具有view-view-name类的最外层div(或其他容器元素,但我认为它总是一个div)。因此,如果视图被称为“拇指”,那么它将是view-thumbs。该视图在技术上仍然存在,但您至少可以将其隐藏在用户之外,这似乎是您真正的目标。


自定义PHP

自定义PHP的目标是确定视图中有多少结果,如果它不止一个,则在页面上显示它。有几种方法可以做到这一点,但我认为最直接的方法是覆盖views-view.tpl.php主题模板文件。如果您转到“编辑视图”页面,则每个显示的Theme: Information窗格中都会显示Basic Settings。如果单击它,它将为您提供该视图的主题模板列表,以及候选名称(Drupal在主题查看结果时将查找的文件)。您需要通过复制文件并在列表中为其中一个名称覆盖其他文件(不替换,只是覆盖)来覆盖views-view.tpl.php文件。此文件将用于显示整个视图结果。如果您打开文件,顶部会有一条注释,说明可用的变量。其中之一是$rows变量。您可以使用此变量来确定是否有多行。如果没有,那么不要打印任何东西。如果有,那么继续让默认主题发生。所以你需要做的就是将所有内容包装在if / else块中的默认模板文件中...如果有2行或更多行,那么就做那里已经存在的所有内容,否则什么都不做。


作为旁注......我总是发现FireFox和FireBug的组合,Devel moduleTheme Developer module在处理这样的事情时是一个非常有用的帮助。

答案 1 :(得分:0)

我已经在我的主题中添加了一个自定义views-view.tpl.php - 我需要计算的原因有几个。

我将第一行更改为:

<div class="<?php print $classes; ?> result-count-<?php print count($view->result) ?>">

这有助于在您真正需要时设置样式。

答案 2 :(得分:-1)

CSS

UnformattedHTML list视图样式使用CSS类标记查询的第一个和最后一个结果。如果你可以使用其中一个,那么它就像:

.view-id-foobar .views-row-first.views-row-last {
  display: none;
}