Drupal视图行输出

时间:2009-11-09 13:24:01

标签: drupal drupal-views

我正在尝试使用视图2创建页面。此页面按照分类术语列出所有节点和分组。在此视图中,样式为未格式化,行样式为字段。字段如下:

Node: Title 
Node: Teaser 
Taxonomy: Term 

问题在于我希望每个术语下的第一行显示Title&预告片和其余部分仅显示标题。例如:

  

- 新闻

     
      
  1. 标题&挑逗
  2.   
  3. 标题
  4.   
  5. 标题
  6.         

    -sport

         
        
    1. 标题&挑逗
    2.   
    3. 标题
    4.   
    5. 标题
    6.         

      - 娱乐

           
          
      1. 标题&挑逗
      2.   
      3. 标题
      4.   
      5. 标题
      6.   

我尝试使用

主题
  • 视图 - 视图 - unformatted.tpl.php
  • 视图 - 视图 - fields.tpl.php
  • 视图 - 视图 - field.tpl.php

以上三个文件没有运气。我已经在这个问题上挣扎了一段时间,任何帮助都将受到赞赏。谢谢。

4 个答案:

答案 0 :(得分:4)

您需要使用'行样式输出'模板(例如views-view-fields.tpl.php)。

要使其独特于您的视图,您需要使用比该更具体的模板名称,例如该部分中显示的最后一个可能的模板名称 - 例如views-view-fields--myview--default.tpl.php

在那里,您需要有一个全局变量来跟踪当前行,例如:

<?php 
  global $is_first_of_term;

  if(!isset($is_first_of_term)){
    $is_first_of_term = TRUE;
  } else {
    $is_first_of_term = FALSE;
  }


  // Then use $is_first_of_term below (unmodified original script)
  // to print whatever you want.
?>
<?php foreach ($fields as $id => $field): ?>
  <?php if (!empty($field->separator)): ?>
    <?php print $field->separator; ?>
  <?php endif; ?>

  <<?php print $field->inline_html;?> class="views-field-<?php print $field->class; ?>">
    <?php if ($field->label): ?>
      <label class="views-label-<?php print $field->class; ?>">
        <?php print $field->label; ?>:
      </label>
    <?php endif; ?>
      <?php
      // $field->element_type is either SPAN or DIV depending upon whether or not
      // the field is a 'block' element type or 'inline' element type.
      ?>
      <<?php print $field->element_type; ?> class="field-content"><?php print $field->content; ?></<?php print $field->element_type; ?>>
  </<?php print $field->inline_html;?>>
<?php endforeach; ?>

答案 1 :(得分:0)

将每个视图显示设置为“内容窗格”。使用具有多个视图的面板(panels3模块),第一个视图具有标题和预告片(限制1),下一个视图只是标题(限制2或3)。您可以在同一个面板中“堆叠”多个视图。

对每个分类法重复;使用分类法来论证。

答案 2 :(得分:0)

您应该能够获得$ id并查看其是否为1. EX:

<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
 <?php if (%id == 1): ?>
  <?php print [items you want] ?>
 <?php endif; ?>
  <div class="<?php print $classes[$id]; ?>">
    <?php print $row; ?>
  </div>
<?php endforeach; ?>

我遇到的问题是我希望全局行号几乎与寻呼机使用的一样,因此我可以根据每行15个项目进行拆分。我不能为我的生活找到那个数字。

答案 3 :(得分:0)

Drupal的Display Suite模块可以帮助您实现这一目标。它为显示模式配置和Display Suite视图设置提供了许多选项,使您可以使用一个显示配置显示视图中的第一个项目,使用另一个显示后续项目。如果您愿意,也可以替代,但这不是您所要求的。

这个实现的最大优点是你可以从配置中完成所有操作而不必触及任何PHP。

查看我在此处找到的有关此内容的教程:http://clikfocus.com/blog/changing-views-output-based-row,了解有关如何执行此操作的信息。