为视图块创建模板文件


19

关于自定义块的主题有很多,但是由视图创建的块又如何呢?

我的视图块具有id:block-views-posts-listing-block,

我尝试了多种命名模板文件的方法,例如:block--block--views-posts-listing-block.tpl.php,但是我找不到正确的文件名。


1
主题开发者模块可以告诉你模板文件的名称。
奥斯瓦尔德

谢谢,但我发现D7的Themer有时无法正常工作。
Codium

Answers:


18

编辑您的视图。在“阻止”详细信息的“高级”设置下,点击"Theme: Information"。将显示模板文件的选项列表。

例如,如果您的图块的名称为“帖子列表”,请查看“主题信息”选项列出的可能名称:

* Display output: views-view.tpl.php, views-view--posts-listing.tpl.php, views-view--default.tpl.php, views-view--block.tpl.php, views-view--posts-listing--block.tpl.php
* Style output: views-view-unformatted.tpl.php, views-view-unformatted--posts-listing.tpl.php, views-view-unformatted--default.tpl.php, views-view-unformatted--block.tpl.php, views-view-unformatted--posts-listing--block.tpl.php
* Row style output: views-view-fields.tpl.php, views-view-fields--posts-listing.tpl.php, views-view-fields--default.tpl.php, views-view-fields--block.tpl.php, views-view-fields--posts-listing--block.tpl.php
* Field Content: Title (ID: title): views-view-field.tpl.php, views-view-field--title.tpl.php, views-view-field--posts-listing.tpl.php, views-view-field--posts-listing--title.tpl.php, views-view-field--block.tpl.php, views-view-field--block--title.tpl.php, views-view-field--posts-listing--block.tpl.php, views-view-field--posts-listing--block--title.tpl.php 

例如:您的图块具有发布列表的名称,并且具有未格式化的样式,然后“主题信息”建议名称views-view-unformatted--posts-listing--block.tpl.php(这只是几个名称之一)。您可以将原始views-view-unformatted.tpl.php模板文件(位于/ modules / views / theme中)复制到当前主题目录,然后使用建议的名称将该文件重命名:views-view-unformatted--posts-listing--block.tpl.php。然后在模板文件中进行更改。如果此模板不允许进行所需的更改,请根据需要查找其他模板。

最后,如果添加新模板,请重新扫描模板文件列表:

重要!添加,删除或重命名模板文件时,有必要通过使其重新扫描系统上的文件来使Drupal知道更改。通过单击“重新扫描模板文件”按钮,您可以清除Drupal的主题注册表,从而触发此重新扫描过程。突出显示的模板(在“重新扫描模板文件”按钮上方的模板列表中)将反映系统的新状态。

Oswald建议的主题开发人员模块http://drupal.org/project/devel_themer可能对检测可能的模板以根据您的标准更改特定元素很有用。我不建议在生产环境中启用此模块(就我而言,即使我已在测试环境中禁用了该模块,因为似乎与视图存在冲突,但是在必要时非常有用)


不,它对主题视图阻止输出没有帮助。它仅用于主题视图内容,但是我想为主题视图包装主题视图
Codium

您好,请再次查看“视图”->“阻止”设置中“主题信息”指示的模板列表,其中有几个--block以他的名字结尾的模板。记住reescan模板,并记住将模板放在当前主题的目录中(从modules / views / theme复制所选模板)。模板必须具有“主题信息”列表建议的名称。有用。
cigotete 2011年

@drupality,我添加了一个带有步骤的示例来查看该过程,请在答案的“ 例如 ”段落中进行查看。
cigotete 2011年

谢谢,但是我也不能用它删除默认的div class =“ content”包装器。我只能更改视图创建的html
Codium

2
@ moon.watcher我认为您误会了。以“块”结尾的模板文件不会影响块本身的主题。它使该模板文件特定于视图正在输出的块(因为视图可以从同一视图输出多个块)。视图中的主题内容将输出到块主题引擎,并包装在block.tpl.php提供的标记中。Drupality试图做的(以及我自己的)改变了块本身的主题。

18

对于那些在D7中寻求答案的用户,根据Theme Developer(又名devel_themer),您可以使用以下约定为视图的块创建tpl覆盖:

块- views-- {视图的不同machine_name} -嵌段

因此,在示例中,您将获得

块-视图 -列表后 -block.tpl.php

没有空格(我无法对其进行适当的编辑以使其全部内联。


我确认noTxt是正确的,请转到块部分,然后编辑该块,URL应使用下划线my_view_name-block向您显示视图的块名称。更换底线,所以我的视图名称,并使用此格式:“块-观点-我-视图-名称= block.tpl.php”
Nevos

2
是的,这是更正确的答案,因此:block--views--VIEWNAME-MACHINENAMEOFDISPLAY.tpl.php注意机器名称前的单破折号!机器名称=默认情况下,它的名称为block,block-1等,但是您可以在Views UI中重命名它。
Nikit

7

在半个小时的更改tpl名称后,这是我的最终结论:

block--views--[view-name]-[display-name].tpl.php

可以像noTxt所说的那样找到[view-name]-[display-name]部分,或者以'-'表示视图的ID名称和视图显示的ID名称,结尾处的-block不正确。


5

在Drupal 8中

在此处输入图片说明

字段模板为:

views-view-fields-[view-name]-block-1.html.twig


这个问题是关于D7的。为什么在您的答案中使用Drupal 8
Pierre.Vriens

@ Pierre.Vriens既然问题在视图中很流行(而不是在模块中),我想我应该在这里添加D8版本的答案。
没有Sssweat

现在,这是一个有趣的主意...那么对于这些+ 21K问题也要怎么做?
Pierre.Vriens

@ Pierre.Vriens其中大多数都不受欢迎。
没有Sssweat

1
添加了8个标签,不错;)
Codium

1

block--views--[view-name]-[display-name].tpl.php应该更改为 block--views--[view-name]-[machinename].tpl.php

您可以在“视图高级”部分找到机器名称,将其写为其他名称。


1

除非您的视图名称+显示名称长于一定数量的字符,否则上述文件名模式将起作用!我对此感到困惑,无法找到为什么结尾为...的模板文件block.tpl.php正在工作,而以下显示... block-1.tpl.php却无法工作。

事实证明,如果名称太长,则Views用MD5哈希替换机器名称。如果要确定应该使用的模板名称,请添加$conf['theme_debug'] = TRUE;settings.php文件,然后查看页面源代码。如果您发现类似block--views--d131dd02c5e6eec4....的话,则最好缩短视图的机器名称(如果您可以做到的话……这不是人类可读的名称)。否则,您需要使用具有该愚蠢名称的模板文件。

也可以看看

Views Block的计算机名称正在“散列”(?)

https://www.drupal.org/node/346602


0

检查此页面https://www.drupal.org/node/1089656,以及有关视图使用的下划线的信息:

还有一个关于Views的示例,如果您有一个由视图名称为“ front_news”的视图创建并显示ID为“ block_1”的块,则主题挂钩建议为:block--views--front-news-block-1。 tpl.php(注意,当显示ID或视图名称中带有下划线时,必须将其转换为单个破折号)


0

对于面板窗格中的块,noTxt和其他提供的解决方案不起作用。语法将是(没有下划线!):

panels-pane-block--views-[view-name]-[display-machine-name].tpl.php

感谢user3074436提供了$ conf ['theme_debug']设置,以便找出这种特殊的主题覆盖情况


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.