Здравствуй, уважаемый друг!

Кажется, ты используешь AdBlock. Этот проект развивается и существует за счет доходов от рекламы.
Добавь, пожалуйста, нас в исключения.

Спасибо за понимание.

Создание сайтов Харьков

Модули, расширения и модификации в OpenCart 2.x

20 апреля 2015 в 0:16 Автор: Nikita_Sp в категории Интересное в мире 13 комментариев

На протяжении последнего месяца, мне удалось более тесно познакомиться с OpenCart 2, основательно разобраться с предлагаемыми движком модификациями и установщиком модулей, а также покопаться в исходном коде OpenCart 2. Данная статья является продолжением предыдущих двух постов, посвященных первому знакомству с OpenCart 2.x а также новым возможностям OpenCart 2.x.

OpenCart 2.x - Modifications & triggers

В данном посте мы рассмотрим установщик расширений, принцип его работы, затронем тему vQmod в OpenCart 2.x, а также рассмотрим новые возможности, предоставляемые OpenCart 2.

Установщик расширений OpenCart 2.x

Первым, что хотелось бы рассмотреть, это установщик расширений, т.к. это, пожалуй, один из самых основных разделов административной части для разработчика интернет магазина на основе CMS OpenCart. В предыдущих статьях, ввиду отсутствия опыта работы с новой версией движка, я мало уделял внимания данному разделу, но в данной статье я постараюсь ответить на все вопросы, с которыми могут столкнуться разработчики.

Для начала рассмотрим из чего состоит сам архив модуля .ocmod:

  1. новые файлы (файлы модуля) — файлы для загрузки (которые не затирают основные файлы движка), находящиеся в папке upload;
  2. файл install.sql для добавления таблиц в базу данных (если необходимо);
  3. файл install.xml в котором хранятся инструкции по модификации основных файлов CMS Opencart (основан на принципе xml-файлов vQmod);
  4. файл install.php который содержит код, который будет выполнен во время установки.

Архив Ocmod

Папка upload в ocmod архиве

Как видно на скриншоте выше, структура папок в папке upload полностью повторяет стандартную структуру папок Opencart. В этих папках расположены файлы, которые будут скопированы на сервер при установке расширения.

Установка расширения происходит в несколько этапов:

  1. загрузка и распаковка (в случае если это архив) файлов на сервер во временную папку system/upload/;
  2. если это просто .XML файл, то его содержимое будет записано в таблицу oc_modification и на этом установка закончена, а если же это архив с файлами (как в примере), то он будет разархивирован во временное хранилище;
  3. проверка доступа к FTP (доступ к FTP настраивается в настройках магазина);
  4. загрузка файлов из папки upload модуля;
  5. выполнение запросов из .SQL файла (обновление базы данных);
  6. внесение правок в существующие файлы из .XML файла (см. п.2);
  7. выполнение кода из .PHP файла (спасибо, Андрей Брус);
  8. проверка какие файлы будут модифицированы в ходе установки, для того чтобы выдать вам их список в окне и ожидание подтверждения об установке.

Opencart OCMOD Установка - список модифицированных файлов

В конечном итоге мы получаем скопированные новые файлы в папках нашей CMS, XML файл со сценарием (инструкциями) модификации в базе данных, и кеш этих самых модификаций в папке system/modification.

В целом система достаточно интересная и удобная для конечного пользователя, но не для разработчика. Почему? Потому что чтобы править модификации (инструкции к изменению файлов) необходимо править базу данных. При использовании классического vQmod для OpenCart для этого было достаточно править файл.

Кроме очевидного минуса с точки зрения удобства модификации инструкций, присутствует определенный плюс в данном методе хранения модификаций для файлов — более защищенное хранилище. Так как в базу данных мало кто имеет доступ, а на FTP могут иметь доступ многие (например для загрузки картинок на сервер), то данный метод может иметь преимущество, однако не стоит забывать что и на FTP можно дать доступ к определенной папке. (:

Для себя я сделал вывод, что данная система интересная, новая, удобная, но не для разработчика (: Будем следить дальше за развитием OpenCart 2, и за развитием модификаций и расширений для этой платформы.

Установка vQmod на OpenCart 2.x

Многие разработчики спрашивали, возможно ли использование vQmod как на предыдущих версиях OpenCart, и мой опыт говорит о том что можно! Просто установите его как обычно и пользуйтесь на здоровье. Если возникли проблемы, или вы располагаете иной информацией — пишите в комментариях.

OpenCart triggers

Работая над одним из проектов, я обнаружил в коде интересную строку:

$this->event->trigger('pre.admin.attribute.add', $data);

UPD: чатайте полный обзор в статье система событий в Opencart 2.x: как использовать event

Как я понял, теперь мы (разработчики) можем использовать данные триггеры для написания функций пред- или постобработки данных перед выполнением тех или иных нативных функций. Однако какого-то определенного мануала я не нашел по данному функционалу, и скорей всего он получит большее развитие в последующих версиях OpenCart.

На данный момент известно, что для регистрации функции на триггер необходимо написать:

$this->event->register('post.admin.attribute.add', 'checkout/order/send_email');

Однако больше информации внятной найти не удалось, если вы нашли что-то интересное или сами разобрались — пишите, дополним статью.

Подведем итог

В целом система развивается, обростая новыми и новыми функциями и фишками, оценить которые однозначно и объективно достаточно сложно. С моим мнением вы ознакомились, а ваше мнение буду рад прочитать в комментариях.

Надеюсь, очередной небольшой экскурс по новым фукнциям OpenCart 2.x был вам полезен и вы подчерпнули много новой и полезой для себя информации. Спасибо за внимание.

UPD: ознакомьтесь с системой событий и триггеров ($this->event) в новой статье система событий в Opencart 2.x: как использовать event

13 комментариев

  • Не хватает ссылочки на конкретную инструкцию «Установка vQmod на OpenCart 2.x»
    Спасибо

    • Я не знаю для чего нужна инструкция, т.к. лично я также устанавливал как и на Opencart 1.5.x

      • Совершенно верно, установщик расширений работает по такому же принципу как и vQmod, просто установить сам vQmod все-равно возможность есть.

  • Здравствуйте, я копался в исходном коде extension/installer.php
    В нем обнаружил, что сначала расширение загружается в /system/upload, затем подключаемся по ftp и перемещаем из /system/upload в ‘config_ftp_root’ (папка которая указывается в настройках ftp), кто-то знает зачем так усложнили ?

    • лично я не знаю — надо разбираться, но я уверен что на это были причины.

  • По поводу использования VQMod на OpenCart 2+ могу сказать, что рабочей являются версии 2.5.1 и выше, т.к. предыдущие ведут к конфликтам в работе с OCMod-расширениями.

    Также можно использовать альтернативный вариант VQMod от JNeuhoff, который доступен на официальном сайте OpenCart для каждоый версии, начиная с 2.0.0.0

    Или же можно попробовать VQMod Pro, который недавно опубликовал разработчик под ником MaxD, который позволяет приложениям на базе VQMod работать быстрее, а также решает многие проблемы оригинального VQMod, включая автоочистку кэша.

    • Спасибо за интересную информацию.
      Лично я в Opencart 2.x вообще отказался от vQmod’a, как и весь цивилизованный мир. К любому ТЗ на Opencart пишут использование стандартного Extension Installer, так что я думаю vQmod уже не будет так актуален.

  • Добрый день!

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

    Но все молчат насчет традиционных модулей. Подскажите, т.к. я вижу вы разобрались в Open Cart 2.х. Как установить просто модуль? Просто модуль который ничего не трет и не заменяет, как раньше до версии 2.х.

    Может я чего то не понимаю…

    • Добрый день!

      Спасибо за вопрос и внимание к статье!
      Если файл архива имеет расширение .OCMOD, то смело загружайте через установщик расширений. В таком файле должна быть папка upload, которая содержит новые файлы — файлы модуля.

      Если же такого файла нет и это просто архив — также можно залить через FTP как и раньше.

      Надеюсь ответил в полной мере на вопрос. Если будут еще вопросы — пишите.
      Спасибо.

  • Спасибо за ответ!

    У меня к вам еще один вопрос, последний))

    В панели управления OpenCart 2, если перейти в «модули», то там будет список модулей.

    Все модули которые есть в списке, есть и реально в директориях:
    admincontrollermodule
    adminviewtemplatemodule
    catalogviewthemedefaulttemplatemodule
    catalogcontrollermodule
    так должно быть, все Ок.

    Но, в списке модулей, есть странные модули с знаком «>», например
    «Баннер > Banner 1»
    Что это значит? В OpenCart до 2.х этого не было(

    Спасибо за ответ!

    • Дело в том, что в Opencart 2.x разработчики немного изменили структуру (принцип вывода) модулей. Если раньше для правки модулей вам достаточно было зайти в его настройки и выбрать схемы (места), где будет выводиться модуль и их можно было добавить сколь угодно, то теперь управление областями темы (верх, низ, правая/левая колонка) производится в разделе Дизайн — Схемы.

      Ну а в списке модулей просто отображается какой модуль где задействован. Спорное новшество относительно удобства, но имеем что имеем (маємо, шо маємо, як кажуть).

      Надеюсь в полной мере удовлетворил интерес)
      Спасибо за вопрос.

  • Спасибо за комментарий, почему-то на момент написания статьи не додумался прочитать функцию php в файле installer.php 🙂

    Дополнил список пунктом с загрузкой новых файлов из папки upload.
    Спасибо.

Добавить комментарий для Юрий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вверх!

Меню блога

Категории блога

Облако тегов