Use the force, Luke

Drupal: Один темплейт для нескольких views (простой способ)

В Drupal темизировать views очень легко, об этом написано очень много статей, но одна очень полезная возможность во всех упущена. Обычно для того чтобы указать нужный темплейт для определенной темы в drupal используют preprocess функцию и через $variables['theme_hook_suggestions'] добавляют свои названия темплейтов на основе определенной логики. Точно так же делают когда нескольким независимым вьюхам нужно указать один темплейт. Но есть и более легкий способ.

Use the tags, Luke

Во views можно указывать теги. Да-да, именно теги. Я и сам раньше не очень понимал зачем они, думал что только для того чтобы легче было их группировать и находить, например как rules. Но все оказалось еще лучше, с помощью тегов можно указывать общие темплейты, и это хорошо!

Первым делом указываем вьюхе теги, я выбрал тег clean для вьюх у которых хочу убрать лишние обертки, и тег article стиля unformatted чтобы сменить обертку div на article.
Drupal views set tags
Добавляем тег clean и для других вьюх, для которых нужно использовать одинаковые темплейты.
Drupal views list with tag
Теперь если зайти в редактирование вьюхи и посмотреть «Theme: Information» в разделе «Other» то можно увидеть что теперь друпал будет подтягивать новые темплейты с тегами в названии если они есть.
Вrupal views tag template suggestions
Остается только создать нужные темплейты.
Drupal views tag templates list
Вот собственно и все, новые темплейты будут работать без дополнительного php кода. Таким образом можно добавить несколько темплейтов для разного вывода на сайте и просто указывать нужный тег во вьюхах. В папки складывать темплейты не обязательно, но желательно на тот случай если их будет много.

P.S.: Для более сложный условий можно использовать привычный способ о котором упомянул в начале статьи, пример есть в блоге drupby — http://drup.by/snippets/obedinenie-neskolkih-shablonov-views-v-odin. А для полей можно использовать темизацию встроенную в сами вьюхи, настройки стилей.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *