跳转到主要内容
qiyue 提交于 13 April 2015

看到群里有人再问有关views模板覆写的问题,那我就分享一个我对views模板覆写的理解,希望能达到抛砖引玉的效果。

比如我打算实现这样的一个区块,如下图:

a.png

1.首先创建一个Views的block,例如我命名为latest_news.在格式里选择“无格式化的列表(unformatted list)”,可以对HTML更好的定制输出。

b.png

并点击“格式”右侧的“设置”进行如下图的设置,取消勾选后,应用保存,这样可以更好的去除views模板添加的HTML元素。

c.png

点击“字段”右侧的“设置”进行如下图的设置,取消勾选后,应用保存,这样可以更好的去除views模板添加的HTML元素。

d.png

最后对显示的每个字段进行如下设置:

e.png

上面的设置完成后,保存views。

2.下面我们去查看一下当前views应用的默认主题文件,点击展开右侧的“高级(advanced)”,在下面有一个“主题信息(theme)”,点击打开。我们可以看到这个views应用的默认主题文件:

显示输出:views-view.tpl.php

样式输出views-view-unformatted.tpl.php

行样式输出:views-view-fields.tpl.php

可以看到每个输出都有多个可选的主题文件,越后面的优先级越高。

例如对我创建的这个views进行模板覆写,我们可以在主题中选择创建如下的模板文件:

显示输出:views-view--latest-news--block.tpl.php

样式输出views-view-unformatted--latest-news--block.tpl.php

行样式输出:views-view-fields--latest-news--block.tpl.php

有模板文件的命名我们可以看出创建的模板文件只对当前的views产生影响。

3.下面我们开始在主题文件夹下创建上面的三个views模板文件。首先我们从views模块文件里面的 views/theme文件夹下面的

views-view.tpl.phpviews-view-unformatted.tpl.phpviews-view-fields.tpl.php 复制到我们的主题的templates文件夹下。

然后分别重命名:

views-view.tpl.php --> views-view--latest-news--block.tpl.php

views-view-unformatted.tpl.php  --> views-view-unformatted--latest-news--block.tpl.php

views-view-fields.tpl.php--> views-view-fields--latest-news--block.tpl.php

重命名完成后,我们回到views的主题信息那,重新检索主题文件,可以发现views已经可以读取到我们覆写的views主题文件,如下图:

f.png

4.修改views-view--latest-news--block.tpl.php文件里的代码(55行),如下图:


g.png

5. 修改views-view-unformatted--latest-news--block.tpl.php文件的里面的代码,如下图:

h.png

6.我们定制输出字段主题文件views-view-fields--latest-news--block.tpl.php

i.png

7.在完成以上的工作后,我们就可以控制views的HTML输出,实现完全的自定义定制输出,如下图的这个views在网页显示后的源码:

j.png

 

Drupal 版本