Тематика Drupal сгруппировала несколько полей

У меня есть тип контента с 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, но я не могу понять, что я должен делать.

Спасибо :)


person trh88    schedule 17.11.2010    source источник


Ответы (4)


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

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

person googletorp    schedule 18.11.2010

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

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

person Ran Bar-Zik    schedule 18.11.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)

Ваше здоровье :)

person trh88    schedule 18.11.2010

Спасибо, Том! Это сработало как шарм для 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;
}
person lurkerX    schedule 19.12.2011