Представления 3 и HTML5 - как переопределить вывод для разметки?
У меня есть созданное мной представление, которое выбирает сообщения в блоге на основе определенного термина таксономии, создавая своего рода представление "Избранные сообщения", которое я встроил на первую страницу своего сайта. Проблема, с которой я постоянно сталкиваюсь, заключается в попытке вывести представление так, чтобы каждое сообщение было семантически помечено с использованием некоторых новых HTML. Я пробовал встроенную функцию "Переписать вывод этого поля", но она игнорирует теги, которые я использую (т. Е. Статью, верхний и нижний колонтитулы), и оборачивает все в divs, даже когда я отмените выбор тегов-заполнителей.
Должен ли я создать переопределяющий views--view_name.tpl.php чтобы переписать вывод каждого сообщения так, как он отображается в представлении, или мне нужно использовать крючки предварительной обработки в template.php чтобы повлиять на результат?
Я должен заявить, что у меня есть базовый опыт написания PHP и крючков для предварительной обработки, но я могу использовать любые ресурсы, которые мне нужны, чтобы переместить меня по ссылке, если меня укажут в правильном направлении.
3 answers
Вы заметите, что в вашем представлении под блоком "Настройки стиля" есть ссылка на тему: Информация. В нем будут представлены все файлы тем, которые вызываются для вашего просмотра. Вы можете использовать общие и очень подробные файлы тем, которые будут использоваться только для отображения ваших представлений.
Первое имя файла в выводе на дисплей views-view.tpl.php . Это будет применяться ко всем представлениям и дисплеям. Следующий в списке - просмотры-просмотр -[имя просмотра].tpl.php . Это будет относиться только к вашему представлению. Он сохраняет детализация до тех пор, пока она не станет настолько конкретной, насколько это возможно. представления -просмотр -[имя представления] -default.tpl.php является последним в списке и применяется только к отображению представления по умолчанию. При нажатии на ссылку Вывод на экран: откроется код шаблона, который использует views. Просто скопируйте и создайте новый файл шаблона с одним из предложенных в списке. Обычно лучше быть как можно более конкретным. Файл шаблона может находиться в любом месте вашей темы, и представления будут получать его до тех пор, пока вы повторно сканируете файлы шаблонов в информации о тематике и сохраните представление. Существуют шаблоны представлений, шаблоны строк, шаблоны полей и шаблоны для конкретных полей.
Как только вы научитесь управлять файлами шаблонов просмотра, это действительно откроет перед вами возможности дизайна.
Заборы выглядят как отличный модуль (для Drupal 7) для управления разметкой вывода представлений:
Страница проекта:
Http://drupal.org/project/fences
Со страницы проекта:
"Заборы - это простой в использовании инструмент для указания HTML-элемента для каждого поля. Этот выбор элемента будет распространяться везде , где используется поле, например, в тизерах, RSS-каналах и представлениях. Тебе не нужно держать повторная настройка одного и того же элемента HTML снова и снова каждый раз время отображения поля".
Мне особенно нравится этот бит (отлично подходит для отладки вывода):
"Лучше всего то, что Fences обеспечивает более компактную разметку, чем ядро Drupal 7! И может избавиться от посторонних классов тоже!"
Это также приятно - сокращает повторение работы:
"Этот инструмент необходим для создания семантического вывода HTML5 из Drupal. Без такого инструмента вам придется создавать настраиваемое поле шаблоны в вашей теме для каждого поля. :("
Они также рассмотрели популярные альтернативы:
Аналогичные проекты включают Семантические поля, Обертки полей и инструмент внутри Набора дополнительных функций. Но мы считаем, что такой подход является более совершенным™.
Спасибо пользователю Drupal rache за упоминание модуля Заборов Drupal в их комментарии по этому вопросу - Это семантические представления модуль, устаревший по представлениям 3?
Вы можете попробовать модуль семантических представлений .
Как говорится в этом выпуске , это полезно для вывода html5.