最近在修改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的輸出無影響),其它站還可以在模闆文件中添加一些判斷來實現指定的要求。
评论