Статьи

Изменение ядра OpenCart с помощью vQmod

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

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

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

«vQmod ™» (он же Virtual Quick Mod) — это система переопределения, разработанная, чтобы избежать необходимости изменять основные файлы. Концепция довольно проста … Вместо того, чтобы вносить изменения в основные файлы напрямую, изменения создаются как файлы сценариев поиска / замены xml. Эти файлы сценариев анализируются во время загрузки страницы, так как каждый основной файл «source» загружается с помощью php-функций «include» или «require». Затем источник исправляется с изменениями файла сценария и сохраняется во временном файле. Этот временный файл затем заменяется оригиналом во время выполнения. Исходный исходный файл никогда не изменяется. Это приводит к «виртуальному» изменению ядра во время выполнения без какой-либо реальной модификации файлов ядра.

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?xml version=»1.0″ encoding=»UTF-8″?>
<modification>
   <id>Example of the vQmod</id>
   <version>1.0</version>
   <vqmver>2.X</vqmver>
   <author>Tuts+</author>
   <file name=»targetfile.php»>
       <operation info=»Example of the vQmod»>
           <search position=»replace»><![CDATA[
           I am original content.
           ]]></search>
           <add><![CDATA[
           I am replaced content!!
           ]]></add>
       </operation>
   </file>
</modification>

Как видите, он начинается со стандартного объявления <?xml> за которым следует <modification> . Другие теги включают в себя <id> , <version> и <author> . Вы не должны изменять <vqmver> поскольку это указывает на версию vQmod.

Интересная работа начинается с <file> . Атрибут name указывает имя файла, который будет исправлен. Возможно, вам потребуется несколько модификаций одного и того же файла. Вот где вступает в игру тег <operation> . Каждая модификация будет заключена в <operation> . Атрибут info позволяет добавить несколько полезных сообщений.

В этом конкретном примере <search> используется для операции replace . Вы можете использовать атрибут position чтобы сообщить vQmod, какая операция будет выполнена. Содержимое, заключенное в <search> будет заменено содержимым, заключенным в <add> .

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

Давайте посмотрим другие варианты, доступные для атрибута position :

  • before используется для вставки содержимого перед строкой поиска.
  • after используется для вставки содержимого после строки поиска.
  • top   используется для вставки данных вверху файла. В этом случае нет необходимости в <search> . Даже если вы использовали это, оно будет проигнорировано.
  • bottom используется для вставки данных внизу файла. В этом случае нет необходимости в <search> . Даже если вы использовали это, оно будет проигнорировано.
  • В случае, если ibefore , данные будут добавлены перед данными поиска в той же строке.
  • В случае iafter данные будут добавлены после данных поиска в той же строке.

Есть также несколько необязательных атрибутов, доступных для <search> . Давайте кратко рассмотрим их.

  • offset — это атрибут, предназначенный для работы в сочетании с атрибутом position . Так, например, если для position задано значение before а для offset установлено значение 3 , это означает, что содержимое будет вставлено перед тремя строками искомых данных.
  • index :   Иногда вы хотите заменить только пару экземпляров определенной строки, а не все экземпляры этой строки в данных поиска. Скажем, например, в ваших поисковых данных есть пять экземпляров переменной $ abc, но вы хотите заменить только первые два экземпляра $ abc на $ def. В этом случае вам нужно указать index до 1,2 .
  • Атрибут regex полезен, если вы хотите выполнять поиск операций на основе регулярных выражений. В этом случае вам нужно установить для regex значение TRUE .

Вот краткие сведения о параметрах конфигурации vQmod.

Давайте посмотрим, как мы можем установить расширение vQmod OpenCart. Мы также рассмотрим, как вы можете использовать vQmod для изменения ядра OpenCart.

  • Загрузите и распакуйте специфичную для OpenCart библиотеку vQmod .
  • Загрузите каталог vqmod в корневой каталог вашей установки OpenCart.
  • Убедитесь, что веб-сервер доступен для записи в каталог vqcache который находится в vqmod .
  • Посетите http://www.myopencartsite.com/vqmod/install, и вы должны получить сообщение об успехе. Если это не так, скорее всего это проблема с разрешениями.

Теперь вы готовы использовать любое специфичное для vQmod расширение или создать свое собственное.

Теперь, когда вы вооружены всем оружием, давайте рассмотрим практический пример. Создайте файл XML vqmod_homepage.xml в vqmod/xml . Скопируйте и вставьте следующее содержимое во вновь созданный файл vqmod_homepage.xml .

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?xml version=»1.0″ encoding=»UTF-8″?>
<modification>
   <id>Replace the css property in heading title in Home page</id>
   <version>1.0</version>
   <vqmver>2.X</vqmver>
   <author>Tuts+</author>
   <file name=»catalog/view/theme/default/template/common/home.tpl»>
       <operation info=»Replace the css property in heading title in Home page»>
           <search position=»replace»><![CDATA[
           <h1 style=»display: none;»>
           ]]></search>
           <add><![CDATA[
           <h1>
           ]]></add>
       </operation>
   </file>
</modification>

Теперь откройте свою домашнюю страницу, и вы должны увидеть, что отображается заголовок <h1> . По умолчанию это «Твой магазин». Все файлы в vqmod/xml обнаруживаются автоматически, и изменения применяются соответствующим образом. Вы можете найти кэшированную версию файлов в vqmod/vqcache .

Это довольно просто, если вы посмотрите на файл vqmod_homepage.xml . Мы используем операцию replace в файле home.tpl . Важно отметить, что путь к файлу указывается относительно vqmod .

На этом этапе вы должны знать, как изменить ядро ​​OpenCart с помощью XML-файлов vQmod. Таким же образом вы можете создать собственные модули OpenCart, основанные на vQmod.

Загрузите некоторые расширения на основе vQmod с сайта OpenCart, чтобы изучить, что вы можете сделать с этим удивительным маленьким жемчужиной. Существует более 2500 расширений, основанных на vQmod.

Кроме того, если вам немного лень создавать XML-файл vQmod, то есть расширение OpenCart vQmod Generator, Editor и Log Viewer, которое предоставляет вам административный интерфейс для ваших файлов vQmod.

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

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