Создать файл шаблона для блока представлений


19

Существует много вопросов по тематике пользовательских блоков, но как насчет блоков, созданных представлениями?

Мой блок просмотров имеет идентификатор: block-views-posts-list-block,

Я пытаюсь разными способами присвоить имя файлу шаблона, например: block - block - views-posts-list-block.tpl.php, но не могу найти правильное имя файла.


1
Модуль разработчика тем может сообщить вам имя файла шаблона.
Освальд

Спасибо, но я обнаружил, что Themer для D7 иногда не работает должным образом.
Codium

Ответы:


18

Отредактируйте свой вид. и в разделе «Расширенные» настройки сведений о вашем блоке нажмите "Theme: Information". Появится список параметров файлов шаблонов.

например, если ваш блок имеет название «список сообщений», просмотрите возможные имена, перечисленные в опции «Информация о теме»:

* Display output: views-view.tpl.php, views-view--posts-listing.tpl.php, views-view--default.tpl.php, views-view--block.tpl.php, views-view--posts-listing--block.tpl.php
* Style output: views-view-unformatted.tpl.php, views-view-unformatted--posts-listing.tpl.php, views-view-unformatted--default.tpl.php, views-view-unformatted--block.tpl.php, views-view-unformatted--posts-listing--block.tpl.php
* Row style output: views-view-fields.tpl.php, views-view-fields--posts-listing.tpl.php, views-view-fields--default.tpl.php, views-view-fields--block.tpl.php, views-view-fields--posts-listing--block.tpl.php
* Field Content: Title (ID: title): views-view-field.tpl.php, views-view-field--title.tpl.php, views-view-field--posts-listing.tpl.php, views-view-field--posts-listing--title.tpl.php, views-view-field--block.tpl.php, views-view-field--block--title.tpl.php, views-view-field--posts-listing--block.tpl.php, views-view-field--posts-listing--block--title.tpl.php 

например : в вашем блоке есть список сообщений с именами и стиль не отформатирован , затем «Информация о теме» предлагает имя views-view-unformatted--posts-listing--block.tpl.php(это только одно из нескольких имен). Вы можете скопировать исходный views-view-unformatted.tpl.phpфайл шаблона (находится в / модулей / просмотров / тема) текущей директории темы, и переименовать этот файл с именем предложил: views-view-unformatted--posts-listing--block.tpl.php. затем внесите изменения в ваш файл шаблона. Если этот шаблон не позволяет вносить необходимые изменения, ищите другие шаблоны в соответствии с вашими потребностями.

В конце концов, если вы добавите новый шаблон, повторно просмотрите список файлов шаблонов:

Важный! При добавлении, удалении или переименовании файлов шаблонов необходимо информировать Drupal об изменениях, заставляя его повторно сканировать файлы в вашей системе. Нажав кнопку «Rescan template Files», вы очистите реестр тем Drupal и тем самым запустите этот процесс повторного сканирования. Выделенные шаблоны (в списке шаблонов над кнопкой «Rescan template Files») будут отражать новое состояние вашей системы.

Также модуль разработчика тем http://drupal.org/project/devel_themer, предложенный Освальдом, может быть полезен для определения возможных шаблонов для изменения определенных элементов в соответствии с вашими критериями. Я не рекомендую, чтобы этот модуль был включен в производственной среде (в моем случае, даже я отключил модуль в тестовой среде, потому что, кажется, конфликтует с представлениями, но когда это было необходимо, это было очень полезно)


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

Здравствуйте, пожалуйста, еще раз просмотрите список шаблонов, обозначенных «Информация о теме» в View-> Block settings, есть несколько шаблонов, оканчивающихся --blockна его имя. Не забывайте повторно сканировать шаблоны и не забудьте поместить шаблон в директорию вашей текущей темы (скопируйте выбранный шаблон из modules / views / theme). шаблон должен иметь имя, предложенное в списке «Информация о теме». Оно работает.
сигарета

@drupality, я добавил пример с шагами для проверки процесса, пожалуйста, просмотрите в разделе « например », в ответе.
сигарета

Спасибо, но я не могу удалить обертку по умолчанию div class = "content" с этим тоже. Я могу только изменить HTML, созданный представлениями
Codium

2
@ moon.watcher Я думаю, вы не поняли. Завершение файла шаблона с помощью «блока» не влияет на тематику самого блока. Это делает этот файл шаблона специфичным для блока, который выводит представление (поскольку представление может выводить несколько блоков из одного представления). Тематический контент из представления выводится в механизм создания блочных тем и переносится в разметку, предоставленную block.tpl.php. То, что пытается сделать дружественность (так же как и я), - это изменить тему самого блока.

18

Для тех, кто ищет ответ в D7, согласно Theme Developer (aka devel_themer), вы можете создать переопределение tpl для блока представления, используя соглашение:

блок - views-- {machine_name вида по} -блок

Поэтому в приведенном примере вы получите

block - views-- post- list -block.tpl.php

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


Я подтверждаю, что noTxt является правильным, перехожу к разделу блока и редактирую блок, URL должен показать вам имя блока представления с подчеркиванием my_view_name-block. замените подчеркивания на my-view-name и используйте этот формат: "block - views - my-view-name = block.tpl.php"
Nevos

2
Да, это более правильный ответ, поэтому: block - views - VIEWNAME-MACHINENAMEOFDISPLAY.tpl.php Внимание, одиночная черта перед именем машины! Имя машины = по умолчанию оно называется block, block-1 и т. Д., Но вы можете переименовать его в пользовательском интерфейсе представлений.
Никит

7

В конце получаса меняя имена tpl, вот мой окончательный вывод:

block--views--[view-name]-[display-name].tpl.php

[view-name] - часть [display-name] может быть найдена, как сказано в noTxt или соединена с '-' идентификатором представления представления и идентификатором представления представления, -block в конце неверен ,


5

В Друпале 8

введите описание изображения здесь

Шаблон полей будет:

просмотры-View-поля - [Вид-имя] - блок-1.html.twig


Этот вопрос был о D7 ... Почему Drupal 8 в вашем ответе?
Pierre.Vriens

@ Pierre.Vriens, так как вопрос популярен во взглядах (а не в модуле), я решил добавить сюда версию ответа D8.
Нет Sssweat

Теперь это интересная идея ... Как насчет того же самого для этих вопросов + 21K ?
Pierre.Vriens

@ Pierre.Vriens большинство из них не популярны.
Нет Sssweat

1
8 тегов добавлено, приятно;)
Codium

1

block--views--[view-name]-[display-name].tpl.phpдолжен быть изменен на block--views--[view-name]-[machinename].tpl.php.

Вы найдете имя машины в расширенном разделе ваших представлений, где написано другое


1

Шаблоны имен файлов, описанные выше, работают, ЕСЛИ БЕЗ вашего имени представления + отображаемое имя длиннее определенного количества символов !! Я был пойман этим и не мог найти, почему файл шаблона, оканчивающийся на ..., block.tpl.phpработал, а следующее отображение ... block-1.tpl.phpне работало.

Получается, что Views заменяет имя машины на хеш MD5, если имя слишком длинное. Если вы хотите быть уверенным в названии шаблона, которое вы должны использовать, добавьте его $conf['theme_debug'] = TRUE;в файл settings.php, а затем посмотрите на исходный код страницы. если вы найдете что-то вроде block--views--d131dd02c5e6eec4.... вам лучше укоротить имя машины представления (если вам удастся сделать это ... это не понятное человеку имя). Или же вам нужно использовать файл шаблона с таким глупым именем.

смотрите также

Имя машины блока просмотра "хэшируется" (?)

и

https://www.drupal.org/node/346602


0

Проверьте эту страницу https://www.drupal.org/node/1089656 , и информацию о подчеркивании, какие представления использует:

Также еще один пример с представлениями: если у вас есть блок, созданный представлениями с именем представления "front_news" и отображаемым идентификатором "block_1", то предложение для ловушки темы будет следующим: block - views - front-news-block-1. tpl.php (обратите внимание, когда у вас есть подчеркивания в отображаемом идентификаторе или в имени представления - вы должны преобразовать их в одну черту)


0

Для блоков внутри панелей панели решение noTxt и прочее не работает. Синтаксис будет тогда (без подчеркивания!):

panels-pane-block--views-[view-name]-[display-machine-name].tpl.php

Спасибо user3074436 за предоставленную настройку $ conf ['theme_debug'] для выяснения этого исключительного случая переопределения темы


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.