Добрый день!
Пробую реализовать следующую задачу:
На входе есть URL типа http://site.ru/<страна>/<город>. Он разбирается на сегменты <страна> и <город>. В соответствии с сегментами должна выводиться информация из сторонней базы данных.
К чему пришёл я. Пробую генерировать страницу программно через hook_menu(), но проблема вот в чём: статическая страница создаётся без проблем
<?php
function CHPU_menu() {
$items = array();
$items[staticpage] = array(
'title' => 'Some title',
'access callback' => TRUE,
'page callback' => 'CHPU_page_callback',
'type' => MENU_CALLBACK,
);
return $items;
}
function
CHPU_page_callback() {
return t("Some info");
}
?>
Возникают вопрос:
Как вместо $items[staticpage] записать, скажем $items['<страна>/<город>']? (т.е. создавать элемент массива с динамическим именем ключа)
Комментарии
Курите аргументы.
1. $items['staticpage2']
2. $items['staticpage/%/%']
3. arg() - или arg(0) = staticpage, соответственно arg(1) даст %.
То бишь можно в имя ключа массива можно положить, скажем, arg(1)? Вроде бы нет... Нужно
1. Взять, к примеру, взять arg(1)
2. Создать страницу про город, которому соответствует данный адрес
Замечание: в таблице drupal_url_alias алиасов нема.
Рекомендую посмотреть в сторону книги Pro Drupal Development, сразу всё станет понятно про аргументы.
<?php function CHPU_menu(){
$items = array();
$items['place/%/%'] = array(
'title' => 'Some title',
'access callback' => TRUE,
//////////////
'page arguments'=>array(1,2),
// 0 - соответствует "place"
// 1 - соответствует второму элементу пути (страна)
// 2 - соответствует третьему элементу пути (город)
//////////////
'page callback' => 'CHPU_page_callback',
'type' => MENU_CALLBACK,
);
return $items;
}
function
CHPU_page_callback($strana,$gorod){//$strana - идентификатор страны из URL
//$gorod - идентификатор города из URL
} ?>
orion76, уже реализовал именно так) Всем спасибо!