Я пытаюсь визуализировать определенное поле перед заголовком узла при отображении тизера в D7.
По сути, я хочу перейти от этого к этому .
Я посмотрел на обновление node.tpl.php, но я заметил, что он отделяется $title
от, $content
так что я не уверен, как подойти к этому. После некоторых поисков я обнаружил, что люди предложили использовать модули CCK и ConTemplate, чтобы обойти это в Drupal-6, но мне интересно, есть ли более Drupal-7 решение.
Какие-либо предложения?
Ответы:
Это действительно довольно просто с Drupal 7.
С
render
иhide
вы знаете, есть возможность контролировать размещение одного элемента$content
без необходимости распечатывать все элементы, которые были необходимы вам в Drupal 6.Упрощенный шаблон узла выглядит так:
Небольшая модификация будет отвечать вашим потребностям:
Используя
render
, вы можете вывести элемент. Это умнее, чем просто печатать, так как Drupal будет следить за тем, что было отрендерено, чтобы избежать того, чтобы одно и то же печаталось дважды на месте. При рендеринге поля над заголовком вы также удаляете то, что отображается, когда$content
отображается.источник
Дисплей Люкс тоже довольно классный.
источник
Посмотрите на модуль Title - http://drupal.org/project/title . Это может оказаться полезным для вашего сценария. По какой-то причине я установил / включил его, вероятно, похожий на ваш, и это, казалось, давало гибкость в размещении поля заголовка.
С тех пор я отключил его (и использую Display Suite), поэтому мой отзыв может быть немного отрывочным.
источник
Это хакерское решение, и я уверен, что кто-то придумает что-то более элегантное, но на случай, если вы застряли, и никто не сделает ...
Вы можете использовать,
page.tpl.php
чтобы полностью удалить печать$title
и добавить новое настраиваемое поле с именем Title с именем машины $ new_title или что-то в этом роде. Затем при редактировании узла скройте исходное поле «Заголовок», а на узле «Сохранить» используйте Computed Field или какой-либо другой пользовательский php, чтобы скопировать его$new_title
в$title
.После всего этого напишите css, чтобы $ new_title выглядел так же, как и заголовок страницы, и вы сможете размещать любые поля в любом порядке, просто перетаскивая их на экране управления полями. Поскольку вы скопировали
$new_title
в$title
, заголовок страницы в панели браузера все равно должен работать, и ничто не должно жаловаться на отсутствующие заголовки узлов.Как я уже сказал, это взломать - но это будет работать. Дайте мне знать, если вам нужно больше информации
источник
page.tpl.php (гирлянда)
template.php
источник
Это не относится к вопросу тизера в исходном сообщении, но для людей, которые наткнулись на это и просто хотят, чтобы это произошло в полном представлении, вот вариант без кода: отображать поле в блоке (используя представления, например) и поместите этот блок выше вашего блока контента, но в том же регионе.
источник
Я думаю, что вы должны использовать функции preprocess в вашем template.php
И как дополнительный
сбросьте переменные и делайте все что хотите. добавление / удаление / обновление.
источник
Я решил эту проблему с помощью решения без кода, используя Display Suite и его функцию «Region to Block». Мне больше всего нравится это решение за его гибкость.
По сути, включите дополнительную часть «Регион для блокировки», включите отображение «Полнотекстовое содержимое» в Display Suite. (при условии, что вы хотите отобразить содержимое над заголовком в полноэкранном режиме, вы также можете использовать его для любого другого режима просмотра, кроме По умолчанию). Теперь в части «Управление отображением» в «Полнотекстовом контенте» внизу экрана должна появиться вкладка «Блокировать регионы». Введите там новое имя блока, сохраните и перетащите нужные поля в этот блок. Наконец, переместите новый созданный блок на экране блоков где-то выше заголовка узла.
Вы можете посмотреть видео с таким же подходом здесь: http://www.youtube.com/watch?v=y4wyjxyhbNA , конечно же, вам нужно поместить блок над заголовком (не на левую боковую панель) в конце.
источник
Для дзен шаблонов ниже код работает для меня.
Итак, наконец, вы можете легко напечатать свое поле в page.tpl.php;
источник
Я знаю, что вы уже использовали какую-то тему для создания и теперь пытаетесь добавить поля в верхней части заголовка.
Мои предложения всем разработчикам, строящим тему на Drupal 7, будут состоять в использовании: Omega theme + Context и Delta modules. Это дает очень прочную основу для вашего макета.
И гибкость в расположении регионов, блоков и полей.
источник
Вы можете сделать это с модулем панелей
источник