覆写views显示模版

论坛: 

Views Templates

制作Views Templates(Views 模板),用来定制内容的输出。Views有很好的模板支持机制,在你没有为特定的View创建模板时,View将调用主题默认的模板,但是当你为View 创建的特定的模板时,这个View将使用你创建的模板来生成View的内容。

Headline Template
<div class="headline-summary">
<div class="imageframe"><?php print $fields['field_image_fid']->content; ?></div>
<h2>Headline</h2>
<h3><?php print $fields['title']->content; ?></h3>
<div class="teaser">
<?php print $fields['teaser']->content; ?>
</div>
</div>

将上面的这一段代码复制到名为views-view-fields--Headline--block.tpl.php的文件中,再将这个文件复制到你的主题文件夹里。这个文件会被Views模块自动调用并分配到Headline View的输出过程中。

Features Template
<div class="featured-summary">
<div class="imageframe"><?php print $fields['field_image_fid']->content; ?></div>
<h4><?php print $fields['title']->content; ?></h4>
<div class="teaser">
<?php print $fields['teaser']->content; ?>
</div>
</div>

将上面的这一段代码复制到名为views-view-fields--Features--block.tpl.php的模板文件中,再将此文件复制到主题文件夹,现在你已经有了完全由你控制输出的Headline和Features区块。

利用foreach 来实现覆写views的tpl文件来快速实现取得所需的标题、图片等字段

(注意,在后台的views预览里有数据,不然不能覆写)

1、先建一个views的区块,然后 机读名字取名为bannerhome,这样我就可以去覆写这个文件了。这个名字放在sites/all/themes/yourthemetemplates/views下,名叫 views-view--bannerhome--default.tpl.php 

  2、删除 views-view--bannerhome--default.tpl.php 里面的所有代码,粘贴下面的代码进去:

<?php
foreach($view->result as $v){ 
  ?>  
  <li>
  <a  class="img" href="<?php echo $v->field_field_link['0']['raw']['value']?>">
  <img src="<?php echo file_create_url($v->field_field_image['0']['raw']['uri']);?>" alt="" />
  </a>
  <div class="title"><?php echo $v->node_title?></div>  
  </li>    
  <?php
}
?>

清除缓存看看效果如何。

我们以flexslider插件为例:里面的代码为:

<div class="bannerhome homeflexslider">

<ul class="slides">

 <?php

foreach($view->result as $v){    

  //echo '<li><a  class="img" href="'.$v->field_field_link['0']['raw']['value'].'"><img src="'.file_create_url($v->field_field_image['0']['raw']['uri']).'" alt="" /></a><div class="title">'.$v->node_title.'</li>';

  ?> 

  <li>

  <a  class="img" href="<?php echo $v->field_field_link['0']['raw']['value']?>">

  <img src="<?php echo file_create_url($v->field_field_image['0']['raw']['uri']);?>" alt="" />

  </a>

  <div class="title"><?php echo $v->node_title?></div>  

  </li>    

  <?php

}

?>

</ul>

</div>

 

 这样就大功告成了。

 注意,上面代码的html部分是按照flexslider这个插件的要求写的。

 里面的php部分,就是我们需要的部分,用这些取到的字段,你套到别的jquery插件也可以的。

dashan 答复于