Как да промените програмно връзката в елемент от менюто

Правя уебсайт, в който потребителят трябва да избере регион на определен етап. Ако регионът не е избран, тогава връзките в менюто трябва да показват всички материали. Ако е избран регион, тогава към връзката в менюто трябва да се добави аргумент с номера на региона.

Можете ли да ми кажете как програмно да променя връзката?

Благодаря, става

Ако трябва да го направите само в един конкретен блок от менюта, а не като цяло във всички връзки на сайта, тогава можете да направите това. Вземете 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 е едно, как да определите коя връзка да се покаже в самото меню е друго :)

Изглеждаше трудно за моя случай. Но ще видя, че темата е интересна.