Как внедрить переменные в шаблоны страниц из пользовательского модуля Drupal? - PullRequest
2 голосов
/ 06 мая 2010

Мы создали специальный модуль для организации и публикации нашего информационного бюллетеня.

Проблема, с которой я сталкиваюсь сейчас - и я новичок в области тематики и разработки модулей Drupal, так что это может быть просто проблемой знаний, а не проблемой Drupal - это как сделать каждую рассылку тематической.

На данный момент структура URL нашего информационного бюллетеня будет:

/ newsletters / {newsletter-name} / {edition-name} / {date-date}, что означает, что мы можем создавать файлы шаблонов в нашей теме, используя такие имена файлов, как page-newsletters- {newsletter-name} - {edition- имя} .tpl.php, это здорово. Одна проблема, с которой я сталкиваюсь, заключается в том, что весь контент попадает в переменную $ content темы. Я хотел бы, чтобы он отображался как различные переменные (чтобы я мог внутри темы размещать определенный контент в определенных областях.)

Есть ли правильный способ сделать это?

Редактировать: Чтобы ответить на некоторые вопросы: проблема заключается в узле (есть узлы выпуска, редакции и информационного бюллетеня), и путь задается с помощью hook_menu с подстановочными знаками и маршрутизатором.

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Лучший ответ, который я смог найти, это добавить проверку внутри phptemplate_preprocess_page, чтобы отправить переменные обратно в модуль и обновить их.

Вроде так:

function phptemplate_preprocess_page(&$vars) {
    if (module_exists('test_module')) {
        _test_module_injector($vars);
    }
}

затем в моем файле test_module.module я создал эту функцию:

function _test_module_injector(&$vars) {
    $vars[] = call_to_other_functions_to_load_vars();
}

Казалось, работает. Хотелось бы, чтобы был способ сделать это без прикосновения к файлу template.php темы, но в остальном это работает хорошо.

0 голосов
/ 06 августа 2011

Это старый пост, и проблемы ОП, похоже, решены.

Однако, только для тех, кто находит это через Google (или иным образом):

  1. Установить модуль 'Devel': http://drupal.org/project/devel
  2. Также модуль 'Devel Themer': http://drupal.org/project/devel_themer

Используйте Devel Themer, чтобы просмотреть переменную $ content и найти то, что вам нужно.

Существует множество документов / разработок Devel / Themer, но их использование довольно простое. Тем не менее, обратите внимание, что некоторые вещи там необходимо очистить перед печатью в теме.

Предложение показывать узел в качестве вида, а затем изменять шаблоны вида звучит довольно странно, хотя и будет работать.

0 голосов
/ 06 мая 2010

Если бы была лучшая документация для функций предварительной обработки шаблона, Drupal был бы намного более доступным - так как это, вам нужно собрать воедино информацию из множества различных объяснений. Одно из мест для начала здесь:

http://drupal.org/node/223430

но если вы потратите время на изучение учебника, приведенного ниже, вы обнаружите, что можете делать большинство вещей:

http://11heavens.com/theming-the-contact-form-in-Drupal-6

...