Подумав, с чего бы начать, решил начать с начала. :)

Итак, сегодян уделим внимание такой интересной программерской «плюшке» для CMS OpenCart как  vQmod . Сам движок OpenCart — на сегодняшний день одна из моих любимых CMS для создания интернет-магазинов. Почему — подробно расскажу как-нибудь отдельно. Хочу только заметить, что сегодня, упоминая OpenCart я не буду делать акцент на какой-то конкретной версии или модификации. Сегодня речь будет идти об OC, так сказать, «вцелом».

Итак,  vQmod … Кому-то он нравится, кому-то не очень — тут дело личных пристрастий, убеждать никого не буду. Как он работает? Говоря упрощенно, суть  vQmod  состоит в том, что вы просто говорите системе «найди в таком-то файле такую-то строчку и замени (или дополни) вот этой строкой». В чем главное преимущество? В том, что подобные «указания» Вы прописываете в отдельной файле, абсолютно не вмешиваясь в исходный код CMS, т.е. в будущем у Вас сводятся к минимуму большинство проблем с обновлениями, или, например, при передаче сайта на обслуживание другому программисту. Все очень просто, наглядно и понятно.

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

Ну а теперь, поехали разбираться!

vqmod

Сначала скачаем  vQmod 

скачать различные версии  vQmod  можно абсолютно легально и бесплатно вот тут:

http://code.google.com/p/ vqmod /downloads/list

Устанавливаем

— распаковываем скачанный архив в корень вашего сайта

— выставляем права  на запись (chmod) 777 папкам

/ vqmod 

и

/ vqmod /vqcache

- идем по ссылке http://[ваш сайт]/ vqmod /install и видим сообщение об успешной установке

Папку «Install» можно не удалять — она пригодится Вам после обновления OpenCart (после каждого обновления нужно будет устанавливать  vQmod  повторно).

Готово!

Используем

Для  vQmod  на сегодняшнйи день существует множество разработок, и количество их растет с каждым днем. Для того, чтобы использовать то или иное решение на базе  vQmod  достаточно просто положить (скопировать) соответтсвующий .xml-файл в папку / vqmod /xml/ на сервере. Этот XML-файл и есть тот самый файл настроек и «инструкций» для системы,  о котором мы говорилив самом начале.

ВСЕ ОЧЕНЬ ПРОСТО, НЕ ТАК ЛИ?

Если Вы думаете, что на этом все, то Вы ошибаетесь. А как же воплощение собственных идей и модернизаций? Для этого нам придется понять,что находится внутри того самого файла и как самому создавать подобные XML-ки. Не устали еще читать? Тогда движемся дальше:

Открываем любой уже готовый XML-файл из папки / vqmod /xml/. Что мы видим внутри? Если вы хоть немного знакомы с HTML, то сразу догадаетесь, что внутри не что иное как теги. Правда, тэги тут свои. Их не так много, поэтому понять и запомнить их все будет несложно:

Теги  vQmod 

<modification> — это главный тег, он просто обрамляет вес наш «модификатор» (назовем его так)

<id> — ну это, собственно, и есть не что иное как ID, т.е. название модификатора. Тут может быть абсолютно любой текст.

<version> — версия модификатора, задается в виде «1.0.0»

<vqmver> — это минимальная версия  vQmod , необходимая для работы нашего модуля, также задается в виде «1.0.0»

<author> — тут совсем просто — это имя автора, создавшего данный чудо-модуль

<file> — имя файла, в который надо внести изменения. Тут с помощью атрибута name прописывается полный путь к файлу, начиная с папки, где лежит сайт (напр. name=»catalog/controller/product/product.php»). В одном XML-файле можно использовать несколько тегов <file>

<operation> — это еще один тег-обертка. Внутрь него помещаются данные об операции над файлом, определенном выше (в теге <file>). Тег может использоваться как без атрибутов, так и с атрибутом «errors», которому можно присвоить значение «skip»(игнорировать ошибки и продолжать работу) или «abort» (отменить все изменения). <operation> может использоваться несколько раз для нескольких различных изменений одного файла.

<search> — Этот тег может использоваться только один раз внутри тега <operation>, в этот тег заключается наша искомая строка (только одна). Обратите внимание, что пробелы и разрывы строк по-умолчанию будут автоматически обрезаться. Обязательный атрибут здесь один — «position». Он указывает, что именно необходимо будет сделать с искомым и новым текстами (кодами).

Тег «position» может принимать значения before, after, replace, top, bottom и all:

- replace — заменить весь текст (код), указанный в теге <search> на новый. Именно он используется по умолчанию (если не прописать атрибут «position» вообще)
- before — вставить новый текст перед текстом из <search>
- after — вставить новый текст после текста из <search>
- top — вставить новый текст в самом начале файла. (Текст, указанный в <search>, в данном случае роли не играет)
- bottom — вставить новый текст в конец файла. (Текст, указанный в <search>, в данном случае роли также не имеет значения)
- all — заменить все данные в файле новым текстом. (Текст, указанный в <search>, опять таки, никакой роли не играет)

Также с тегом <search> могут использоваться и необязательные атрибуты:

— offset — указывает отступ от найденного текста (кол-во строк).  Например,

<search position="top" offset="5">

 

   означает«вставить новый текст после 5-й строки от начала файла», а 

<search position="before" offset="5">

значит «вставить новый текст на 5 строк ранее искомого текста»

 

- trim — обрезание пробелов. При необходимости искать текст,не обрезая пробелы, необходимо установить <search trim=»false» … >

regex — если в искомой строке используются регулярные выражения,  необходимо установить

 <search regex="true" … >

(по умолчанию установлено false, т.е. поиск обычного текста)

 

- indexесли искомых строк в файле может быть несколько, этот атрибут укажет, какую именно необходимо обрабатывать (напр., если «<span>какой-то текст</span>» встречается файле 5 раз, а нам необходимо модифицировать только второй и третий из них, указываем 

<search index="2,3" … >

 

<add> — последний и очень простой тег  vQmod . В нем мы размещаем тот самый новый текст (код), который надо вставить в модифицируемый файл. состоять он может из одной или нескольких строк. Необязаельный атрибут здесь один — trim. Используется так же, как и в <search>, с одним лишь отличием — по умолчанию он установлен как «false».

И последний немаловажный момент — текст, заключаемый в теги <search> и <add> необходимо также заключить в CDATA, тем самым указав  vQmod , что данные внутри CDATA необходимо обработать именно как текст и не воспринимать как часть структуры XML. Выглядеть это должно так:

<search><![CDATA[  Искомый текст (код) ]]></search>

и, соответственно

<add><![CDATA[  Новый текст (код) ]]></add>

Таким образом, общая структура файла получается примерно такая:

<modification>

	<id></id>

	<version></version>

	<vqmver></vqmver>

	<author></author>

	<file>

		<operation>

			<search><![CDATA[  искомый текст (код) ]]></search>

			<add><![CDATA[  новый текст (код) ]]></add>

		</operation>

	</file>

</modification>

 

 

Ну вот и все. Согласитесь,  vQmod  — это совсем не сложно и довольно занимательно