ВопросПерекрывание страниц через hook_menu
В модуле uc_order есть hook_menu и там есть такой итемс
$items['user/%user/order/%uc_order'] = array( 'title callback' => 'uc_order_page_title', 'title arguments' => array(3), 'description' => 'View order.', 'page callback' => 'uc_order_view', 'page arguments' => array(3, 'customer'), 'access callback' => 'uc_order_can_view_order', 'access arguments' => array(1, 3), 'type' => MENU_CALLBACK, 'file' => 'uc_order.admin.inc', );
после чего хочу перекрыть этот итемс в своем модуле это значение
$items['user/%user/order/%uc_order'] = array( 'title callback' => 'uc_order_page_title', 'title arguments' => array(3), 'description' => 'View order.', 'page callback' => 'my_module_uc_order_view', 'page arguments' => array(3, 'customer'), 'access callback' => 'uc_order_can_view_order', 'access arguments' => array(1, 3), );
Так вот, другие итемы этого хука и этого же модуля перекрывал и всё работало хорошо, но этот не хочет, я так понимаю это из-за значения %user добавлял сверху еще global $user; но не помогало, когда убирал %user оставлял только user/order/%uc_order всё работало и выводил всё что надо, подскажите пожалуйста как правильно бороться с этим %user как его указать ? может в модуле надо что-то дописать ? кто подскажет ?
Ну в общем немного потестил и увидел что в моем модуле итем не хочет перекрывать, когда удалил итем в модуле карта мой итем заработал, первый раз столкнулся с тем что в моем модуле не перекрывает итем другого модуля, скажите пожалуйста, как правильно задавать глубину итемов? Что бы вызывался тот итем который необходимо?
- Rachinskiy
- 18.09.2013
- 3132
Комментарии
Страницы перекрываются через hook_menu_alter, а не через hook_menu.
А вес модулей можно менять в таблице systems - от этого зависит порядок вызова хуков. Но это скорее на будущее.
хммм... спасибо, а в таблицу системс лезть в ручную в БД ? и менять значение weight?
Вообще обычно это делается при инсталляции модуля, в hook_install() - запросом к базе данных выставляется корректный вес. А если вы разрабатываете свой модуль - то в автоматическом режиме кошерно через hook_update_N(), либо по быстрому ручками в базе данных.
Комментировать