да фильтрами просто делается, через характеристику. И привязаны названия контроллеров, но не сами контроллеры ))) get_route_runtime - легко сменить что угодно.
Ну мы так дойдем до одного модуля от индусов, который я видел. Там весь контент перед отправкой в браузер брался, парсился и заменялся на что-то свое )
При чем тут индусы и возможность сменить екшен в необходимом месте без правки ядра?
Например нужна двухсторонняя синхронизация заказов с 1с, подмена экшена дает возможность не вмешиваться в модуль и реализовать свой функционал.
А по сабжу - наличие это характеристика, при любом изменении товара просто проверять значение и записывать необходимое.
Костыль - это когда в ядро лезут, а тут стандартная возможность расширить поведение стандартных контролеров, в мире PHP применяется во всех фреймворках. Ну а так как подход в cs-cart не классический Model-View-Controller, то и расширение методов допускается не наследованием контроллера, а хуком в выборе контроллера, называть такой документированный подход костылем ну как то нельзя, в любых популярных нормальных движках таких возможностей (“костылей”) гораздо больше.
Вот такой быстрый вариант для страницы скидок
Добавить блок смарти на шаблон нужной страницы
557 - айдишник мейн контента(установить свой).
Немного коряво работает, т.к. категории загружаются только те, что на первом листе с контентом, но не требует ни единого вмешательства в ядро или написания модулей.
Если очень сильно нужно - позже выложу полностью рабочий вариант