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

Не работают OCMOD Модификаторы


Arion
 Share

Recommended Posts

Здравствуйте! Прошу помочь разобраться в проблеме. Полностью перестали работать модификаторы (которые в админке в разделе Модули/Расширения - > Модификаторы). Список модификаторов есть, они включаются и выключаются, НО при обновлении кэша модификаторов на сайте не происходит абсолютно никаких изменений, как будто модификаторов никаких и не установлено. Причём если я создаю файл ***.ocmod.xml и добавляю его в /system, то всё работает как и нужно, но стоит этот же код модификатора установить через админку, он совсем не работает. Не знаю в какую даже сторону копать... Ошибок в логах никаких....И не обратил внимание после чего это началось. Opencart 2.3.0.2

Link to comment
Share on other sites


6 минут назад, Soong сказал:

фикс окмода стоит? или удалили ненароком?)

Фикс который localcopy.ocmod.xml тоже перестал работать и я его загрузил в /system

Link to comment
Share on other sites


начать с просмотра логов модификаторов

 

периодически встречаю сайты со странным багом в работе системы модификаций

а именно - в некорректной обработке системой OCMOD директивы ABORT в модификаторах

 

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

на проблемных же - происходит полное прерывание работы всей системы OCMOD, т.е. до обработки последующих модов уже не доходит

 

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

возможно ваш случай

  • +1 1
Link to comment
Share on other sites

14 часов назад, AlexDW сказал:

начать с просмотра логов модификаторов

 

периодически встречаю сайты со странным багом в работе системы модификаций

а именно - в некорректной обработке системой OCMOD директивы ABORT в модификаторах

 

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

на проблемных же - происходит полное прерывание работы всей системы OCMOD, т.е. до обработки последующих модов уже не доходит

 

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

возможно ваш случай

 

Огромное спасибо!)) Поменял abort на skip -  заработало)) Сам бы никогда не додумался)

Link to comment
Share on other sites


  • 8 months later...
В 26.11.2018 в 21:50, AlexDW сказал:

некорректной обработке системой OCMOD директивы ABORT в модификаторах

Сегодня как раз наткнулся на этот баг, при чём именно ваш модификатор от ExtendedSearch и привёл к его проявлению.

 

Похоже, что проблема вот здесь (файл /admin/controller/extension/modification.php):

if ($error == 'abort') {
  $modification = $recovery;
  // Log
  $log[] = 'NOT FOUND - ABORTING!';
  break 5;
}

А конкретно в "break 5" - вместо выхода из цикла обработки команд текущего модификатора оно выходит из цикла обработки всех модификаторов.

Вместо 5 должно быть 4.

 

Пойду отправлю Дэниэлю багрепорт, хотя уверен, он скажет, что так и должно быть, а я просто не разбираюсь в сортах говна.

  • +1 2
Link to comment
Share on other sites


забавное в том, что в vqmod это как раз нормально работало

и задумка-то изначально была сделать так же, но вышло как всегда

 

копался поверхностно в свое время

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

плюнул и сейчас просто убираю abort

Link to comment
Share on other sites

3 минуты назад, AlexDW сказал:

но вроде есть нюансы в разных версиях

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

 

 

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

лучше бы метку поставил :) было бы надежней, чем считать уровень брейков

goto?

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

 

Link to comment
Share on other sites


14 минут назад, Dotrox сказал:

Обычно goto указывает на необходимость рефакторинга...

бред... Это вбито в голову последователями процедурного программирования..

Почему то в асме никто не говорит что jump это плхо :)

Link to comment
Share on other sites

18 минут назад, Dotrox сказал:

А там есть альтернативы?

а чем плох goto?

Вот исходя из недавнего обсуждения...
Что мол вызов метода(функции) - это затраченное время..

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

Так что определись - что лучше простой и понятный goto или сложные условия прохождения цикла

Link to comment
Share on other sites

3 минуты назад, chukcha сказал:

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

Так условия уже ведь есть, просто они выходят в окно :)

 

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

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

 

 

14 минут назад, chukcha сказал:

Вот исходя из недавнего обсуждения...
Что мол вызов метода(функции) - это затраченное время..

Это экономия на спичках.

Link to comment
Share on other sites


18 минут назад, Dotrox сказал:

это плохая идея сразу по нескольким причинам (память, время выполнения).

Это делается один раз, а не по мере вызова..

 

Link to comment
Share on other sites

19 минут назад, chukcha сказал:

Это делается один раз, а не по мере вызова..

Я знаю. В этом же основное концептуальное отличие от vQmod.

 

Вопрос в другом: в магазине с кучей модификаторов, либо особо огромными модификаторами генерация кеша может просто завалиться после добавления очередного модификатора. Оно ж и модифицированные файлы все в памяти держит до завершения полного обхода модификаторов и их применения.

Link to comment
Share on other sites


  • 4 months later...

такая же ситуация возникла. абортились все модификаторы.

 

В 26.11.2018 в 22:50, AlexDW сказал:

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

возможно ваш случай

нашёл проблемный - отключил. точнее даже два. один из которых от AlexDW - AO Tooltips.

 

В 19.08.2019 в 06:30, Dotrox сказал:

А конкретно в "break 5" - вместо выхода из цикла обработки команд текущего модификатора оно выходит из цикла обработки всех модификаторов.

Вместо 5 должно быть 4.

 

это 100% корректное решение ситуации?

модулей много будет устанавливаться, кто знает, сколько ещё раз с такой проблемой столкнусь

 

или может есть какие-то другие фиксы?

ocStore 2.3

Link to comment
Share on other sites


  • 1 year later...
В 19.08.2019 в 06:30, Dotrox сказал:

Похоже, что проблема вот здесь (файл /admin/controller/extension/modification.php):


if ($error == 'abort') {
  $modification = $recovery;
  // Log
  $log[] = 'NOT FOUND - ABORTING!';
  break 5;
}

А конкретно в "break 5" - вместо выхода из цикла обработки команд текущего модификатора оно выходит из цикла обработки всех модификаторов.

Вместо 5 должно быть 4.

 

просто заменить 5 на 4ре и будет работать?

Edited by wwizard
Link to comment
Share on other sites


20 годин назад, wwizard сказав:

просто заменить 5 на 4ре и будет работать?

Да, по крайней мере в той версии, где я смотрел.

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.