xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Как в своём модуле переопределить page.tpl.php для определённого адреса

Опубликовано в

Задача — в своём модуле переопределить page.tpl.php для пути foo/bar/%.

Решение:

1. Реализовать hook_theme():

/**
 * Implements hook_theme().
 */
function MODULENAME_theme() {
  return array(
    'page__foo__bar__%' => array(
      'render element' => 'page',
      'template' => 'page--foo--bar--%',
    ),
  );
}

2. Создать в папке модуля файл page--foo--bar--%.tpl.php

3. Сбросить кэш.

По материалам Как переопределить функцию темизации в своём модуле.

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

А если требуется не для модуля, а просто заместо контента вывести там определенный текст, делать всё также?

нет. просто создать файл
http://drupal.org/node/1089656#page-suggestion

Большое спасибо. Постоянно теперь читаю этот блог и модифицирую свой сайт, теперь много буду спрашивать в комментариях, если можно)

Добрый день.

А скажите пожалуйста, то есть в названии файла page--foo--bar--%.tpl.php так % и оставлять ?

И в этом случае этот шаблон будет обрабатывать все запросы данного типа - и foo/bar/1 и foo/bar/10 ?

И если да, то каким образом тогда внутри этого шаблона узнать, какое значение в данном случае передается на месте % ?

так и оставлять.
узнать значение можно с помощью arg()

неплохо

Подскажите, а шаблон для определенного типа материала node--type.tpl.php можно таким образом переопределить? Чтобы он подгружался из папки с модулем?

можно

как передать параметры в такой шаблон?

я делаю так.
в функции, которая вызывается hook_menu пишу

  return theme('page__property', array('details_page' => $details_page, 'map' => $map ));

затем

function property_theme($existing, $type, $theme, $path) {
 
    return array(
        'page__property' => array(
            'variables' => array(
                'details_page' => NULL,
                 'map' => NULL,
                ), 
            'render element' => 'page',
            'template' => 'page--property'           
        ),   
    );
}

но переменные map и details_page не доступны в шаблоне

А не подскажите, как реализовать - допустим если необходимо не переопределить page.tpl.php, а добавить в него дополнительную разметку html. Естественно из своего модуля.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании