Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

OCMOD Order - порядок выполнения модификаторов


OCMOD Order - порядок выполнения модификаторов


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

 

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

 

Инструмент будет полезен разработчикам и исполнителям при решении конфликтов OCMOD

 

DEMO 2x

DEMO 3x

 

Особенности:

- управление очередностью прямо в списке модификаторов
- приоритет выполнения: сначала по указанному порядку, потом по имени
- автоматически создает и использует отдельную таблицу "modification_order" в БД
- не меняет файлы движка и его стандартные таблицы
- работает на ajax, использует OCMOD

 

совместим с ocStore / OCSHOP - Opencart.PRO / Opencart версий 20x - 303х

 

совместим с редакторами модификаторов:

 

opencart Brazil
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22015

 

opencart-templates
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22318

 

 

Установка 20x - 2200:
1. Загрузить файл ocmod-order.ocmod.xml в Дополнения > Установщик дополнений
2. Обновить кеш модификаторов в Дополнения > Модификаторы (Менеджер дополнений)


Установка 230x:
1. Скопировать файл ocmod-order.ocmod.xml в папку system
2. Дважды обновить кеш модификаторов в Дополнения > Модификаторы (Менеджер дополнений)

 

если после первого обновления возникнет ошибка Fatal error: Cannot redeclare class ModelExtensionModification
- нажать F5 и обновить кеш модификаторов повторно

данная проблема связана с некорректной работой движка при изменении файла model/extension/modification.php через OCMOD
обсуждалось здесь

 

Установка 3x:

Внимание! Если ранее использовалась версия для 3х с копированием модификатора в папку system - сначала нужно его удалить

 

1. Загрузить архив ocmod-order-3x.ocmod.zip в Extensions > Installer (Дополнения > Установка дополнений)
2. Дважды обновить кеш модификаторов в Extensions > Modifications (Дополнения > Менеджер дополнений)
3. Обновить кеш шаблона (theme cache) в Dashboard > Developer Settings (Панель управления > Настройки разработчика)


Не забывайте обновлять кеш модификаторов для применения изменений при смене порядка выполнения

 

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

Для актуального информирования о статусе режима обслуживания и его управлением рекомендуется использовать мод Maintenance Mode Warning

 

 

Другие дополнения:

-----------------------------

Category Tags - теги всех категорий товара

Autocomplete 3x - улучшенное автозаполнение в админке для OC 3x

ManufacturerDescription - описание и метатеги для производителей

CartKeeper - хранение и управление корзинами покупателей


  • Автор
  • долучення
    17.09.18
  • Категорія
  • Системные требования
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • ocStore
    3.0
    2.3
    2.2
    2.1
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
    Opencart.pro 2.1
    OcShop 2.0.3.х
  • Звернення до сервера розробника
    Нет

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Здравствуйте

 

нет

отрицательные значения понижают приоритет, т.е будет обработан в конце

 

отключаются модификаторы как и раньше - стандартной кнопкой рядом

Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

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

не срабатывает нормально JavaSript

 

У меня получается свернутая форма внизу страницы. См. рисунок.

 

 

Javascript_on_order_ocmod.png

Надіслати
Поділитися на інших сайтах


в firefox, chrome и opera работает без проблем

 

ищите причину в вашем браузере, его настройках/установленных плагинах

пробуйте другой браузер

 

Надіслати
Поділитися на інших сайтах

Пробовал 4 браузера на своем компе и Хром на компе коллеги. Отключал даже в антивирусе WEB-проверку.

Ситуация не изменилась.

Буду копать дальше ...

Змінено користувачем VadimOd
Надіслати
Поділитися на інших сайтах


Лог модификатора.

Смущает вот такая запись:

LINE: 125
CODE: $results = $this->model_extension_modification->getModifications(array('sort'=>'date_added', 'order'=>'ASC'));
NOT FOUND - OPERATION SKIPPED!

 

Весь кусок лога (из лога Модификаторов касаемо данного модификатора) спрятан под спойлером.

 

Spoiler

 


MOD: OCMOD Execution Order
CODE: include_once(modification($file));
LINE: 164

FILE: admin/view/template/extension/modification.tpl
CODE: <td class="text-right"><?php echo $column_action; ?>
LINE: 80
CODE: <?php echo $modification['date_added']; ?></td>
LINE: 104
CODE: <?php echo $footer; ?>
LINE: 218

FILE: admin/controller/extension/modification.php
CODE: $results = $this->model_extension_modification->getModifications();
LINE: 125
CODE: $results = $this->model_extension_modification->getModifications(array('sort'=>'date_added', 'order'=>'ASC'));
NOT FOUND - OPERATION SKIPPED!
CODE: public function refresh
LINE: 73
CODE: 'author'          => $result['author'],
LINE: 705
CODE: $data['sort_date_added'] = $this->url->link('extension/modification',
LINE: 786

FILE: admin/model/extension/modification.php
CODE: $this->db->query("INSERT INTO " . DB_PREFIX . "modification SET code = '" . $this->db->escape($data['code']) . "', name = '" . $this->db->escape($data['name']) . "', author = '" . $this->db->escape($data['author']) . "', version = '" . $this->db->escape($data['version']) . "', link = '" . $this->db->escape($data['link']) . "', xml = '" . $this->db->escape($data['xml']) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
LINE: 9
CODE: public function deleteModification($modification_id) {
LINE: 17
CODE: public function getModification(
LINE: 36
CODE: $sql = "SELECT * FROM " . DB_PREFIX . "modification";
LINE: 57
CODE: $sql = "SELECT * FROM " . DB_PREFIX . "modification";
LINE: 62
CODE: 'author',
LINE: 71
CODE: if (isset($data['start']) || isset($data['limit'])) {
LINE: 97

FILE: admin/language/ru-ru/extension/modification.php
CODE: <?php
LINE: 6

FILE: admin/language/en-gb/extension/modification.php
CODE: <?php
LINE: 6

 

 

 

 

Змінено користувачем VadimOd
Надіслати
Поділитися на інших сайтах


3 часа назад, VadimOd сказал:

Смущает вот такая запись:

 

пусть не смущает, это для ocStore 23023

 

а по поводу "неработает" писал уже неоднократно:

раз я при доступе у вас в админку могу выставить приоритет, а вы нет - модуль здесь не при чем

ищите причину в браузере / пк / сети / положении звезд тд

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах

  • 2 months later...

Модуль обновлен до версии 1.03

- добавлена поддержка Opencart 3x

- мелкая правка js для лучшей совместимости с различными браузерами

Надіслати
Поділитися на інших сайтах

  • 1 month later...
3 часа назад, pimur сказал:

 

не знаю, какие версии там были раньше

но то, что сейчас скачал по ссылке - похоже на бред

архив modificationmanager-2.3.0.1.ocmod.zip для 2200-2302 содержит лишь скрипты codemirror и модификатор по сути из одной строки

  <file path="admin/controller/extension/installer.php">
	<operation>
      <search index="0"><![CDATA[$json['error'] = sprintf($this->language->get('error_exists'), $modification_info['name']);]]></search>
      <add position="replace"><![CDATA[$this->model_extension_modification->deleteModification($modification_info['modification_id']);]]></add>
    </operation>
  </file>

то ли чего не знаю, то ли лыжи у кого-то из нас с автором не едут :?

 

в целом - времени на подобное у меня нет, все в ваших руках

Надіслати
Поділитися на інших сайтах

  • 8 months later...

Модуль обновлен до версии 1.04
- оптимизация кода
- добавлена совместимость с редакторами модификаторов:

 

opencart Brazil
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22015

 

opencart-templates
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22318

 

- смена варианта установки для движков 3х

Если ранее использовалась версия для 3х с копированием модификатора в папку system - сначала нужно его удалить!

Надіслати
Поділитися на інших сайтах

В 07.10.2018 в 17:00, zhu4koff сказал:

планируется ли "подружить" модуль с этим или аналогами?

 

В 17.02.2019 в 22:14, pimur сказал:

 

его поддержка добавлена, но лучше использовать именно аналог от opencart Brazil

 

да, вариант от opencart-templates - красивый, удобный, более функиональный

 

но в текущем виде использовать его версию 2.3.0.5 (для движков 2200-2302)
не рекомендуется, так как она содержит ряд проблем:

 

1) при установке перезаписывает оригинальные файлы движка
admin\controller\extension\modification.php
admin\model\extension\modification.php

 

чем это чревато?
возможными конфликтами с другими дополнениями, вносящими свои правки через ocmod в эти файлы
и невозможностью отключения правок в данных файлах (придется перезаписывать эти файлы их оригиналами для восстановления)

 

2) в версиях для 2200 и выше есть кнопка с возможностью импорта (появляется при наличии файлов ocmod.xml в папке system)

при ее нажатии происходит импорт всех существующих в папке system файлов модификаторов *.ocmod.xml напрямую в БД
при этом сами файлы модификаторов удаляются

 

что с одной стороны логично, для исключения проблем их дублирования
с другой - никаких предупреждений и описаний данного функционала

хотя модификаторы в папку system обычно помещают не просто так и подобный перенос нарушит очередность их применения, что может привести к конфликтам различных дополнений

 

но это ерунда по сравнению с тем, что этот импорт может привести к сбою системы модификаторов
потому что при импорте автор использует преобразование HTML-сущностей XML-кода модификаторов в соответствующие им символы


public function import() {
...
$xml = html_entity_decode(file_get_contents($file), ENT_QUOTES, 'UTF-8');


и если в файле модификатора встречаются html-сущности - например в названии мода, имени автора, ссылке и тд - то нажатие этой кнопки приведет к импорту некорректных данных в БД и сбою системы модификаторов

 

и для восстановления придется подключаться к бд и удалять неверно импортированные данные в таблице oc_modification

  • +1 2
Надіслати
Поділитися на інших сайтах

  • 3 months later...
В 04.10.2018 в 16:59, VadimOd сказал:

Лог модификатора.

Смущает вот такая запись:

LINE: 125
CODE: $results = $this->model_extension_modification->getModifications(array('sort'=>'date_added', 'order'=>'ASC'));
NOT FOUND - OPERATION SKIPPED!

 

тоже такая запись есть в логах

 

В 04.10.2018 в 20:09, AlexDW сказал:

пусть не смущает, это для ocStore 23023

 

версия как раз ocStore 2.3.0.2.3 , такой строчки в исходном файле нет

конечно, всё работает и без этого not found, но, тем не менее, хочу навести порядок в логах :)

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

Подскажите какие первыми будут запускаться модификаторы со значением 0 или 1,2,3 ? И что будет если выставить несколько модификаторов с одинаковым значением 1 и несколько с 2.

Надіслати
Поділитися на інших сайтах


3, 2, 1, 0, -1, -3 и тд

от большего к меньшему

В 18.09.2018 в 01:11, AlexDW сказал:

модификаторы будут выполняться согласно приоритету: сначала по присвоенному порядку, потом по имени.

 

Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

А к модификаторам из папки system применяется? У меня шаблон TechStore, модификаторы шаблона находятся в папке system. Решил добавить свой модификатор, отменяющий шаблоновые. Создал его в базе стандартным методом.

В итоге назначить порядок могу только для модификаторов из базы. Модификаторы из system не вижу в разделе "Модули/Расширения - Модификаторы", где расставляется приоритет загрузки...

OC Version 2.3.0.2 (rs.7)

Надіслати
Поділитися на інших сайтах


57 минут назад, VladOst сказал:

В итоге назначить порядок могу только для модификаторов из базы. Модификаторы из system не вижу в разделе "Модули/Расширения - Модификаторы", где расставляется приоритет загрузки...

правильно

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

 

про очередность применения модификаторов

 

Надіслати
Поділитися на інших сайтах

  • 1 year later...

Вот такая ошибка на ocStore 2.3

ERROR: FILE NOT FOUND!
FILE: domain/admin/view/template/extension/modification_list.tpl
MOD: OCMOD Execution Order

И данного файла действительно нет, модуль отображается, и проблему несовместимости не решает.

 

Надіслати
Поділитися на інших сайтах


1. это не столько ошибка, сколько лог применения модификаторов

и отсутствие данного файла лишь означает что у вас не установлен один из двух поддерживаемых модом редакторов модификаторов

что на работу самого мода не влияет

 

2. мод позволяет управлять очередностью применения модификаторов

и в ряде случае помогает избежать конфликтов между различными модификаторами путем смены порядка их выполнения

 

но не является панацеей и не поможет, если проблема глубже

особенно при взаимоисключающих правках одного и того же кода разными модификаторами

Надіслати
Поділитися на інших сайтах

1 час назад, AlexDW сказал:

1. это не столько ошибка, сколько лог применения модификаторов

и отсутствие данного файла лишь означает что у вас не установлен один из двух поддерживаемых модом редакторов модификаторов

что на работу самого мода не влияет

 

2. мод позволяет управлять очередностью применения модификаторов

и в ряде случае помогает избежать конфликтов между различными модификаторами путем смены порядка их выполнения

 

но не является панацеей и не поможет, если проблема глубже

особенно при взаимоисключающих правках одного и того же кода разными модификаторами

Ок, благодарю за разъяснение, будем думать над конфликтом модификаторов.

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Скажите, пожалуйста, я правильно понимаю, что столбец "Порядок" означает "Приоритет". У какого модификатора выше цифра, то исполняется первее. У меня вышло именно так. Модификатор с Порядком 3 выполнился перед модификатором с порядком 1.

 

 

 

Надіслати
Поділитися на інших сайтах

да

В 17.02.2020 в 12:38, AlexDW сказал:

3, 2, 1, 0, -1, -3 и тд

от большего к меньшему

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.