Вопрос: Переопределение метода класса ядра в плагине

Уважаемые коллеги,

Каким образом можно (правильно :)) переопределить (делегировать) методы классов ядра в плагине? В частности, я хотел бы перегрузить методы класса Router (Exec и RewriteRequest в частности).

Насколько я пока нашёл (статьи по похожей теме были найдены здесь, тут и там) можно делегировать Actions (но это не action), и методы классов модулей — но вроде бы Router не является частью модуля (или я что-то упустил). Эксперименты (методом тыка) с разными названиями хуков результата не дали, мой код не вызывается.

В API определена функция AddDeletageFunction, но я не могу понять, как сформировать к ней правильное название хука — найденные примеры, опять таки, опираются на экшины и модули.

Заранее благодарю за любые конструктивные подсказки и помощь.

6 комментариев

avatar
Каким образом можно (правильно :)) переопределить (делегировать) методы классов ядра в плагине?
никаким. ядро непоколебимо.
я хотел бы перегрузить методы класса Router (Exec и RewriteRequest в частности).
зачем?
avatar
Спасибо за отклик!

Зачем: Дописать обработку массива псевдонимов, чтобы при использовании псевдонима (из $config['router']['uri']) проходил редирект по 301 (или устанавливалось значение канонического пути во View — см. livestreet.ru/blog/11908.html).

Разобрался, как сделать и то и то в ядре, в Router.class.php, но не хотел бы оставлять это в виде хака.

В принципе, каноник я могу установить и по экшину показа — полностью скопировать туда парсинг псевдонимов, и если результат не совпал с ури запроса — добавлять каноник. Но 301 так сделать уже не получится, насколько я понимаю.
avatar
Так как ты думаешь, можно такого как-то добиться? Или диагноз — морг, и с псевдонимами разбираться на уровне .htaccess, не давая CMS-ке права голоса?
avatar
я не вникал в суть задачи, поэтому не знаю.
avatar
вы пример дайте.
avatar
Предлагаемые изменения запостил в ГитХаб — посмотрим, как они будут восприняты.

А пример задачи — если сейчас в $config['router']['uri'] прописать два урла, то по обоим этим ссылкам будет доступен одинаковый контент. Гугл говорит, что это не очень похвально, поэтому для исходного урла (который преображается в целевой) надо добавить указание, что именно целевой является главным («каноническим»).

Причём канонический линк уже поддерживается в стандартном шаблоне (и используется для пагинации), его надо только установить.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.