Создание своей темизованой страницы списка нод без views и присвоения ей ссылки.

Главные вкладки

Аватар пользователя AleksSem AleksSem 8 августа 2009 в 0:08

Доброго времени суток всем.
Меня интересует создание своей темизованой страницы списка нод без views и присвоения ей ссылки например www.ss.ss/price_list.
Просветите пожалуйста незнающего как это можно сделать.
Спасибо.

Комментарии

Аватар пользователя glu2006 glu2006 8 августа 2009 в 12:20

hook_menu регистрируем страницу с адресом и назначаем ей callback.
пишем свой SQL который вытягивает то что Вам надо
Пишем свою theme функцию вывода html на странице. ВСЕ.

Аватар пользователя AleksSem AleksSem 8 августа 2009 в 13:49

А немного подробнее не могли бы объяснить? это делается через модуль? какой синтаксис у данных команд?

Аватар пользователя glu2006 glu2006 8 августа 2009 в 13:52

Да это делается через написание собственного модуля.
синтаксис можно посмотреть на http://api.drupal.org
Я просто не обладаю достаточным количеством свободного времени для подробной статьи (приношу извинения).

Аватар пользователя AleksSem AleksSem 8 августа 2009 в 15:27

Содержимое модуля получилось таким.
function catalog_menu(){
$items = array();

$items['catalog'] = array(
'title' => 'Real Estate',
'description' => 'Real estate catalog.',
'page callback' => 'page_catalog',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function page_catalog() {
return ''. t('Test text.') .'';
}

Как быть дальше? Как подключить темплейт (....tpl.php),
Запрос к базе писать в page_catalog()?

Аватар пользователя glu2006 glu2006 8 августа 2009 в 16:31

AleksSem wrote:
Как быть дальше? Как подключить темплейт (....tpl.php),
Запрос к базе писать в page_catalog()?

Ну вот прогресс на лицо, а говорите что сами не в силах разобраться Smile
Да запрос можете написать в этой функции а можете создать отдельную функию для получения данных.

Я к примеру стараюсь разбивать такие процессы на более мелкие т.е.
Функция получения данных и построения массивов или объектов из них
Функция обработки данных (их может быть несколько в зависимости от логики)
Функция построения и вывода готового html (theme функция).

Аватар пользователя Ромка Ромка 8 августа 2009 в 15:38

Дальше посмотрите описание [ru-api=hook_theme]hook_theme[/ru-api]. В hook_theme определяете функцию темизации с именем, например mytheme, затем пишете ее реализацию с именем theme_mytheme, потом в page_catalog вызываете как theme('mytheme'). Также в hook_theme можно сделать так, чтобы шаблон брался не из функции темизации, а из отдельного внешнего файла.