VQMod — обзор технологии

Автор: | 17.01.2016

vqmod-obzor-tekhnologii-reshenij-i-sposobov-ustanovkiПриветствую вас, мои подписчики, читатели и просто случайные посетители cccp-blog.com :-)

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

О том, что из себя представляет данная технология, о вариантах её решений и способах установки VQMod и пойдёт речь в данной статье. Лично я не понаслышке знаком с данной технологией и мой единственный, на данный момент, модуль для отображения опций и атрибутов товаров без захода на его страницу OptionView, разработан с использованием этой технологии.

Идея использования VQMod у меня появилась после того, как один из моих заказчиков при установке какого-то стороннего модуля, которая заключалась в замене файлов движка, удалил все мои правки. Восстановить я ему их, конечно, помог, но тогда  меня и посетила мысль, что впредь такого случаться не должно.

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

Интересно, как это реализовано? Читайте об этом далее! :-)

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

Исходя из этих принципов, я постарался сделать данную публикацию интересной и информативной как для новичка, который не знает, как производится установка VQMod, так и для специалиста, который знает, как данная технология устроена и зачем она нужна. А что у меня из этого вышло, — читайте далее. Самое главное – дочитать до конца и не торопиться с выводами :-) Итак, поехали.

Принцип работы VQMod

VQMod (Virtual Quick Modification system – виртуальная быстрая система модификации), со слов его разработчиков, является системой модификации, предназначенной для исключения необходимости внесения изменений в файлы проекта.

Говоря простым языком, модули и шаблоны, VQMod позволяет изменять сайт в виртуальном режиме, не вмешиваясь в его код. То есть, после установки модулей и шаблонов на его базе изменения вы видите, но при этом в файлах движка не было изменено ни одной строчки.

Как же это достигается?

Концепция VQMod весьма проста… Все необходимые изменения, которые нужно произвести на сайте, хранятся в XML-файле, оформленном в виде списка директив, определяющих, в каком месте что нужно поменять.

При загрузке страницы данные файлы анализируются по мере загрузки основных файлов. Затем код исходных файлов с учётом исправлений, содержащихся в XML-файлах, сохраняется во временный файл, который вызывается при загрузке страницы сайта вместо основного файла.

Таким образом, в результате мы видим изменения, хотя на самом деле сайт не изменялся. Такой вот «оптический обман» :-)

Применение VQMod

Я не зря в начале статьи упомянул OpenCart. Его и VQMod связывают прочные родственные узы, т.к. данная технология изначально создавалась на проекте, созданном на базе OpenCart, и, соответственно, она «заточена» под него. Но это не значит, что VQMod нельзя использовать на других движках и при использовании других языков программирования, кроме php.

По словам разработчиков, VQMod идеально подойдёт контроллер-базированных концепций кода, т.к. он основан на принципе подключения файлов через контроллеры, указываемые в index.php, или напрямую через этот файл. В частности, данная технология должна быть совместима с MVC-фреймворками и движками.

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

По словам команды разработчиков VQMod, они занимаются разработкой вариантов для других платформ – phpbb, cmsmadesimple и других, но лично я в Интернете ничего похожего не обнаружил. Поэтому на текущий момент полноценная работа данного продукта «официально гарантирована» только для OpenCart, в остальных же случаях технологию придётся дорабатывать.

Думаю, смысл системы понятен. Давайте теперь поговорим о том, какие варианты реализации VQMod существуют на сегодняшний день.

Реализации VQMod

1. Оригинальный VQMod, разработчиками которого являются Qphoria и Jay6390.

Это всем знакомый и самый широко употребляемый вариант, установку которого требуют модули и шаблоны с использованием VQMod, для работы на OpenCart до версии 2.

Почему я особо подчеркнул версию? Да потому что на OpenCart 2+ установка VQMod вообще может не понадобиться. Но об этом позже…

В случае использования данного варианта установка VQMod может осуществляться двумя способами: автоматически и вручную.

Установка оригинального VQMod

В обоих случаях сначала нужно скачать файлы. Самую последнюю версию технологии вы можете найти здесь — https://github.com/vqmod/vqmod/releases

Распаковываем архив и копируем папку «vqmod» в корневую директорию сайта. Чтобы не было проблем в дальнейшем, проверяем права доступа для этой папки. Они должны быть «755» (полный доступ владельцу и чтение для группы и остальных пользователей) или «777» (полный доступ для всех пользователей).

С правами «777» будьте особенно бдительны и применяйте их только в крайнем случае, если «755» не помогли устранить проблему в работе и установке VQMod.

Далее порядок действий будет различаться.

Автоматическая установка оригинального VQMod

1) Если ваш сайт расположен не на хостинге, а на локальном веб-сервере, не забудьте его запустить! Далее откройте веб-браузер и в адресную строку введите адрес «доменное_имя_сайта/vqmod/install».

2) На экране должно появиться сообщение об успешной установке. Если этого не произошло, то проверьте права и запустите установку ещё раз.

Ручная установка оригинального VQMod

1) Откройте в текстовом редакторе файл «index.php», расположенный в корневом каталоге сайта.

2) Найдите строчки:

// Startup
require_once(DIR_SYSTEM . 'startup.php');

// Application Classes
require_once(DIR_SYSTEM . 'library/currency.php');
require_once(DIR_SYSTEM . 'library/user.php'));
require_once(DIR_SYSTEM . 'library/weight.php');
require_once(DIR_SYSTEM . 'library/length.php');

3) И замените их на следующий код:

// vQmod
require_once('../vqmod/vqmod.php');
VQMod::bootup();

// VQMODDED Startup
require_once(VQMod::modCheck(DIR_SYSTEM . 'startup.php'));

// Application Classes
require_once(VQMod::modCheck(DIR_SYSTEM . 'library/currency.php'));
require_once(VQMod::modCheck(DIR_SYSTEM . 'library/user.php'));
require_once(VQMod::modCheck(DIR_SYSTEM . 'library/weight.php'));
require_once(VQMod::modCheck(DIR_SYSTEM . 'library/length.php'));

4) Сохраните файл.

5) Те же действия произведите в файле «admin/index.php».

В VQMod не нужно удалять папку «install», как это происходит при установке OpenCart. В данном случае она не мешает при работе. К тому же запуск инсталлятора является обязательным условием при обновлении версии OpenCart на вашем магазине.

После установки VQMod, независимо от способа, зайдите на сам сайт и убедитесь, что он работает корректно и не появляются никакие ошибки, связанные с технологией. Если же они возникают, проверьте наличие папки «vqmod/vqcache» и файла «vqmod/mods.cache», т.к. в них должны храниться закэшированные данные, необходимые для работы дополнений, использующих в своей работе VQMod. Если же их нет, ещё раз проверьте права на запись файлов!

2. VQMod от JNeuhoff

Данный продукт является патчем, позволяющим дополнениям на базе VQMod корректно работать на OpenCart 2+. Вот и пришло время поговорить о том, что значит «корректная работа» и почему эта фраза не применима к работе оригинальной версии VQMod на OpenCart 2+. Именно по этой причине инсталлятор VQMod был исключен из списка расширений на официальном сайте OpenCart.

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

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

И, несмотря на то, что в свой кэш VQMod заносит изменения, производимые с помощью OCMod, что является правильным и логичным шагом, конфликты всё равно периодически возникают, в результате чего теряется какой-то тип изменений или сайт вообще перестаёт функционировать.

В случае VQMod от JNeuhoff данная проблема несовместимости решена путём замены 2-х системных файлов OpenCart, благодаря чему при загрузке страниц оба типа модификаций воспринимаются одинаково корректно.

Кстати, оригинальный VQMod, начиная с версии 2.5, корректно работает в паре с OCMod, не вызывая конфликтов, которые были ранее.

Установка VQMod от JNeuhoff

  1. Для начала скачиваем продукт по этому адресу — http://www.opencart.com/index.php?route=extension/extension/info&extension_id=19501
  2. Распаковываем архив и копируем содержимое папки «upload» в корневую директрию сайта, подтверждая замену файлов при их совпадении.

Вот, собственно говоря, и всё. После произведённых манипуляций ваш магазин на базе OpenCart 2+ будет одинаково корректно воспринимать изменения, произведённые как OCMod, так и VQMod.

Но всё равно, повторюсь, несмотря на имеющееся решение, использовать VQMod в данной версии движка не рекомендуется. По-хорошему, в этом не должно быть особой надобности, т.к. все новые дополнения под OpenCart 2+должны быть с использованием OCMod, а не своего предшественника.

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

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

3. VQMod Pro от MaxD

Данный продукт является относительно молодым, и он не оброс ещё достаточным количеством отзывов, чтобы полноценно судить о его качестве. Но, проанализировав мнения пользователей, впечатление складывается хорошее.

Главная отличительная особенность VQModPro – это увеличение быстродействия магазина, использующего в своей работе дополнения на базе VQMod, что является существенным плюсом для нагруженных ресурсов на базе OpenCart. Также попутно были исправлены некоторые недоработки в работе VQMod:

  • автоматическая очистка кэша при установке новых дополнений, чтобы пользователь не ломал голову над «я же всё сделал, как нужно, почему не работает?»;
  • перестроение кэша, если поменялся размер или количество vqmodов (также необходимо для корректной работы дополнений);
  • автоматическая запись изменений в файл pathReplaces.php при переименовании папки admin в корневой директории сайта.

Установка VQMod Pro

Процесс установки является ещё одним плюсом данного продукта, т.к. он максимально упрощён и заключается в копировании файлов в корневую директорию сайта. После успешной установки при переходе на любую страницу сайта вы увидите следующий экран:

ustanovka-vqmod-proЕсли же что-то пошло не так, то вы увидите соответствующее сообщение со списком подробных рекомендаций по поводу дальнейших действий. Скачать данный продукт можно здесь — http://www.opencart.com/index.php?route=extension/extension/info&extension_id=24508

Про себя могу сказать, что данный продукт меня впечатлил. Также фактом в пользу VQMod Pro является то, что его разработчиком является MaxD, который известен своими высококлассными доработками, среди которых присутсвует сборка на базе OpenCart – OpenShop, о которой я писал ранее.

На этом обзор реализаций VQMod подходит к концу. И в завершение статьи, в качестве итогов, поговорим о том, какие преимущества и проблемы несёт использование VQMod в реальной жизни :-)

Преимущества VQMod

1. Самым главным его преимуществом является принцип работы – механизм внесения изменений «на лету», не затрагивая исходные файлы движка. И пока существуют модули и шаблоны, устанавливаемые на движок с перезаписью файлов, VQMod будет их обходить.

2.Также данная особенность позволяет производить обновления версий движков без необходимости повторной установки модулей и шаблонов. Единственное действие, которое нужно будет произвести для 100% гарантированной работы – это почистить кэш VQMod.

Но, справедливости ради, стоит сказать, что данным преимуществом мало кто пользуется на практике, т.к. магазинов, которые используют для своей работы ИСКЛЮЧИТЕЛЬНО VQMod-дополнения, без единой правки и доработки исходных файлов, практически нет. Соответственно, всегда есть риск потерять что-то нужное :-)

Недостатки VQMod

Как ни прискорбно, но недостатков у данной технологии гораздо больше, чем преимуществ…

1. Во-первых, это достаточно ресурсоёмкая технология, которая будет снижать производительность вашего сайта, требуя больших серверных мощностей. Эта особенность VQMod ведёт к замедлению скорости загрузки страниц, что вряд ли понравится пользователям таких сайтов.

Иногда скорость может снижаться на 30% по сравнению с вариантом изменения файлов движка ввиду того, что каждый запрос может выполняться более чем на 100 мс дольше.

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

2. Благодаря изменениям «на лету» может возникнуть впечатление, что дополнения на базе VQMod – это настоящая панацея, лечащая конфликты дополнений между собой. Но, не тут-то было :-) На практике вероятность несовместимости модулей и шаблонов с использованием VQMod стремится к 100%, т.к. вы никогда не знаете, какие именно изменения будет производить устанавливаемое вами решение.

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

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

VQMod — итоги

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

В OpenCart 2+ сделали попытки создать улучшенный вариант системы модификации под названием OCMod, но, к сожалению, тут тоже ничего не получилось. Т.к. новый продукт, хоть и имеет некоторые различия в принципах работы со своим предшественником (изменения вместо внешних xml-файлов хранятся в базе данных , небольшие различия в синтаксисе), но в целом, он обладает всеми его минусами.

По замечанию некоторых разработчиков, OCMod даже хуже VQMod, т.к. он ещё медленнее. К тому же у большого числа создающих и дорабатывающих магазины на OpenCart 2+ постоянно будут возникать проблемы по поводу его совместимости с VQMod.

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

Ну а пока VQMod и OCMod являются единственными решениями системы модификации файлов для OpenCart, нужно принять этот факт как есть :-)

А напоследок хотел бы поделиться с Вами одним лайфхаком:

По возможности переносите изменения из файлов VQMod и OCMod в исходные файлы движка

Особенно данный приём будет полезен для владельцев довольно нагруженных магазинов на базе OpenCart, т.к. он поможет увеличить производительность. Но, к сожалению, от конфликтов при установке новых модулей это не спасёт, т.к. в процессе корректив из кода могут исчезнуть строки, необходимые для корректного внесения изменений системами модификаций.

Поэтому если вы решитесь на данный шаг, нужно убедиться, что функционал вашего магазина достаточен и не требует значительного усовершенствования с помощью модулей в дальнейшем. Также, для большей вероятности корректной работы в будущем, всё-таки не рекомендуется производить описанные действия самостоятельно. Лучше доверить данную оптимизацию профессионалу. Но поверьте, оно того будет стоить!

Вот и всё, что я хотел вам сказать о VQMod и его аналоге для OpenCart 2+ OCMod. Надеюсь, информация была для вас полезной и вы смогли почерпнуть для себя что-то новое. Оставляйте свои мнения и отзывы в комментариях под статьёй и делитесь записью со своими друзьями в социальных сетях.

Также не забывайте подписаться на обновления, чтобы быть в курсе новых статей.

Всем удачи! :-)

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
7 голосов, в среднем: 5 из 5

2 комментария к статье "VQMod — обзор технологии"

  1. Serg

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

    1. Pashaster Автор

      Полностью с Вами согласен :-)

      Но, всё же, несмотря на свою ущербность, VQMod, как и его младший брат, OCMod, являются единственными системами модификации в OpenCart, поэтому приходится с этим мириться.

Добавить комментарий

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