Тематические Drupal сгруппировали несколько полей - PullRequest
4 голосов
/ 17 ноября 2010

У меня есть тип контента с 4 изображениями.

В моем представлении они сгруппированы (групповые значения).

Я хочу поместить каждое изображение в отдельный файл,например:

<ul class="list">                                    
<li><img src="/images/image1.jpg"/></li>
<li><img src="/images/image2.jpg"/></li>
<li><img src="/images/image3.jpg"/></li>
<li><img src="/images/image4.jpg"/></li>
</ul>

Как мне этого добиться?Я предполагаю, что мне нужно создать тему файла шаблона поля с циклом foreach, но я не могу понять, что я должен делать.

Спасибо :))

Ответы [ 4 ]

1 голос
/ 18 ноября 2010

Ссылка, опубликованная Ran, выглядит как хорошее руководство по поиску шаблонов представления. Тематическое представление не сильно отличается от остальных, единственная сложная задача - выяснить, какой шаблон переопределить и как его назвать. Эту информацию можно найти в пользовательском интерфейсе представлений в разделе Информация о теме.

В любом случае, как только вы начнете (не забудьте очистить кеш, чтобы Drupal использовал ваш новый шаблон), может быть трудно определить, какие переменные и т. Д. У вас есть, чтобы настроить представление так, как вы хотите. Со временем это становится проще, но обычно я использую стратегию - модуль devel вместе с dpm(). Это довольно печатает переменные для вас, и намного легче увидеть, что / как вы должны изменить, чтобы получить нужную разметку. Также не забудьте подготовить комментарии в шаблонах представлений, у них есть хорошая документация о том, какие переменные он делает доступными для вас.

0 голосов
/ 19 декабря 2011

Спасибо, Том! Это сработало как прелесть для Drupal 6. Вот несколько дополнительных строк, которые сохраняют тег по умолчанию (DIV) и меняют его на LI для определенного поля, где FIELDNAME - имя компьютера вашего поля CCK.

function MYTHEMENAME_content_view_multiple_field($items, $field, $values)
{
  $tag = 'div';
  if($field['field_name']=='FIELDNAME')
  {
    $tag = 'li';
  }
    $i = 0;
    foreach ($items as $item)
    {
      if(!empty($item) || $item == '0')
        {
          $output .= '<'.$tag.' class="item_'. $i .'">'. $item .'</'.$tag.'>';
          $i++;
        }
    }
    return $output;
}
0 голосов
/ 18 ноября 2010

Ребята, спасибо за вашу помощь, вы подтолкнули меня в правильном направлении.

Я обошёл это, переопределив функцию theme_content_view_multiple_field в моем template.php

function MYTHEME_content_view_multiple_field($items, $field, $values) {
  $output = '';
  $i = 0;
  foreach ($items as $item) {
    if (!empty($item) || $item == '0') {
      $output .= '<li class="test field-item field-item-'. $i .'">'. $item .'</li>';
      $i++;
    }
  }
  return $output;
}

Со временем я отредактирую его так, чтобы оно влияло только на это конкретное поле (например, http://drupal.org/node/556232)

Приветствия:)

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

используйте тематику представлений, чтобы сделать это. Это будет очень легко сделать, но это потребует немного кодирования (не так много).

Это отличное руководство для начала: http://www.appnovation.com/theming-views-drupal-6-simple-way

...