3

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

Node: Title 
Node: Teaser 
Taxonomy: Term 

问题是我希望每个术语下的第一行都显示标题和预告片,其余只显示标题。例子:

-消息

  1. 标题和预告片
  2. 标题
  3. 标题

-运动

  1. 标题和预告片
  2. 标题
  3. 标题

-娱乐

  1. 标题和预告片
  2. 标题
  3. 标题

我试图通过使用主题

  • 视图-视图-unformatted.tpl.php
  • 意见-view-fields.tpl.php
  • 意见-view-field.tpl.php

以上三个文件没有运气。我已经在这个问题上挣扎了一段时间,任何帮助将不胜感激。谢谢你。

4

4 回答 4

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; ?>
于 2009-11-09T13:34:12.247 回答
0

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

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

于 2009-11-09T22:40:54.960 回答
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 个项目进行拆分。不过,我这辈子都找不到那个号码。

于 2010-11-18T21:58:12.727 回答
0

Drupal 的显示套件模块可以帮助您做到这一点。它为您提供了许多显示模式配置选项以及显示套件视图设置,可让您使用一个显示配置显示视图中的第一个项目,并使用另一个显示配置显示后续项目。如果您也愿意,您也可以交替使用,但这不是您要的。

这个实现的最大好处是你可以从配置中完成这一切,而不必接触任何 PHP。

查看我在此处找到的关于此的教程: http: //clikfocus.com/blog/changeing-views-output-based-row以获取有关如何执行此操作的信息。

于 2013-07-15T22:10:18.827 回答