Добрый день. Подскажите, пожалуйста. Я создал "HTML Content > МойТекст" основанный на модуле "HTML Content". Затем я добавляю его в нижнюю часть (вместе с парой других) макета Home Мне нужно обернуть этот блок определенной версткой, но только его, другие "HTML Content" нужно по другому. Как я могу изменить только его? - Если я изменю module/html.tpl - это изменит все версии "HTML Content", а не только эту. - В $content_bottom в common/home.tpl находится вся выдача низа страница, то есть выделить этот блок от остальных не получится - Изменять common/content_bottom.tpl тоже не вариант, он используется на всех страницах внизу. Может быть существует что-то типа common/home--module_id.tpl или module/html__moduleid.tpl ? Или может быть в файле module/html.tpl я смогу как-то получить id модуля. if ($module_id == 39) { /*all for one*/ } else ($module_id == 43) { /* other */ } Было бы очень удобно. Но я пробовал $module_id, $module, $id, нигде нет(( Как можно это сделать?
1. Можно сделать доп. поле в админке для модуля. Туда вы будите вписывать название макета. Будите выводить в контроллер название макета и менять tpl файл. 2. Я думаю можно получить id, только я не смотрел как.
Спасибо за ответ. А где это можно сделать (во 2-ом опенкарте)? Не могу найти, где модулям можно поля добавлять.
Да во 2-ом OpenCart'e. Надо знать PHP и HTML. Идете в admin/controller/module/html.php и там создаете переменную. Потом идете в view и находите tpl файл, создаете там поле. А потом в catalog/controller/module/html.php и там делаете проверку
я думал так сделать! но как в самом контроллере узнать, какой именно модуль в данный момент отрабатывает, какой id модуля? function index($setting) - в $setting нет информации об id модуля.
1 вариант - про доп. поле для модуля? А где в админке можно устанавливать поля модулям. Искал, не нашел.
Я же писал выше как создается. В админке нет функционала создания доп. полей, все зависит от самого модуля.
ааа, я #4 сообщение еще раз перечитал. я так понял, нужно менять и контроллер модуля в админке. и вьюху модуля а админке. а потом еще и контроллер, и вьюху модуля в пользовательской части. а если захочется еще для какого-то модуля, то всё заново. непростой путь получается...) странно, конечно, что нельзя получить id модуля в контроллере. это было бы так логично. ведь при создании экземпляра модуля, ему присваивается id который виден в адресной строке (при редактировании модуля в админке). Эх... если бы был способ проверять этот айди в контроллере в польз. части... как было бы это хорошо...)
А вот если не через макет? Если не подстегивать модуль к макету. Есть способ вообще загрузить через модуль программно? Через контроллер? как-нибудь типа $this->loadModule('module/html', 39) тогда я бы загружал это в контроллере и передавал бы во вьюху home.tpl
А почему не сделать сразу нужную разметку в контенте?? В исходниках контента делайте нужный div с нужным классом. Если га блок у вас есть стили, то уберите/измените все ненужное в html.php
Вопрос не только в стилях css. Допустим, мне надо рядом с блоком html-модуля добавить три ссылки или какую-нибудь картинку. Чтобы это было рядом с выдачей этого модуля. Но только, когда он выводится на главной внизу. А на других страницах эти ссылки и картинка не нужны. И это касается не только этого модуля. Допустим, модуль "рекомендуемые". Я хочу чтобы у них внешний вид на разных страницах был разный. На главной, допустим, большие картинки, и только цена. А на какой-то другой странице хочу, чтобы рекомендованные выводились с небольшой картинкой, и помимо цены были какие-то характеристики. Мне кажется, это настолько типичная задача, что я удивляюсь - как можно работать с cms если она не позволяет выбирать, как тот или иной модуль будет выводиться и выглядеть на той или иной странице.
Есть класс в body на какой странице находимся, его и применяем. зато есть название модуля! Этого не достаточно? Если названия модулей одинаковое, то можно прямо к названию и приписывать id модуля, например Модуль 11 Затем при выводе модуля вырезаем последние два символа и используем их как id
в файле \catalog\controller\common\content_top.php ищем PHP: $setting_info = $this->model_extension_module->getModule($part[1]); и ниже добавим PHP: $setting_info['module_id'] = $part[1]; и так же в остальных контроллера положения. В итоге получим в самом модуле, id модуля в $setting['module_id']
Или вариант с изменением одной модели \catalog\model\extension\module.php найти PHP: return json_decode($query->row['setting'], true); заменить на PHP: $settings = json_decode($query->row['setting'], true); $settings['module_id'] = $module_id; return $settings; В итоге получим в самом модуле, id модуля в $setting['module_id']