Создать дизайн к модулю в twig

Тема в разделе "Общие вопросы", создана пользователем john7, 20 сен 2019.

  1. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    Можно ли создать дизайн?
    upload_2019-9-20_16-1-35.png
    В модуле - Текстовый блок - HTML я создал две контент страницы с нзванием "gggg" и "ksdjgsjdgjshdg" далее в Дизайн-Макеты добавил их выводиться на Главной. Все выводит супер.
    Можно ли каждому отдельному блоку задать свою разметку, чтобы её стилизовать?
     
    Последнее редактирование: 20 сен 2019
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    4.210
    Симпатии:
    1.449
    А как вы думаете? Можно все.
    Возможно подойдет что то готовое
    https://shop.opencart-russia.ru/oc3_html_pro
    https://shop.opencart-russia.ru/oc3_information_blocks

    А ручками как то так
    \catalog\controller\extension\module\html.php

    в $setting находится массив с данными, поэтому можно наверно по названию модуля сделать условия для разного подключения шаблона
    PHP:
    return $this->load->view('extension/module/html'$data);
    на подобие
    PHP:
                if ($setting['name'] == 'блок1') {
                    return 
    $this->load->view('extension/module/html_block1'$data);
                } else {
                    return 
    $this->load->view('extension/module/html'$data);
                }
    ну или другие варианты по обстоятельствам.
     
    Последнее редактирование: 20 сен 2019
    john7 нравится это.
  3. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    Ручками конечно интереснее, сейчас попробуем, спасибо за помощь)
     
  4. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    А как сделать общую обёртку для контента?
    Тут получается что он каждый раз обращается к шаблону html.twig
    И примерно у нас генерится такой код в разметке
    HTML:
    <div class='1'>Блок 1</div><div class='2'>Блок 2</div>
    А мне надо по разметке вот так
    HTML:
    <div class='about'>
       <div class='1'>Блок 1</div>
       <div class='2'>Блок 2</div>
    </div>
    Или может для каждого блока в админке добавить еще поля, то как?
     
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    4.210
    Симпатии:
    1.449
    Выше я вам дал все. Почему не вникните? Что мешает вам, например передавать название модуля в шаблон, а в шаблоне уже строить условия по названию модуля?
     
  6. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    так вот можно делать в шаблонах
    блок 1 block1.twig разметка:
    HTML:
    <div class='about'>
       <div class='1'>Блок 1</div>
    блок 2 block2.twig разметка:
    HTML:
       <div class='2'>Блок 2</div>
    блок 3 block3.twig разметка:
    HTML:
       <div class='3'>Блок 3</div>
    </div>
    не будет ли это ошибкой в сборке?
     
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    4.210
    Симпатии:
    1.449
    нет. Я же говорю. Передаете переменную в шаблон.. тот который по умолчанию и там строите условия типа

    Код:
    {% if name == 'привет' %}
      одна разметка
    {% endif %}
    
    {% if name == 'пока' %}
      другая разметка
    {% endif %}
     
  8. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    а если так?
    Код:
    {общая разметка начало }
      {% if name == 'привет' %}
        одна разметка
      {% endif %}
    
      {% if name == 'пока' %}
        другая разметка
      {% endif %}
    { общая разметка конец }
     
  9. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    Решил пойти таким методом.
    создал контроллер отдельный sectionaboutarea.php
    PHP:
    class ControllerCommonSectionaboutarea extends Controller {
        public function 
    index() {
            
    $data['newsectionas'] = $this->load->view('extension/module/html');
            
    $data['newsection'] = $this->load->controller('extension/module/html');
            return 
    $this->load->view('common/sectionaboutarea'$data);
        }
    }
    в шаблоне sectionaboutarea.twig
    HTML:
    <section class="about_area">
        <div class="about-bg">
            <img src="image/bg/about-bg.png">
        </div>
        <div class="container bg-white">
                {{ newsectionas }}
                {{ newsection }}
        </div>
    </section>
    newsectionas - выводит чисто разметку модуля
    newsection - а вот работа контроллера модуля html не выводит,
    каким-то другим методом нужно?
     
  10. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    а вы смотрели(поняли) что делается в контроллере модуля html?
     
  11. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    да, для каждого модуля в зависимости от названия я подгружаю свой шаблон.
    но мне надо пару модулей например с названием name1 и name2 обернуть в общий div.
     
  12. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    да, потому что настройки модуля вы не передаете
    та же история
     
  13. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    Как тогда сделать в контроллере модуля html общую обертку?
    или то что я решить не могу не там не здесь, как это сделать?
     
  14. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    PHP:
    class ControllerCommonSectionaboutarea extends Controller {
        public function 
    index() {
            
    $this->load->model('setting/module');

            
    // идентификатор модуля
            
    $module_newsectionas_id 32;

            
    // получаем настройки модуля
            
    $setting_module_newsectionas $this->model_setting_module->getModule($module_newsectionas_id);

            
    // получаем html модуля
            
    $data['newsectionas'] = $this->load->controller('extension/module/html'$setting_module_newsectionas);
           
            
    // далее все то же для второго модуля
            
    $module_newsection_id 33;
            
    $setting_module_newsection $this->model_setting_module->getModule($module_newsection_id);
            
    $data['newsection'] = $this->load->controller('extension/module/html'$setting_module_newsection);
         
            return 
    $this->load->view('common/sectionaboutarea'$data);
        }
    }
     
    john7 нравится это.
  15. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    Огромное спасибо)
     
  16. john7

    john7 Пользователь

    Сообщения:
    38
    Симпатии:
    0
    в контроллере html есть условие $setting['name'] == 'block1', а как по id модуля сделать проверку?
    $setting['id'] как-то не подошёл.
     
  17. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    в $setting, нет идентификатора модуля
    в контроллере html, из коробки, нет id модуля
    нужно передать, или получить
     
  18. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    в вашем случае как-то так
    PHP:
            $setting_module_newsectionas['module_id'] = 32;
            
    $data['newsectionas'] = $this->load->controller('extension/module/html'$setting_module_newsectionas);
     
  19. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    в контроллере html модуля, id будет в $setting['module_id']
     
  20. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    240
    а вообще, не известно, что\как там у вас.
    судя по всему, все методом тыка