Добавить страницу
1-ый способ: Переопределить вывод ноды
В папке шаблона есть файл node.tpl.php, который отвечает за содержимое всех нод.
Для любой ноды можно создать свой файл. Например, если у ноды ИД равен 14, то его содержимое будет выводиться из файла node--14.tpl.php, если такой файл существует.
Также можно указать содержимое нод для определённых типов данных (Content Types), создав файл node--type.tpl.php.
Также можно указать шаблон ноды по определённым условиям:
# template.php function THEME_preprocess_node(&$variables) { if (current_path() == 'node/1' || current_path() == 'node/2') { $variables['theme_hook_suggestions'][] = 'page__custom'; // page--custom.tpl.php } }
После создания новых файлов в шаблоне, необходимо обновить кэш Drupal.
2-ой способ: Файл
Создать файл /sites/all/themes/mytemplate/page--mypage.tpl.php. Теперь этот файл можно открыть по адресу: http://example.com/mypage.
3-ий способ: Модуль
За создание страницы через модуль отвечает hook_menu()
.
Данный хук позволяет создавать как отдельные страницы, так и страницы настроек модуля и содержимое во вкладках.
Пример создания страниц:
// создание трёх страниц function mymodule_menu() { $items['mypage'] = array(); $items['second-page'] = array(); $items['path/to/page'] = array(); return $items; }
После обновления кэша эти три страницы будут доступны по адресу, например http://example.com/mypage. Но страница откроется как недоступная, т.к. для них не прописаны настройки.
Чтобы страница стала доступной, надо написать следующее:
// создание страницы «mypage» function mymodule_menu() { $items['mypage'] = array( 'title' => 'Имя страницы', 'page callback' => 'show_page', // функция, выполняемая при вызове данной страницы 'page arguments' => array('HTML-контент для страницы'), 'access arguments' => array('access content'), // публичный доступ 'type' => MENU_NORMAL_ITEM, ); return $items; } function show_page($content) { return $content; }
Значение MENU_NORMAL_ITEM
указывает, что в главном меню сайта надо добавить пункт меню на новую страницу. Также можно указать параметр MENU_CALLBACK
, если пункт меню создавать не надо.
Можно также передавать аргументы:
$items['mypage/%'] = array( // вместо % в URL может быть любой текст или число 'title' => 'Имя страницы', 'page callback' => 'show_page', 'page arguments' => array(1), // 1 означает передавать вторую часть URL, т.е. % 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, );