Здесь собраны несколько хотфиксов, которые исправляют найденные ошибки при установке расширений в OC2. "OCMOD Multiline fix" добавляет функционал, необходимый для нормальной работы многих из наших расширений: мы используем многострочный поиск, чтобы точнее определять правильное место вставки модификаций в однообразный код шаблонов OC2.

OCMOD Multiline fix

В OCMOD нами добавлена поддержка атрибута "quote" (bool) в режиме regex. Он добавляет возможность искать многострочные маркеры в исходном коде. Наши модули часто написаны с использованием нового атрибута. С этим переключателем используется функция preg_quote:

preg_quote() takes str and puts a backslash in front of every character that is part of the regular expression syntax. This is useful if you have a run-time string that you need to match in some text and the string may contain special regex characters.

The special regular expression characters are:

. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

После этого preg позволяет многострочную замену. Обычный режим работы продолжает работать по-старому: просто добавляется опция, с которой становится возможно использовать многострочные замены в ocmod XML.

Рекомендуется всем: стандартный функционал не затрагивается, появляется новый.

Для того, чтобы добавить OCMOD Multiline fix в Опенкарт 2.0.1.1, откройте файл admin/controller/extension/modification.php и перейдите на строку 307. Там вы увидите блок

} else {
    $search = $operation->getElementsByTagName('search')->item(0)->textContent;
    $limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
    $replace = $operation->getElementsByTagName('add')->item(0)->textContent;

Куда надо добавить одну строку (после строки с "$limit"):

} else {
    $search = $operation->getElementsByTagName('search')->item(0)->textContent;
    $limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
    $quote = $operation->getElementsByTagName('search')->item(0)->getAttribute('quote');
    $replace = $operation->getElementsByTagName('add')->item(0)->textContent;

И чуть ниже, сразу после блока

// Limit
if (!$limit) {
    $limit = -1;
}

Добавьте:

// Quote
if ($quote == 'true') {
    $search = preg_quote($search);
}

Удлинение поля, где хранится XML

На одном из больших модулей мы быстро упёрлись в лимит и начали ловить странные ошибки, поэтому примените install.sql для удлинения поля, где хранится XML. И ваши XML перестанут обрезаться:

ALTER TABLE `oc_modification` CHANGE COLUMN `xml` `xml` MEDIUMTEXT NOT NULL;

OC2 extension installer bugfix

Если при попытках использовать Extension Installer вы получаете сообщения об ошибках "JSON Error ...", попробуйте это исправление. Проявляется почему-то не на всех хостингах. Если у вас и так всё работает после прописывания параметров FTP-доступа в настройках магазина - не надо ничего исправлять и перезаписывать.

  • Исправлена ошибка "PHP Warning: Invalid argument supplied for foreach() ... on line 333";
  • Подавление вывода предупреждений "PHP Warning: ftp_mkdir(): Create directory operation failed ... on line 338" (возникает всегда - при попытках создания существующих каталогов, таких как catalog, admin, admin/controller и т.д.);
  • включение пассивного режима FTP для устранения ошибки "PHP Warning: ftp_put(): Illegal PORT command ... on line 345"
Совместимость
Опенкарт/ocStore 1.5.x Нет
Opencart 2.0 Opencart 2.0.1.1, 2.0.2.0, 2.0.3.1
Замена файлов В архивах содержатся наборы изменённых файлов и DIFF-файлы
2016-12-23

Подскажите пожалуйста как скачать это дополнение, то ли заработался и где то не дочитал но не пойму есть описание но ни ссылки на скачивание ни покупку ничего не нашел. простите возможно за глупый вопрос... Заранее благодарен за помощь и ответ.


----

В описании все изменения. Там всего 2 раза нажать Ctrl-C и дважды вставить Ctrl-V. Я не писал для этого модуль. И кнопка убрана, потому что файлов никаких нет.

2016-09-16

Опишите хоть в 2-х словах как пользоваться новыми атрибутами!

2016-04-01

совместим с ocStore 2.1.0.2

2015-09-28

If module you use require the Multiline fix or you want to use multiline search patterns in your OcMod extensions - you need this fix. If not - it not required.

In 2.0.3.1 you need to find

$search = trim($operation->getElementsByTagName('search')->item(0)->textContent);
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
$replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);

and replace it with next code:

$search = trim($operation->getElementsByTagName('search')->item(0)->textContent);
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
$quote = $operation->getElementsByTagName('search')->item(0)->getAttribute('quote');
$replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);

2015-09-25

Is it required to install OCMOD Multiline fix in Open Cart 2.0.3.1 ?
I downloaded the file modification.php from admin/controller/extension/modification.php but the file does not contain the text which you have suggested to change.
Here it shows $trim = $operation->getElementsByTagName('search')->item(0)->getAttribute('trim');
instead of
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
Please suggest how to proceed.

Написать отзыв

Если Вы задаёте вопрос, оставьте свой e-mail, чтобы мы могли с Вами связаться.

Примечание: HTML разметка не поддерживается! Используйте обычный текст.

    Плохо           Хорошо

Opencart 2.0.1.1 bugfix: OC2 Extension installer

  • Автор: OpencartJazz
  • Модель: oc2011-bugfix-extension-installer
  • Наличие: Нет файлов для скачивания
  • Free

См. также