Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

lexxkrt

Пользователи
  
  • Публикаций

    347
  • Зарегистрирован

  • Посещение

Все публикации пользователя lexxkrt

  1. lexxkrt

    Несколько вопросов по Twig

    посмотрел пути в коде на работе, от названия темы {% include 'theme_name/template/common/warning.twig' %}
  2. lexxkrt

    Несколько вопросов по Twig

    я не помню насколько глубже, посмотри в ошибке отсутствия файла, там в принципе понятно. include нужен чтобы не переписывать один и тот же код 2 раза. например инклудом можно вывод товаров подключить, который одинаков в контроллерах category,special,search и т.д. что я и буду в первую очередь менять в своем шаблоне.
  3. единственное решение нашел, это добавить расширение twig_opencart, есть версия для 2.х, https://github.com/vanderson139/opencart-twig использовать функцию расширения {{ lang('text_yes') }}
  4. lexxkrt

    Несколько вопросов по Twig

    отлично твиг работает путь include надо глубже указывать для dump() расширение надо подключать
  5. сопутствующий товар чему? в корзине может быть много товаров
  6. проще тогда взять какой нибудь фреймворк за основу, ларавел например, и переписать классы. там все перечисленное вами есть. Любые изменения в коде опенкарта в принципе будут ломать совместимость, остаётся для изменений только модификаторы и модули
  7. но у вас скорее всего фильтры не сохраняются, либо не возвращается filter_id при сохранении фильтра
  8. Написано же. Error: Duplicate entry '80-0' for key 'PRIMARY', с данными первичными ключами запись существует используйте либо INSERT IGNORE, либо INSERT OR UPDATE, в зависимости от задачи
  9. lexxkrt

    шаблонизатор twig

    Зачем обсуждать, дрянь ни дрянь, будет твиг, нравится не нравится свыкайся с этим
  10. если картинки одинаковые всегда, можно вставить блоки с абсолютным позиционированием в файл footer.tpl. если картинки разные или на разных страницах, уже сложнее. либо условная проверка в футере, либо надо передавать картинки в контроллере страницы, в которой они нужны
  11. по аналогии с основным меню, создай подобный класс меню (top_menu,bottom_menu,action_menu). создай в классе ссылки на нужные команды в меню по типу $data['action_about_us'] = $this->url->link('information/information', array('information_id'=>5)); $data['action_delivery'] = $this->url->link('information/information', array('information_id'=>6)); во вьюшке используй <a href="{{ action_about_us }}">{{ text_about_us }} </a> <a href="{{ action_delivery }}">{{ text_delivery }} </a> там где надо вывести ссылки на меню в контроллере header загружай созданный контроллер меню $data['top_menu'] = $this->load->controller('common/top_menu'); во вьюхе header подключай куда надо {{ top_menu }} можно и без контроллера создать только вьюху для этого в контроллере header создаешь массив ссылок меню $data['action_about_us'] = $this->url->link('information/information', array('information_id'=>5)); $data['action_delivery'] = $this->url->link('information/information', array('information_id'=>6)); и потом грузишь вьюху $data['top_menu'] = $this->load->view('common/top_menu', $data);
  12. lexxkrt

    шаблонизатор twig

    {{ "now"|date("d/m/Y") }}
  13. lexxkrt

    шаблонизатор twig

    в твиге есть и циклы и условие и еще много чего
  14. если меню, то контроллер common/menu, ну и плюс вьюшка такая же
  15. lexxkrt

    шаблонизатор twig

    MVC, такой MVC, контроллер отвечает за обработку, модель за базу, вьюшка за отображение, а никак не иначе
  16. локализация давно существует, а ответ на вопрос ТСа есть в теме ниже
  17. Есть макрос, радиобуттон с двумя вариантами да/нет {% macro yesno(entry,name,value,text_yes,text_no) %} <div class="form-group"> <label class="col-sm-2 control-label" for="{{ name }}">{{ entry }}</label> <div class="col-sm-10"> {% if value %} <label class="radio-inline"><input type="radio" name="{{ name }}" value="1" checked="checked"> {{ text_yes }}</label> <label class="radio-inline"><input type="radio" name="{{ name }}" value="0"> {{ text_no }}</label> {% else %} <label class="radio-inline"><input type="radio" name="{{ name }}" value="1"> {{ text_yes }}</label> <label class="radio-inline"><input type="radio" name="{{ name }}" value="0" checked="checked"> {{ text_no }}</label> {% endif %} </div> </div> {% endmacro %} использование соответственно {% import "macro.twig" as forms %} {{ forms.yesno(entry,"name",value,text_yes,text_no) }} в данном случае при использовании надо передавать все параметры, включая языковые строки, можно ли как-нибудь использовать в макросах языковые строки, не передавая их изначально в вызове макроса. Ясно что можно забить на локализацию и сразу подставить строку (да/нет), но хотелось бы делать правильно
  18. lexxkrt

    OpenCart 3.0.0.0

    $array = (array) $object;
  19. lexxkrt

    OpenCart 3.0.0.0

    тогда уж просто return $query->row;
  20. lexxkrt

    OpenCart 3.0.0.0

    Чтобы избавиться от портянок, это все вьюхи надо переделывать. А вот тащить в каждую вьюху, например, "breadcrumbs" это идиотизм как минимум. Почему бы этот самый breadcrumb не вынести в отдельную вьюху, а самом соде потом использовать просто {{ breadcrumb }}. а в коде всего то надо будет добавить $data['breadcrumb'] = $this->load->view('common/breadcrumb',$data['breadcrumbs']); и таких участков много. Насчет новичков, куда проще {{breadcrumb}} чем ul>{% for...li>a[href] в каждой вьюхе. А с точке зрения архитекторы twig вообще использовать 1 базовый файл "template.twig", в котором используются все повторяемые элементы (хлебные крошки, варнинги, ерроры и т.п), а остальное вставлять блоком. Дальше взять формы в админке, это просто кошмар при наличии macro использовать в каждой форме <div class=col-sm-2..<div class=col-sm-10.. вместо того чтобы просто сделать {{ forms.text(entry,name,value) }}. не понимаю человека который переписывал вьюшки на twig. я бы просто из-за лени переделал на макросы.И это грубо неделя времени изучения опенкарт3 и твига, вызывает кучу вопросов, я понимаю когда версия первая простителен этот говнокод. ну к третьей версии в эпоху ларавела, делать такое, извините, бездарно растраченное время разработчиками.
  21. {% else %} <div class="row"> {% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %} <div class="col-sm-3"> <ul> {% for category in categories %} <li><a href="{{ category.href }}">{{ category.name }}</a></li> {% endfor %} </ul> </div> {% endfor %} </div> <br /> {% endif %} это не правильно, должно быть {% else %} <div class="row"> {% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %} <div class="col-sm-3"> <ul> {% for child in category %} <li><a href="{{ child.href }}">{{ child.name }}</a></li> {% endfor %} </ul> </div> {% endfor %}</div> <br /> {% endif %}
  22. lexxkrt

    OpenCart 3.0.0.0

    я не про использование твига вообще, а про то что не используются его фишки, например: {% extends "main.tpl" %} {% block html_title %} Главная страница {% endblock %} {* Переопределяем заголовок страницы *} {% block content %} Тут содержимое главной страницы. Это содержимое заменит определенный в родительском шаблоне текст. {% endblock %} что позволило бы избавиться от дублирования кода в шаблонах, плюс шаблоны можно было бы упростить не тянуть за собой нечитаемую портянку. Создается впечатление что шаблоны даже не перерабатывались, а просто <?php echo ?> заменили на {{ }}
  23. lexxkrt

    OpenCart 3.0.0.0

    Не совсем понятно зачем разработчики перешли на твиг если при этом возможности твига не используют. В коде используется только для замены <?php echo ?> и <?php ?>.
  24. элементарно, транслит либо наименования перед сохранением в соответствующем модуле, либо производитель/модель. плюс добавить проверку на уникальность

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.