最近在修改Drupal网站广告投放的时候遇到需要在Views页面的标题、描述文字下方插入广告代码,以前的做法有两种:一是在Views的Header里面插入广告代码;二是加一个带有广告代码的Block,让其放置在Views页面的标题下。
当Views数量不多,或者在module中容易集中修改的时候,就用上面两种办法之一比较方便,但如果需要手工修改的Views太多就麻烦了,我今天尝试了一下Views的模板文件修改,是可以很方便实现的,下面就来介绍一下。
去年10月我写过一篇《Drupal网站用Views模板来替代Views PHP修改字段内容》,当时是需要使用views-view-field.tpl.php 这个模板来修改Views中某个字段的显示,也非常方便,解决了一个疑难问题。
今天找了Drupal 7 Views 3的官方资料《Views template files》,发现Views的显示模板非常灵活强大,可以修改的模板很多、很细,列出如下:
- sites/all/modules/views/theme/
- theme.inc
- views-view-field.tpl.php
- views-view-summary.tpl.php
- views-exposed-form.tpl.php
- views-view-grid.tpl.php
- views-view-summary-unformatted.tpl.php
- views-more.tpl.php
- views-view-grouping.tpl.php
- views-view-table.tpl.php
- views-ui-display-tab-bucket.tpl.php
- views-view-list.tpl.php
- views-view.tpl.php
- views-ui-display-tab-setting.tpl.php
- views-view-row-comment.tpl.php
- views-view-unformatted.tpl.php
- views-ui-edit-view.tpl.php
- views-view-row-rss.tpl.php
- views-view-fields.tpl.php
- views-view-rss.tpl.php
我们这次只需要修改views-view.tpl.php,代码如下:
<div class="<?php print $classes; ?>">
<?php print render($title_prefix); ?>
<?php if ($title): ?>
<?php print $title; ?>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($header): ?>
<div class="view-header">
<?php print $header; ?>
</div>
<?php endif; ?>
<?php print ad_code(); ?>
<?php if ($exposed): ?>
<div class="view-filters">
<?php print $exposed; ?>
</div>
<?php endif; ?>
<?php if ($attachment_before): ?>
<div class="attachment attachment-before">
<?php print $attachment_before; ?>
</div>
<?php endif; ?>
<?php if ($rows): ?>
<div class="view-content">
<?php print $rows; ?>
</div>
<?php elseif ($empty): ?>
<div class="view-empty">
<?php print $empty; ?>
</div>
<?php endif; ?>
<?php if ($pager): ?>
<?php print $pager; ?>
<?php endif; ?>
<?php if ($attachment_after): ?>
<div class="attachment attachment-after">
<?php print $attachment_after; ?>
</div>
<?php endif; ?>
<?php if ($more): ?>
<?php print $more; ?>
<?php endif; ?>
<?php if ($footer): ?>
<div class="view-footer">
<?php print $footer; ?>
</div>
<?php endif; ?>
<?php if ($feed_icon): ?>
<div class="feed-icon">
<?php print $feed_icon; ?>
</div>
<?php endif; ?>
</div><?php /* class view */ ?>
其中<?php print ad_code(); ?>就是插入广告代码在header之后,例子页面“赞列表”、“书签列表” ,我的博客中可以全部Views都加入(实际测试对Json数据Views的输出无影响),其它站还可以在模板文件中添加一些判断来实现指定的要求。
评论