Как-то при верстке шаблона одного из сайта столкнулись с вопросом, что у модуля по созданию баннеров нет своего уникального класса. Общий класс есть, но в модуле создаются несколько баннеров и у каждого один класс. Чтобы решить эту проблему нужно дописать пару строк кода в контроллер и в сам шаблон. Само значение ID по сути уже есть у модуля, нужно только передать его в контроллер и дальше в сам шаблон модуля.
- Для передачи модулям их id открываем файл /catalog/model/extension/module.php и находим строку
return json_decode($query->row['setting'], true);
и меняем на
$settings = json_decode($query->row['setting'], true);
$settings['module_id'] = $module_id;
return $settings;
2. Открываем контроллер нужного модуля. В Опенкарт 2 версии до 2.3 они находятся тут /catalog/controller/module/, для 2.3 версии контроллеры /catalog/controller/extension/module/. Но это не обязательно, т.к разные разработчики иногда делают на свое усмотрение )
3. В начале любого контроллера модуля находим функцию
public function index
и ниже нее добавляем
$module = $data['module'] = $setting['module_id'];
Сохраняем.
4. Далее открываем шаблон модуля, они находятся тут /catalog/view/theme/ВАША-ТЕМА/template/extension/module/ и добавляем в нужное место
<?php echo $module; ?>
Например, на примере модуля html.tpl. У него стандартный код такой
<div>
<?php if($heading_title) { ?>
<h2><?php echo $heading_title; ?></h2>
<?php } ?>
<?php echo $html; ?>
</div>
Меняем на
<div class="<?php echo $module; ?>">
<?php if($heading_title) { ?>
<h2><?php echo $heading_title; ?></h2>
<?php } ?>
<?php echo $html; ?>
</div>
Вот и все. Не забываем очистить модификаторы, чтобы изменения применились.
Добрый день.
Из вашей статьи ничего не получается.
Можете лучше подсказать как добавить в админку поле, что бы туда писать класс и этот класс что бы добавлялся к классу модуля?
Например на основе этого же html блока?
Вы хоть напишите, что не получается. Что делали, в какой последовательности. Какие ошибки? Эти действия проверены мной, все работает.
Если эти действия у Вас не вышли, то с добавление поля в админк еще сложнее.
Не работает! Фуфло!
Извиняюсь, в статье был упущен главный пункт /catalog/model/extension/module.php, передача самого id в контроллер. Статья подправлена, все работает 100%, только что проверил на чистом сайте https://prnt.sc/rsrdy6
Спасибо, за пояснения, все получилось!
СПАСИБО ВАМ ОГРОМНОЕ!!! Все супер работает, поставил на Opencart 3 (там немного все иначе но разобраться было не сложно), решает очень много вопросов по дизайну!
спасибо