Генерация страницы по URL

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

Аватар пользователя elkexable elkexable 20 января 2012 в 15:47

Добрый день!

Пробую реализовать следующую задачу:

На входе есть 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['<страна>/<город>']? (т.е. создавать элемент массива с динамическим именем ключа)

Комментарии

Аватар пользователя ihappy ihappy 20 января 2012 в 16:28

"elkexable" wrote:
$items[staticpage] 

1. $items['staticpage2']
2. $items['staticpage/%/%']
3. arg() - или arg(0) = staticpage, соответственно arg(1) даст %.

Аватар пользователя elkexable elkexable 20 января 2012 в 16:47

То бишь можно в имя ключа массива можно положить, скажем, arg(1)? Вроде бы нет... Нужно
1. Взять, к примеру, взять arg(1)
2. Создать страницу про город, которому соответствует данный адрес
Замечание: в таблице drupal_url_alias алиасов нема.

Аватар пользователя Orion76 Orion76 20 января 2012 в 17:17
<?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
}

?>