Как да промените програмно връзката в елемент от менюто
Правя уебсайт, в който потребителят трябва да избере регион на определен етап. Ако регионът не е избран, тогава връзките в менюто трябва да показват всички материали. Ако е избран регион, тогава към връзката в менюто трябва да се добави аргумент с номера на региона.
Можете ли да ми кажете как програмно да променя връзката?
Благодаря, става
Ако трябва да го направите само в един конкретен блок от менюта, а не като цяло във всички връзки на сайта, тогава можете да направите това. Вземете hook_block_view_alter (https://api.drupal.org/api/drupal/modules!block!block.api.php/function/h.) и преминете през елементите на менюто в $data['content'] - вътре ще има масив. В този масив можете да промените един елемент с друг.
Ако имате нужда от фундаментално решение, така че всички връзки да работят по този начин, можете да си поиграете с hook_url_inbound/outbound_alter
В общия случай тук в неговия модул са дефинирани две връзки в hook_menu - $items['events'] и $items['events/%region']
След това описвате функцията region_to_arg($arg), в която връщате идентификатора на региона, избран от потребителя.
Мисля, че ако връзките не бяха събития и събития/1, а например събития/всички и събития/1, щеше да е много по-лесно. Един единствен елемент в hook_menu вече би бил достатъчен и няма да има нужда да разделяте дисплея им с обратно извикване за достъп.
Всъщност не, hook_menu е едно, как да определите коя връзка да се покаже в самото меню е друго :)
Изглеждаше трудно за моя случай. Но ще видя, че темата е интересна.