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

26.10.2012

Задача — в своём модуле переопределить 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
Похожие записи

Комментарии

Владимир
26.10.2012, 21:01

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

Владимир
26.10.2012, 21:40

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

Роман
27.10.2012, 11:08

Добрый день.

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

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

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

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

Frantsuzzz
22.01.2013, 11:14

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

Гость
22.09.2013, 14:30

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

я делаю так.
в функции, которая вызывается 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 не доступны в шаблоне

гость
01.02.2014, 12:30

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

Добавить комментарий