[Решено] по какому принципу работают файлы *.xml (vqmod)

Тема в разделе "OpenCart", создана пользователем Globe-Star, 20 июл 2013.

Статус темы:
Закрыта.
  1. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    122
    по какому принципу работают файлы *.xml (vqmod) ?
    тоесть как можно вынуть логику с *.xml и внедрить ёё в сам движок ?
     
  2. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Добрый день
    Как вариант, можете прочитать тут
     
    Globe-Star нравится это.
  3. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    122
    мало там инфы, несовсем то, но и на етом спасибо, тема актуальна.
     
  4. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Тогда, если не сложно, напишите что именно вам не понятно
     
  5. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    122
    там чисто расписано как работает сам vqmod, мне не понятно, как из готового файла vqmod вытянуть кусок кода чтобы его вклеить в сам движок
    --- добавлено: 20 июл 2013 в 20:10 ---
    например, есть модуль который добавляет в админке фильтр категорий на товары.. я так подумал, если там стоит стандартный фильтр и фильтрует включеные отключеные товары, то и етот можно както вшить в оболочку..
     
  6. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Хорошо, тогда приведу вам простой пример

    Модуль, который возвращает слово "поиск" в пустое поле поиска
    <file name="catalog/view/theme/*/template/common/header.tpl">
    <operation>
    <search position="replace"><![CDATA[
    <input type="text" name="filter_name" value="<?php echo $text_search; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" />
    ]]></search>
    <add><![CDATA[
    <input type="text" name="filter_name" value="<?echo$text_search;?>" onclick="this.value='';" onblur="if(this.value=='') this.value='<?echo$text_search;?>';" onkeydown="this.style.color='#000';" />
    ]]></add>
    </operation>
    </file>

    <file name="catalog/view/theme/*/template/common/header.tpl">
    - имя и расположение файла, в который вносятся изменения

    <operation></operation>
    - обозначение рамок одной операции

    <search position="replace"><![CDATA[ ]]></search>
    - обозначение рамок того, что мы должны сделать с найденной строчкой (all, top, bottom, after, before, replace)

    <input type="text" name="filter_name" value="<?php echo $text_search; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" />
    - сама строчка, которая должна находиться в указанном файле

    <add><![CDATA[ ]]></add>
    - обозначение рамок кода, который мы собираемся применить

    <input type="text" name="filter_name" value="<?echo$text_search;?>" onclick="this.value='';" onblur="if(this.value=='') this.value='<?echo$text_search;?>';" onkeydown="this.style.color='#000';" />
    - строчка кода, которую мы применяем в указанном файле (в данном модуле эта строчка заменяет ("replace") указанную выше)

    Надеюсь так вам станет немного понятнее работать со своими файлами
     
    Globe-Star нравится это.
  7. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    122
    вот оно родимое, спасибо за суету, теперь будет чем заниматся,....

    а еще один вопрос: вот сам vqmod предназначен тока ради того чтобы модули ставились одним кликом без изменений в ядре сайта, или там всётаки есть какинить преимущества.. ?
     
  8. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Тут все зависит от фантазии автора дополнения.
    Бывает, что такие модули (те, что на vQmod) например создают таблицы в базе (которые не удаляются при удалении модуля)
    Всегда читайте файл с описанием работы (например ReedMe.txt) который должен идти в комплекте с каждым модулем
    По-идее, конечно, модули на vQmod нужны для простой установки требуемых изменений/дополнений в движок, без изменений файлов системы
     
  9. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    269
    Симпатии:
    41
    Здравствуйте!
    у меня противоположный вопрос, если код вшит в сайт, можно его вытащить, немного допилить функционал и сделать VQMod? чтобы можно было использовать в другом проекте?
     
  10. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Не вижу особой проблемы
    Возьмите пустую болванку* и соберите нужный вам модуль
    например такую*
    Код:
    <modification>
    		<id>Имя модуля</id>
    		<version>версия модуля</version>
    		<vqmver>минимально требуемая версия vQmod</vqmver>
    		<author>имя автора</author>
     
    		<file name="адрес файла">
    				<operation>
    						<search position="вариант, что нужно делать со строчкой"><![CDATA[
    						отправная строчка в указанном файле
    						]]></search>
    						<add><![CDATA[
    						вносимый вами код
    						]]></add>
    				</operation>
    		</file>
     
    </modification>
     
    GrblFF и perepela21 нравится это.
  11. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    269
    Симпатии:
    41
    сложновато для человека в первый раз))
    я смогу с помощью этого xml добавить нужные столбцы в таблицу заказов в админке? если да, то как сделать не замену
    Код:
    <search position="replace">
    а добавление нужного столбца?
     
  12. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Добрый день
    Ну так я выше уже указал возможные варианты:
    replace - заменяет найденную строчку
    before - добавляет ваш код перед указанной строчкой
    after - добавляет ваш код после указанной строчки
    top - добавляет ваш код в самый верх документа (игнорирует строчку поиска <search>)
    bottom - добавляет ваш код в самый низ документа (игнорирует строчку поиска <search>)
    all - заменяет все содержимое документа на ваш код (игнорирует строчку поиска <search>)
     
    perepela21 и mr.Elias нравится это.
  13. andelor

    andelor

    Регистрация:
    17 июл 2013
    Сообщения:
    77
    Симпатии:
    32
    В добавлении ,если несколько раз встречается похожий код, начиная сверху документа, считается index=1,2,3,4 и т.д. ( здесь,к примеру, 4 раза встречается идентичный код, и над всеми 4-мя повторениями будет проводиться указанная вами операция - замены, добавления и т.д.), если указано index=1,3,4, то 2-ой повтор игнорируется.
    Пример :
    Код:
    -<operation>
     
    	 -<search position="before" index="1">
     
    		 <![CDATA[
     
    			if (isset($this->request->get['page'])) {
     
    		 ]]>
     
    	 </search>
     
    	 -<add>
     
    		 <![CDATA[
     
    		 if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; }
     
    		 ]]>
     
    	 </add>
     
    </operation>
     
    -<operation>
     
    	 -<search position="before" index="2,3,4">
     
    			<![CDATA[
     
    			 if (isset($this->request->get['limit'])) {
     
    			]]>
     
    		</search>
     
    		-<add>
     
    			<![CDATA[
     
    			 if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; }
     
    		 ]]>
     
    		</add>
     
    </operation>
     
  14. winner7

    winner7

    Регистрация:
    6 мар 2013
    Сообщения:
    322
    Симпатии:
    55
  15. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
Статус темы:
Закрыта.