Меню на Друпале, ч.4
Используем значение параметра wildcard(%):
<?php
function menufun_menu() {
$items['menufun/%/bar/baz'] = array(
'title' => 'Hi',
'page callback' => 'menufun_hello',
'page arguments' => array(1), // The matched wildcard.
'access callback' => TRUE,
);
return $items;
}
?>
<?php
function menufun_menu() {
$items['menufun/%/bar/baz'] = array(
'title' => 'Hi',
'page callback' => 'menufun_hello',
'page arguments' => array(1), // The matched wildcard.
'access callback' => TRUE,
);
return $items;
}
?>Выше мы объявили коллбэк страницы, а теперь описываем непосредственно функцию menufun_hello(), которая будет обрабатывать этот вызов:
<?php
/**
* Page callback.
*/
function menufun_hello($a = NULL, $b = NULL) {
return t('Hello. $a is @a and $b is @b', array('@a' => $a, '@b' => $b));
}
?>
<?php
/**
* Page callback.
*/
function menufun_hello($a = NULL, $b = NULL) {
return t('Hello. $a is @a and $b is @b', array('@a' => $a, '@b' => $b));
}
?>Здесь мы передаём часть пути как параметр в функцию. array(1) - это запись означает, что в качестве первого аргумента мы берём второй элемент массива (счёт начинается с нуля, array(0) в данном случае будет равен menufun). Ну и второй аргумент берётся из той части пути, которая идёт после baz. То есть - тут всё по-прежнему, берём параметр из конца URL. Например, путь menufun/one/bar/baz/two передаст в функцию первый аргумент $a равный one, и второй аргумент $b будет равен two.



"Это вы вовремя купальники забыли..." В смысле ты очень вовремя решил вернуться. Как раз с меню ковыряюсь : )
Это хорошо, что информация подробна. Большинство "друпал-разработчиков" ограничиваются охренительными статьями на тему "как добавить еще один пункт в меню". Еще бы примеры не целиком из Вандюка были ; )
Вопрос:
Когда добавляю табы с путем /node/%node остается еще и пункт view, ведущий на главную же вместе с MENU_DEFAULT_LOCAL_TASK. Как от него можно избавиться? Ну кроме как прописать новый путь, как тот же /menufun/.
примеры свои собственные даже neochief не придумывает. да и зачем свои собственные - если примеры и эти вполне наглядные - ничего нового я не придумаю всё равно - лучше Вандюка.
view - вы имеете в виду таб, которым просматриваешь ноду - рядом с Edit? как от него избавиться - ну - если только переопределять вызов коллбэка меню, который идет из ядра.
Например - вот так вот как нибудь повырубать все коллбэки.
<?phpfunction hook_menu_alter(&$items) {
// Example - disable the page at node/add
$items['node/add']['access callback'] = FALSE;
}
?>
это так - как вариант, который первым пришел в голову (если я правильно понял вопрос).
Он самый, View.
Вариант уже испробован. Проблема в том, что активными оказываются два таба с одинаковыми путями.