Вывод строк в Drupal - PullRequest
       14

Вывод строк в Drupal

3 голосов
/ 09 ноября 2009

Я пытаюсь создать страницу, используя представление 2. На этой странице перечислены все узлы и группы по их термину таксономии. В этом представлении стиль как неотформатированный и стиль строки как поля. Поля следующие:

Node: Title 
Node: Teaser 
Taxonomy: Term 

Проблема в том, что в первой строке каждого термина отображаются заголовок и тизер, а в остальных - только заголовок. Пример:

-Новости

  1. Заголовок и тизер
  2. Название
  3. Название

-Спорт

  1. Заголовок и тизер
  2. Название
  3. Название

-Развлечения

  1. Заголовок и тизер
  2. Название
  3. Название

Я попытался использовать тему

  • вид-вид-unformatted.tpl.php
  • вид-вид-fields.tpl.php
  • вид-вид-field.tpl.php

выше трех файлов без удачи. Я боролся с этой проблемой некоторое время, любая помощь будет оценена. Спасибо.

Ответы [ 4 ]

4 голосов
/ 09 ноября 2009

Вам нужно будет использовать шаблон «Вывод стиля строки» (например, 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; ?>
0 голосов
/ 16 июля 2013

Модуль Drupal Display Suite может помочь вам в этом. Он предоставляет вам множество опций для настройки режима отображения, а также настройки представления Display Suite, которые позволят вам показать первый элемент в вашем представлении, используя одну конфигурацию дисплея, и последующие элементы, используя другой. Вы можете чередовать, если хотите, но это не то, что вы просите.

Большим преимуществом этой реализации является то, что вы можете сделать все это из конфигурации и не трогать какой-либо PHP.

Ознакомьтесь с руководством, которое я нашел об этом здесь: http://clikfocus.com/blog/changing-views-output-based-row для получения информации о том, как это сделать.

0 голосов
/ 19 ноября 2010

Вы должны просто получить $ 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 элементов в строке. Хотя я не могу найти это число для жизни.

0 голосов
/ 10 ноября 2009

Настройка отображения каждого вида как «панели содержимого». Используйте панель (модуль Panel3) с несколькими видами, первый вид имеет заголовок и тизер (лимит 1), следующий вид - просто заголовки (лимит 2 или 3). Вы можете «сложить» несколько видов на одной панели.

Повторите для каждой таксономии; использовать таксономию для аргументов.

...