Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

В связи с анонсами новой версии Simpla с поддержкой модульности - решил внести свою лепту.


vQmod (Virtual Quick Mod) - это система, которая виртуально вносит изменения в исходный код системы но при этом не затрагивая файлы на прямую. Изменения вносятся путем создания XML-файла, в котором программно описывается, что и где искать/заменять. Эти файлы обрабатываются во время загрузки страницы. Затем файлы с уже внесенными изменениями сохраняются как временные, после чего эти файлы будут использоваться в дальнейшем при загрузке страниц.

Данный функционал активно использовался на старых версиях в движках OpenCart 1.5.х
После активного его использования пользователями, авторы OpenCart, решили и себе использовать такой же способ внесения правок для модулей. И с версии 2.0 в стандартный дистрибутив Opencart входит аналогичный модуль OCMod но более адаптирован к движку.

Интеграция пока поверхностная. По хорошему - нужно бы слегка допилить симплу
Пути используются относительные и их проблемно подменять (сделал частичную их подмену в vqmod/xml/vqmod_simpla.xml)

Установка затрагивает файлы:

  • /.htaccess
  • /index.php  удалено с версии 2.2
  • /api/Simpla.php
  • /config/config.php
  • /simpla/index.php удалено с версии 2.2

Установка:
1) Скачиваем архив (приложенный ниже) и распаковываем его в корень сайта
2) При необходимости выставляем права 755 на каталоги vqmod и vqmod/vqcache
3) Проходим по ссылке http://ВАШ_САЙТ/vqmod/install
4) Если увидели сообщение:

VQMOD HAS BEEN INSTALLED ON YOUR SYSTEM!

Значит все прошло успешно и можно начинать пользоваться

Наши моды ложим в папку vqmod/xml
Что касается синтаксиса xml-файлов - то вот (От авторов vqmod на англ) или вот почти тоже самое на русском.
Так же, если кому нужно, то можно установить генератор xml-файлов


Удаление (после версии 1.2):
1) Проходим по ссылке http://ВАШ_САЙТ/vqmod/uninstall
2) Вводим логин и пароль администратора.
3) Если увидели в конце сообщение:

VQMOD HAS BEEN UNISTALLED ON YOUR SYSTEM!

Значит все успешно удалено.


Обновление (после версии 1.2):
1) Выполняем удаление vqmod (инструкция выше).
2) Удаляем все содержимое (!!кроме папок cfg, mod и xml!!) с папки vqmod
3) Дальше устанавливаем новую версию с заменой файлов (инструкция выше) кроме папки cfg (если там делались изменения)

 

 

xml-менеджер (после версии 2.5):

http://ВАШ_САЙТ/vqmod/manager

 

управление компонентами (после версии 2.5):

http://ВАШ_САЙТ/vqmod/mods


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

#VQMOD#
..... код ...
#VQMOD_END#

Их удалять и изменять - нельзя. Иначе будет невозможна деинсталяция vqmod.
 

Примеры xml:
Добавление нового поля к товару
 
Примеры mod:
Все примеры на github
 
Hello World mod 2.3 
Возможность оставлять комментарии к страницам
Recapcha 2.0
Simple Resize
 
 

История изменений:

vqmod-1.0: Первый релиз

vqmod-1.1: Изменена обработка шаблонов smarty

(для обновления с 1.0: заменить vqmod/xml/vqmod_simpla.xml из нового архива)

vqmod-1.2 о версии + как обновить с 1.1

vqmod-1.3 Инсталятор теперь работает если simpla установлена в папку

+ незначительные изминения

 

vqmod-1.4 о версии + как обновить с 1.3

vqmod-1.5 о версии

vqmod-2.0 о версии

vqmod-2.1 о версии
 
vqmod-2.2 о версии
 
vqmod-2.3 о версии
 
vqmod-2.4 о версии

 

vqmod-2.5 о версии

 

vqmod-2.6/7 о версии

 

vqmod-2.8.0 о версии

 


Больше версий на github

 

 

PS: По каким то причинам не могу прикреплять файлы к сообщениям.

Поэтому качаем с гита

 

Скачать с github

vqmod-2.6/7 о версии

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 111
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

 

 

Не видно что-то архива...

 

 

Перезаливаю.. Нашел ошибки

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Перезалил

 

.................................................

Вот накидал небольшой примерчик. 

 

Данный xml добавляет поле к товару.

 

Установка:

1) Распаковываем архив в корень сайта.

 

2) Проходим по ссылке http://ВАШ_САЙТ/install.php

 


все)

product-field.zip

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Не работает.

В админке у товара новое поле показывает, но введенное значение НЕ сохраняется.
Насколько я понял, в админке при редактировании товара вызывается view/ProductView.php родной, а не модифицированный...

Ссылка на сообщение
Поделиться на другие сайты

Не работает.

В админке у товара новое поле показывает, но введенное значение НЕ сохраняется.

Насколько я понял, в админке при редактировании товара вызывается view/ProductView.php родной, а не модифицированный...

 

Я это как раз и исправлял. Скорее всего вы скачали версию до правок.

Замените vqmod/xml/vqmod_simpla.xml из архива

 

 

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

 

Это все можно самому делать. 

Делаешь install.php, а в нем запрос и удаление установочного фала.

Юзеру достаточно будет просто пройти по ссылке. 

Потому что делать такое в самом xml - нормально не получится. Ему при каждом рекеше придется как то проверять необходимость этого запроса.

 

PS: изменил для примера #4  пост. Добавил install.php

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Похоже тема никому не интересна? 

Вопросов - нет. Пак скачали лишь 2 человека.

Не желают фрилансеры упрощать жизнь себе и пользователям...

Ссылка на сообщение
Поделиться на другие сайты

Почему, мне например, очень интересно))

Но я сегодня жутко занят и нет времени потестить.

Ссылка на сообщение
Поделиться на другие сайты

Как по мне - сама идея шикарная. И не надо никакого наследования, главное файлы называть по разному.

Если немного подпилить - должна выйти конфетка.

Ссылка на сообщение
Поделиться на другие сайты

Что бы подпилить - нужна правка симплы (не сильно радикальные ну нужные). 

Иначе это будет как другая ветка движка...

 

1) Необходим функционал для отхода от htaccess (роутинг) и что бы вся витрина проходила через index.php (файлы ajax, yandex, sitemap др. Что запускаются сами)

 

2) Фикс относительных путей (я vqmod-ом часть поправил. Но это как то не практично)

 

Ну остальные все удобства я могу настроить через vqmod (подхваты xml из шаблона и другое)

Ссылка на сообщение
Поделиться на другие сайты

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

P.S. Кто готов помочь доделать роутер для симплы велком в личку или скайп, по итогу выложу в паблик с указанием соавторов :D

Ссылка на сообщение
Поделиться на другие сайты

Это хорошо!

Но хотелось бы что бы это все добавилось в основной функционал.

Иначе получится как "Новая ветка" без возможности обновлений движка

Ссылка на сообщение
Поделиться на другие сайты

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

 

Очень интересно, отчего "упираюсь в проблему статических страниц либо отдачу 404", вроде бы вопрос прозрачный и принципиальных трудностей быть не должно...

Ссылка на сообщение
Поделиться на другие сайты

Что бы подпилить - нужна правка симплы (не сильно радикальные ну нужные). 

Иначе это будет как другая ветка движка...

 

1) Необходим функционал для отхода от htaccess (роутинг) и что бы вся витрина проходила через index.php (файлы ajax, yandex, sitemap др. Что запускаются сами)

 

2) Фикс относительных путей (я vqmod-ом часть поправил. Но это как то не практично)

 

Ну остальные все удобства я могу настроить через vqmod (подхваты xml из шаблона и другое)

 

Слишком хлопотно будет все это реализовать.

Во-первых, уже сейчас видны нерациональности.  Во многих местах приходится вставлять одно и то же типа (VQMod::modCheck($template)) с модификациями. Такие многочисленные повторы явно говорит о нерациональности организации.

 

Во-вторых, на текущий момент даже эти повторы полностью проблему не решают. Например, не модифицируется  файл шаблона, который включается в другой шаблон в виде {include file='pagination.tpl'}. Устранять эту ошибку надо уже модифицированием класса Smarty - а это плохой стиль и дополнительные проблемы в будущем.

 

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

 

В-четвертых, ТС постоянно твердит, что требуется и переделка исходной Simpla под работу с VQMod.  А тут, помимо, теоретических трудностей, есть и практические - по причине известной консервативности автора Simpla и просто отсутствием какой-либо серьезной видимой работы с его стороны за последние пару лет...

 

Сомневаюсь, что стоит идти подобным путем...

Ссылка на сообщение
Поделиться на другие сайты

Слишком хлопотно будет все это реализовать.

Во-первых, уже сейчас видны нерациональности.  Во многих местах приходится вставлять одно и то же типа (VQMod::modCheck($template)) с модификациями. Такие многочисленные повторы явно говорит о нерациональности организации.

 

И в чем тут не рациональность?

Стандартные include/require для тебя рациональны? 

Там если файл уже существует то проверяется лишь время его создания и возвращается имя модификатора

Или ты можешь как то по другому подменить файл? 

 

 

Во-вторых, на текущий момент даже эти повторы полностью проблему не решают. Например, не модифицируется файл шаблона, который включается в другой шаблон в виде {include file='pagination.tpl'}. Устранять эту ошибку надо уже модифицированием класса Smarty - а это плохой стиль и дополнительные проблемы в будущем.

 

Почему же сразу модифицированием smarty?

Можно шаблоны, вызванные через fetch, обрабатывать и заменять в них include на какую то функцию-обвертку. Которая проверит модификацию и вернет файл в {include}

 

 

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

 

Про это я уже писал в #11. Что нужны модификации симплы. Причем они и без vqmod лишними - не будут

Ссылка на сообщение
Поделиться на другие сайты

И в чем тут не рациональность?

Стандартные include/require для тебя рациональны?

 

Уже написал в чем. Из того, что там сказано, видно, что include/require тут ни при чем...

 

Там если файл уже существует то проверяется лишь время его создания и возвращается имя модификатора

Или ты можешь как то по другому подменить файл?

 

Можно подменять и по-другому. Думаю, Вы и сами могли бы быстро сообразить, что Ваш способ - не единственный.

 

Можно шаблоны, вызванные через fetch, обрабатывать и заменять в них include на какую то функцию-обвертку. Которая проверит модификацию и вернет файл в {include}

 

Конечно, можно. Простейший момент - и уже Вам понадобилось заменять и переделывать. Это тоже к нерациональности...

 

Про это я уже писал в #11. Что нужны модификации симплы. Причем они и без vqmod лишними - не будут

 

Да, писал. Опять масса переделок.

 

Если считаете, что Ваш путь хорош, доведите свой плагин до состояния, чтоб работал хотя бы в простых ситуациях.

Или хотя бы попробуйте для начала составить список нужных Вам переделок и оцените рабочее время (в часах), которое Вам понадобится для этого...

Ссылка на сообщение
Поделиться на другие сайты

Kors может тогда предложишь что то по существу, а не "можно по-другому"? 

 

А то я опять вижу лишь треп... А конкретики - никакой

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Я ведь сказал очень конкретно: по-моему, метод Ваш сложный.

Привел пример КОНКРЕТНЫЙ, когда работает неправильно.

Если Вы считаете, что метод хороший и поправить несложно, поправьте быстренько без лишней болтовни указанный КОНКРЕТНЫЙ момент.

А потом, думаю, я найду Вам еще случай, когда работает неверно.

И так далее...

 

И посмотрим, кому раньше надоест.

Если мне, значит, Вы правы и Ваше решение хорошее. 

А уж если Вам, то выходит, я прав, а с Вашей стороны только непродуманная идея, которую Вы сами до конца не можете довести...

 

Если осознали масштаб работ и тяжело реализовать до конца, Вам предложен опять же КОНКРЕТНЫЙ альтернативный вариант - составить хоть небольшой план.

Если же и это не хотите или не можете, тогда треп-то как раз с Вашей стороны...

 

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

Один из последних характерных примеров:

http://forum.simplacms.ru/topic/6727-%D0%B2-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5-bootstrap-simpla-admin/page-3?do=findComment&comment=90717

Ссылка на сообщение
Поделиться на другие сайты

Если Вы считаете, что метод хороший и поправить несложно, поправьте быстренько без лишней болтовни указанный КОНКРЕТНЫЙ момент.

А потом, думаю, я найду Вам еще случай, когда работает неверно.

И так далее...

И посмотрим, кому раньше надоест.

Если мне, значит, Вы правы и Ваше решение хорошее.

 

Корс меня на понт не бери! 

Я тебя просто сейчас опять пошлю (денек в бане посижу, ничего не случится)

 

То ты еще та назойливая гнида! 

Тебя зацепишь так пол форума засрешь! Я не понимаю почему тебя еще до сих пор не забанили!

Ссылка на сообщение
Поделиться на другие сайты

Тебя зацепишь так пол форума засрешь! Я не понимаю почему тебя еще до сих пор не забанили!

Банили неоднократно, даже аккаунт сносили, толку 0 он дебил.
Ссылка на сообщение
Поделиться на другие сайты

Непонятно, зачем  Вы перешли на воровской язык...

 

Напомню суть. Имеем простой технический вопрос. Предложенный метод не работает для шаблона, который включается в другой шаблон в виде {include file='pagination.tpl'}. Вопрос к Вам: можете поправить? Ожидается простой ответ типа:

1. Да, могу.  Поправил, теперь работает.

2. Не могу.

3. Могу, но не хочу.

4. Могу и хочу, но обстоятельства не позволяют.

Ссылка на сообщение
Поделиться на другие сайты

Непонятно, зачем  Вы перешли на воровской язык...

 

Это не воровской. Это по факту!

 

...............................................

 

Обновление: версия 1.1

 

Изменен способ обработки шаблонов smarty

Ссылка на сообщение
Поделиться на другие сайты

Спасибо!
Новый способ обработки шаблонов прекрасно устраняет замеченный ранее дефект.
 
Продолжаем банкет.
Следующий вопрос - о файлах стилей.
 
В xml-файле прописываю 

	<file name="simpla/design/css/style.css">
		<operation error="skip" info="ReplaceCSS">
            <search position="replace"><![CDATA[width: 290px;]]></search>
            <add><![CDATA[width: 299px;]]></add>
        </operation>
	</file>

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...