如何快速为视图设置主题?

85
我已经使用CCK和View 2模块定义了一个视图。我想快速定义一个特定于此视图的模板。是否有任何关于此的教程或信息?哪些文件需要修改?
以下是我的发现:(已编辑)

事实上,有两种主题视图的方法:"字段"方式和"节点"方式。在"编辑视图"中,您可以选择"行样式:节点"或"行样式:字段"。

  • 使用"节点"方式,您可以创建一个node-contentname.tpl.php,它将为视图中的每个节点调用。您可以通过$field_name[0]['value']访问CCK字段的值。(编辑2)您还可以使用node-view-viewname.tpl.php,这仅适用于从此视图显示的每个节点。
  • 使用"字段"方式,您为要单独进行主题设置的每个字段添加一个views-view-field--viewname--field-name-value.tpl.php。

感谢以前的回复,我使用了以下工具:

  • 在 "基本设置" 块中,使用 'Theme: Information' 查看所有可修改的不同模板。
  • 使用Devel模块的 "Theme developer" 快速找到字段变量名。
  • View 2文档,特别是"使用主题"页面。

1
你需要使用views-view-fields--viewname--field-name-value.tpl.php而不是views-view-field--viewname--field-name-value.tpl.php,因为第一个字段缺少一个"s"。 - Alex Borsody
你要把这个放在哪个文件夹里? - Talon
如果您在视图文档页面上进行搜索,您会发现所有这些信息! - Bhavin Joshi
10个回答

52
实际上有两种主题化视图的方法:"字段"方式和"节点"方式。在"编辑视图"中,您可以选择"行样式:节点"或"行样式:字段"。
  • 使用"节点"方式,您可以创建一个node-contentname.tpl.php文件,它将为视图中的每个节点调用。您可以通过 $field_name[0]['value'] 访问您的CCK字段值。
  • 使用"字段"方式,您需要为要单独设计的每个字段添加一个views-view-field--viewname--field-name-value.tpl.php模板文件。
感谢之前的回复者们,我使用了以下工具:
  • 在"基本设置"块中,使用"主题:信息"来查看可以修改的所有不同模板。
  • Devel 模块的 "Theme developer" 功能,可以快速找到字段变量名称。
  • View 2 文档,特别是"使用主题"页面。

请注意,在第一种方法中,“node”方式中,您创建的模板可能(取决于主题设置)用于节点本身(甚至在节点之外显示)。 - Strae
请注意,此答案中的链接现在已经失效。 - Dewayne

22

在Views 2.0中,查找可创建和修改视图的模板文件的快速方法如下:

  1. 编辑视图
  2. 选择样式(例如页面、块、默认)
  3. 在“基本设置”区块中单击“主题:信息”,以查看可以修改的所有不同模板。

16

Devel模块的“主题开发者”功能非常方便,可以查看Drupal在主题化时正在寻找哪些模板文件。请参见该页面上的截图作为示例。


10

7

一个提示:

你可能会有许多需要相似格式的视图。为每个视图创建模板并复制它们会导致代码分支的噩梦 - 如果你被要求改变整个网站的外观和感觉(意味着改变每个以这种特定方式格式化的视图的显示),你必须返回并单独编辑每个视图。

我有时不使用视图界面选择新模板来处理视图,而是在单个视图文件中插入一些代码分支。例如,在views-view-fields.tpl.php中的一个网站上,我有:

if($view->name == 'articleList' || $view->name == 'frontList' 
|| $view->name == 'archiveList') {
/* field formatting code */
} else {
/* the default code running here */
}

这将仅针对视图系列 = articleList、frontList和archiveList 修改字段,并为其他使用此模板的视图运行通常在此模板中找到的代码。如果客户问:“嘿,你能让那些显示归档和首页列表的页面看起来更像(……)”,那么我只需要打开并编辑这个文件,而不是三个不同的文件。维护变得更加快捷友好。请注意保留HTML标记。

6

对我来说,block-views-myViewName-myBlockId.tpl.php 可以使用。


4

我的快捷选项。

  1. 进入YOUR_MODULE_DIR/views/theme/文件夹中的theme.inc文件。

  2. _views_theme_functions函数中打印$themes变量,或者在函数的最后一行设置断点以查看变量内容。

只需将views_view转换为views-view,将__替换为--,并添加您的模板扩展名即可获得所需的文件名。

例如,如果$themes数组的一个元素是views_view__test_view__block(其中test_view是您的视图名称),则模板文件的名称将是views-view--test_view--block.tpl.php


2

我认为决定使用哪个模板文件来主题化视图的最简单方法是: 1)点击admin/build/views/edit/ViewName -> 基本设置 -> 主题

点击这个链接会列出所有可能的模板文件。被突出显示(加粗的文件名)的文件表示正在使用哪个模板文件来主题化视图的哪个部分。在相关视图模板文件中合并所需更改后,重新扫描..现在您应该能够看到更改后的模板文件被突出显示。


1

如果你想要进行快速的 Drupal 开发并且有许多拖放功能,那么 Display Suite 模块是一个你应该使用的东西:http://drupal.org/project/ds


0

在我看来,有两种方法可以做到:

编程方式:

  1. 进入编辑视图。
  2. 选择页面/块样式。
  3. 进入“基本设置”,点击“主题:信息”以查看您可以修改的所有不同模板。
  4. 添加您想要进行主题化的HTML,并在需要的地方打印视图的变量。

配置更新:使用Display Suite Display Suite为我们提供了一个选项,可以将标签放置在行内或上方,并且甚至可以隐藏它们。还可以向每个视图元素添加自定义类。 高级选项包括:

  • 可导出性
  • 在后端或代码中添加自定义字段
  • 在您的主题中添加自定义布局(仅限D7)
  • 更改标签、添加样式或覆盖字段设置(语义字段)。
  • 与Views和Panels完全集成
  • 通过安装Field Group扩展布局的功能
  • 通过对象缓存(D6)或实体缓存(D7)集成实现最佳性能

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接