Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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 - хранение и управление корзинами покупателей


  • Добавил
  • Добавлено
    18.09.2018
  • Категория
  • Системные требования
  • Метод активации
    Без активации
  • 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
Link to comment
Share on other sites

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

 

нет

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

 

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

Link to comment
Share on other sites

  • 2 weeks later...

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

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

 

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

 

 

Javascript_on_order_ocmod.png

Link to comment
Share on other sites


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

 

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

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

 

Link to comment
Share on other sites

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

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

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

Edited by VadimOd
Link to comment
Share on other sites


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

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

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

 

 

 

 

Edited by VadimOd
Link to comment
Share on other sites


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

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

 

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

 

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

  • 2 months later...

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

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

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

Link to comment
Share on other sites

  • 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>

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

 

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

Link to comment
Share on other sites

  • 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 - сначала нужно его удалить!

Link to comment
Share on other sites

В 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
Link to comment
Share on other sites

  • 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, но, тем не менее, хочу навести порядок в логах :)

Link to comment
Share on other sites


  • 4 weeks later...

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

Link to comment
Share on other sites


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

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

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

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

 

Link to comment
Share on other sites

  • 2 weeks later...

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

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

OC Version 2.3.0.2 (rs.7)

Link to comment
Share on other sites


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

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

правильно

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

 

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

 

Link to comment
Share on other sites

  • 1 year later...

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

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

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

 

Link to comment
Share on other sites


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

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

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

 

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

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

 

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

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

Link to comment
Share on other sites

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

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

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

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

 

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

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

 

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

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

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

Link to comment
Share on other sites


  • 2 months later...

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

 

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.