Измененния в контроллере категорий

Добрый день, я решил модифицировать отображение крошек на страницах категорий.

Изменениями в ядре (контроллере categories) я добился результата, но хочу окультурить и вынести все в модуль. Столкнулся с тем что pre и post вариант не подходит, поскольку в таком случае крошки продублируются, а хуков в контроллере нет что бы модифицировать через свой модуль.

Суть модфикации в том что я передаю свои необходимые ИД категорий в переменную category_parent_ids на 80 строчке categories.php

Подскажите такого рода модификацию можно вынести? Или может можно перехватить данные в другом месте?

Вы используете функцию fn_add_breadcrumb? Посмотрите что внутри этой функции, там как раз видно как можно полностью переписать массив хлебных крошек.

В контроллере я нашел 3 упоминания. А где находится сама функция не нашел. Не подскажите?

Я в эту функцию передаю по одной категории, через стандартный функционал.
Я необходимый масив ИД создал немного ранее.

app/functions/fn.common.php

Ваш вариант возможен, но данная функция перебирается, что заставит функцию каждый раз обращаться к БД и запрашивать у неё список категорий столько раз, столько вложеностей.

У меня сейчас работает так

  • перехватываю category_parent_ids
  • делаю запрос в БД - > ответ масив категорий которые я хочу скрыть
  • отдаю category_parent_ids без категорий что пришли в ответе.

А прийдется сделать так (подключив хук к add_breadcrumb)

  • category_parent_ids перебираясь по одной будет попадать в fn_add_breadcrumb
  • в функции будет каждый раз отправляться запрос в БД на получения списка категорий для скрытия
  • перебор на проверку

Насколько я понимаю это замедлит?

Можно через хук. PHP поддерживает static переменные, которые сохраняют своё состояние при множественных вызовах функции. Другими словами, в хуке кладём в статическую переменную результат запроса и дальше просто проверяем есть ли каждая последующая категория в этой статической переменной.

Но вообще я имел ввиду что можно просто обнулить хлебные крошки вызвав в пост-контроллере Tygh::$app['view']->assign('breadcrumbs', []);

1 лайк

В fn_get_category_data есть post хук, в нем и подмените id_path

1 лайк

Большое спасибо за помощь. Изучаю платформу)
Подскажите, а существуют какие-то курсы или вебинары по cs-cart, кроме видео которые есть на основном Ютуб канале?

И вам большое спасибо! Эта информация мне пригодиться в будущем. Искать функцию выше с хуками!

1 лайк

на счет курсов по платформе обратитесь в helpdesk CS-Cart

Еще столкнулся с тем что меня выдают http://joxi.ru/Rmz4evwHMoZlPA блок подкатегорий.

В контроллере категории я не нашел формирования этого блока, не подскажите где искать?
И как действовать если не очевидно где находиться выполнение того или иного елемента на странице?

Спасибо!

дизайн-макеты-категории, блок “уточнить категорию”

Это понятно. Спасибо.
Я искал код который подхватывал данные дочерних елементов
и отрисовывал этот блок. Я понял что это делает тема и уже разобрался.