Оверрайд контроллера


#1

Что-то я подзабыл, мне надо сделать оверрайд index контроллера бэкэнда.
Но вот так
/модуль/app/addons/модуль/controllers/backend/index.override.php
не работает
и в доках про оверрайд контроллра тоже пусто.
Можно конечно обходным путем, сделать пре
/модуль/app/addons/модуль/controllers/backend/index.pre.php
и в нем

if ($mode == 'index') {
   ...
   $mode = "noindex";
}

но хотелось бы понять что не так
потому что с теми наворотами которые туда засунули, в базе 70000 заказов за много лет, index виснет напрочь.


Макет блока с товаром в категории
#2

Предлагал изменения в улучшениях CS-Cart и темах. Там проблемы по целой куче причин возникают - и при большом количестве заказов и при большом количестве клиентов и при большом числе товаров… Пришлось выпилить целую кучу всего, чтобы оно как-то открывалось.

Вообще, было бы неплохо чтобы разработчики проанализировали все страницы админки на запросы(чтобы вот такое, например, пофиксить - 56 500 запросов к базе данных на странице фильтров в админ панели).

Проблема не только в том что страницы админки тупят и тормозят, но и в особенностях работы таблиц БД, в следствии чего вместе с тормозами админки в этот момент тормозить имеет свойство и фронтенд. А когда складывается несколько факторов, вроде наплыва покупателей, поисковых роботов, работы контент-менеджеров(сбрасывающей слишком много кеша при незначительных действиях), обновления цен и остатков из системы учета, да некоторые персональные доработки еще добавляют(а без них часто никак)… сайт фактически ложится.


#3

Оверрайда контроллеров нет в CS-Cart. Вы, наверное, путаете с оверрайдом шаблонов. Можно только pre и post контроллеры использовать и хуки для функций, если они есть.


#4

Спасибо, так и думал, что что-то путаю, но оставалась надежда. Теперь вы ее окончательно убили :smile:
Пойду обходным путем


#5

А откуда вызывается контроллер? Ищу, но пока не нашел.
Дело в том, что просто изменить в index.pre.php
$mode=“noindex”;
не получится,
сделал
Registry::set(‘runtime.mode’, “noindex”);
в рунтайм сохраняется, но в самом контроллере $mode снова имеет значение “index”
сам пре контроллера отрабатывает, задается значение переменной, которая передается в оверрайд шаблона index и она там отображается


#6

эта функция fn_dispatch в app/functions/fn.control.php

а по теме можно попробовать через хук dispatch_assign_template из $controllers_cascade вырезать не нужный вам

либо тут

в конце вызвать

 return array(CONTROLLER_STATUS_REDIRECT, 'урл для редиректа' );

это прервет выполнение остальных контроллеров из $controllers_cascade но пройдет редирект


#7

Во, спасибо за идею, это действительно будет проще всего

перенаправить на стрвницу своего модуля, тем более что на дашборде хотел именно продублировать с нее информацию