Drupal 主题化视图显示中的一行

Posted

技术标签:

【中文标题】Drupal 主题化视图显示中的一行【英文标题】:Drupal theming a row in a view's display 【发布时间】:2009-10-30 16:01:01 【问题描述】:

我正在尝试为视图中的单个“显示”设置主题。我想要实现的是对行的呈现方式进行一些控制(例如,打印行中的字段,并可能在其间添加一些文本。以及一些用于样式目的的 div)。我已经找了几天来编辑模板。我什至使用了主题开发者和视图的主题信息,但没有运气。全部

我的视图名称是日历,有一堆显示。谁能告诉我应该怎么做才能自定义此特定显示中的行? drupal 甚至提供这种灵活性吗?

我在日历视图中显示的名称和标题是:

Name: List view
Title: List

这是行样式的主题信息:

Row style output: views-view-fields.tpl.php, views-view-fields--calendar.tpl.php, views-view-fields--page.tpl.php, views-view-fields--calendar--page.tpl.php, views-view-fields--calendar.tpl.php, views-view-fields--page-1.tpl.php, views-view-fields--calendar--page-1.tpl.php

谁能告诉我怎么做


编辑:(OP 在答案中发布的一些附加信息)

我正在使用 Drupal 6。我不确定 page-1 在这里表示什么以下是我在此视图中的显示列表:

Defaults 
Calendar page 
Calendar block 
Month view 
Week view 
Block view 
Upcoming 
List view 
Ongoing Block Feed 

如您所见,它们都没有字符串“page-1”。我编辑了views-view-list.tpl.php,这是为“样式输出”列出的文件之一。我可以访问的唯一变量是行,它是一个包含所有单独呈现的“行”的数组。就像我之前提到的,这些行是在其他地方生成的,并且已经包含渲染的字段。如何自定义这些行?

【问题讨论】:

【参考方案1】:

如果您使用的是 Drupal 6,则不必向 template.php 添加任何内容。

您拥有的可能的主题文件列表按从最低到最具体的顺序排列。例如,第一个,views-view-fields.tpl.php,将应用于您网站上所有视图的所有字段。最后一个,views-view-fields--calendar--page-1.tpl.php,只适用于“日历”视图的“第1页”显示,所以我猜这就是你想要的覆盖。

当您在视图中单击主题信息时,所提供的显示(“第 1 页”或其他)适用于您当前所在的显示。因此,如果您想在某个显示中对字段进行主题化(例如“日历”视图的“块状”显示),那么您可以单击左侧垂直菜单中的“块状”显示,然后单击主题该显示器的信息。

因此,一旦确定要使用哪个,请在主题目录中使用该名称创建一个新文件,然后复制当前主题文件的内容(单击主题信息中的主题文件部分的名称page) 到您的新主题文件中,然后进行编辑。请记住,如果您覆盖了主题文件,则必须在主题信息页面中单击“重新扫描模板文件”才能使新文件生效。

希望有帮助!

【讨论】:

不是说“尝试阅读 ui 正在显示的提示视图”。抱歉,我不想听起来刺耳,但这是不言自明的。 同意。不过,重申没有错。无论如何,Views 文档是出了名的迟钝。【参考方案2】:

显示器仅在表面上具有自定义名称,但在内部它们由 id 引用。 “page_1”将是您第一次显示“page”类型(块将变为“block_[id]”,供稿将变为“feed_[id]”等等)。

因此,如果您按顺序发布显示,“page_1”将是“日历”显示。您可以通过查看视图配置页面右侧显示列表中显示条目下的链接来检查这一点。他们将拥有名为“#views-tab-page_1”、“#views-tab-block_1”等的锚点。

至于覆盖模板,请注意,如果您添加一个新的 *.tpl.php 文件,您需要 reset the theme registry 才能被 Drupal“拾取”。

【讨论】:

【参考方案3】:

您是否在 template.php 文件中添加了所需的自定义代码?我知道在 drupal 5 中您需要将代码放入 3 个文件中:

模板.php 视图-视图-字段--[名称].tpl.php 视图-视图-字段--[名称].css

您也可以尝试: http://drupal.org/node/128741

【讨论】:

【参考方案4】:

回答第二个问题:样式输出不是您要查找的模板。行样式是编辑字段在行内排列方式的模板。如果要编辑特定字段如何输出其内容,则应编辑特定字段模板。

【讨论】:

以上是关于Drupal 主题化视图显示中的一行的主要内容,如果未能解决你的问题,请参考以下文章

如何主题化视图中暴露的过滤器项目 - drupal 6

Drupal主题化RSS提要视图

用于 Drupal 视图主题的 PHP

如何在不同的 Drupal 主题上显示不同的视图

PHP Drupal主题列表视图显示类似菜单

Drupal主题列表视图显示类似菜单