Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

OpenCart

Opencart 2.0.1.1 bugfix: отправление отзывов к товару

12 января 2015 г. Ruslan Brest Howto » Web development » E-commerce » OpenCart9

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

В результате было непонятно, что вообще произошло, пользователи отправляли по несколько отзывов (самые прилежные), а лог ошибок опенкарта заполнялся строчками, причину и место возникновения которых хрен угадаешь:

Далее...

Opencart 2.0.1.1 bugfix: 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.

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

Также описано на OpencartJazz: OCJ :: OCMOD Multiline fix. Там прикреплён изменённый файл, но пока его можно скачать только после регистрации и "покупки" за 0.00. Будет время - починю это неудобство.

diff --git a/admin/controller/extension/modification.php b/admin/controller/extension/modification.php
index 086a65c..7159ffb 100644
--- a/admin/controller/extension/modification.php
+++ b/admin/controller/extension/modification.php
@@ -307,12 +307,18 @@ class ControllerExtensionModification extends Controller {
 } 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);
+	}
 
 	// Log
 	$match = array();

Opencart 2.0.1.1 bugfix: OC2 extension installer

26 декабря 2014 г. Ruslan Brest Howto » Web development » E-commerce » OpenCart1

Подарок тем пользователям OC2, которые ловят ошибки JSON Error при попытках использовать стандартный установщик расширений в OC2 (при правильно прописанных параметрах в настройках магазина на вкладке 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"

Далее...

Русский язык / русский перевод для Opencart v2.0 - обновление до версий v201x

Информация для покупателей модуля.

Доступен перевод для версий Opencart 2.0.1.0 и 2.0.1.1 (v201x).

По ходу его подготовки были замечены мелкие ошибки и опечатки в переводе для 2.0.0.0. Небольшое обновление для 2.0.0.0 планируется завтра. Завтра же наверняка будут ещё некоторые обновления по 2.0.1.1 (остался список тудушек).

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

Единственное что может быть критично - пользователям версий 2.0.0.x в файле catalog/language/russian/mail/customer.php надо изменить строку:

$_['text_welcome'] = 'Добро пожаловать и благодарим Вас за регистрацию в %s!'; // %s - название магазина

Общий список изменений можно видеть в history.txt.

Русский язык / русский перевод для Opencart v2.0

Выпущен русский перевод для Опенкарт версий v2.0.

Из интересного - есть автоматическая установка средствами Opencart Extension Installer (новый инструмент в версии 2.0). Вроде и работает, но местами у некоторых клиентов встречаются грабли и проще поставить по-старинке, вручную. Одно можно сказать точно: если вы этой фишкой пользуетесь и настроили себе, установка других ocmod-модулей происходит без проблем, -- то и с установкой нашего модуля русского перевода проблем не будет: установка происходит буквально в один-два шага (выбрать архив и подтвердить установку).

Также сделали модуль, который помогает переводить ресурсы в базе на русский и обратно на английский, если потребуется. Это все статусы и география, которые устанавливаются с демо-данными.

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

Ветка поддержки модуля на форуме здесь - пишите об ошибках.

4 года экспериментов с сообществом - поддержка бесплатного русского перевода для Опенкарт 1.5.x, считаю законченным. Интерес (в смысле дай) велик, а поддержка и совместная работа - практически на полном нуле. Поэтому перевод для версии 2.0 решено сделать платным, за символическую цену в $2 (WMZ, WMU, П24, Paypal, карточки). Владельцам QIWI и Yandex-Денег - тоже в оплату картами VISA/MC мгновенного выпуска.

Перевод для v15x оставлен на гитхабе, а ветки версии v2.0 перенесены в приватный репозиторий.

Модуль также можно купить на opencart.com: Russian language translation v2.0.x / русский перевод, там цена $10 по техническим причинам.

[opencart][BUG] Возможно назначить для категории родителя из своей же подветки

Ой, вэй! Наткнулись на фееричный косяк. Родителем категории можно назначить какой-то из подчинённых узлов той же ветки. Например, перенести `Category` с верхнего уровня в `Category > Monitors > test1`.

Баг присутствует в oc1564 и ocs15512. Другие версии и сборки не проверялись.

(oc - Opencart, ocs - ocStore, как обычно.)

Думаю, чтобы пофиксить по-быстрому, достаточно в GUI админки исключить из списка автодополнения в поле родительской категории все подчинённые узлы ветки.

Будет время - допишу здесь рецепт.

CKeditor в Opencart 2.0 заменили на Summernote

13 августа 2014 г. Ruslan Brest Web development » E-commerce » OpenCart2

В Opencart 2.0 в админ-части заменили WYSIWYG редактор: CKeditor убрали, вместо него теперь используется Summernote.

http://hackerwins.github.io/summernote/

Появился в доступе релиз Opencart v2.0 ALPHA

8 августа 2014 г. Ruslan Brest E-commerce » OpenCartОбсудить

Доступен релиз Opencart v2.0 ALPHA.

Скачать можно здесь: https://github.com/opencart/opencart/releases

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

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

Также оказалось, что у Opencart появился ещё один багрекер помимо Github-а: https://opencart.atlassian.net/

Красивенький, конечно. Но решение странное - лучше бы они разобрались и обустроили свой Github Issues раздел (метки, milestones), и начали наконец-то там вести нормальную работу, связывая коммиты с номерами задач и багов. Хотя, конечно, они вполне могут связать гитхаб со своим атлассианом и с ним коммиты связывать через номера задач. Но думаю, это из области несбыточных надежд - увидеть нормальный процесс по более-менее общепринятым практикам.

Зарегистрировавшись в новом багтрекере, появится возможность

  • создавать задачи (багрепорты)
  • комментировать
  • голосовать за задачи

С плагином "Jira Capture" можно облегчить создание багрепортов: сделать скриншот, откомментирвоать проблему и даже включить информацию об окружении (операционная система, версия броузера, размер окна, экрана, плагины и т.п.)

Фичреквесты (предложения) в этом багтрекере не приветствуются, только ошибки. Для запросов на новые идеи Opencart планирует сделать ещё один сайт, где наверное будет система голосования за то или иное предложение. Подробностей не сообщают, пишут лишь, что это будет сделано после выпуска релиза версии 2.0, чтобы сделать роадмап для v2.1.

vQmod, ocmod

Qphoria написал, что сейчас будет рассматривать и сравнивать ocmod" со своим vQmod. OCMOD - это новый встроенный механизм модификаций опенкарт, аналог vQmod. Если "ocmod" окажется достаточно хорош, vQmod вряд ли будут портировать на v2.0:

We are looking at ocmod and vQmod to see what has changed and if it is worthwhile to port vQmod to 2.0 or not or if ocmod is good enough.

Также напомню, что разработчик JNeuhoff уже предлагал Даниэлю готовое решение, которое интегрировало vQmod в Opencart. Было это несколько месяцев назад. Но здесь вечное "мы пойдём своим путём" - сначала декларировалось, что "ocmod" будет сильно упрощённой версией синтаксиса vQmod (синтаксис несовместим при этом). Потом постепенно по мере натыкания на разные ситуации и вопросы от разработчиков возможности "ocmod" всё болше и больше подтягивались к vQmod... Бред, в общем. То же самое, но с другими колсами, где преимущества и зачем убирать работающий инструмент, заменяя его на тот, под который все расширения переписывать придётся, -- вопрос открытый. Я смысла таких решений не понимаю.

На форуме пока предостерегают от бурного использования OCMOD, поскольку он ещё будет подвергаться модификациям.

Немного о новой системе модификаций написано в Github's Opencart Wiki:

Opencart разослал продавцам расширений предупреждение о недопустимости ссылок на свои магазины

Opencart.com разослал всем продавцам расширений, которые пользуются для продажи разделом расширений на указанном сайте, письмо с предупреждением о недопустимости рекламирования своих сайтов в описаниях модулей и возможности покупки расширений напрямую, минуя отчисления площадке Opencart.com.

Отчисления в 20% от цены платных модулей идут на поддержку развития Opencart. Поэтому наличие в описаниях ссылок на сайты разработчиков, где модули можно приобрести напрямую или со скидкой (призывы к этому некоторые авторы модулей пишут прямо в описаниях, размещая таким образом их на сайте opencart.com), владельцами Опенкарт категорически не приветствуются.

Разрешаются ссылки на демо-сайты и на сайты техподдержки (саппорт-тикеты). Но озвучено условие, что на этих сайтах не должно быть возможности купить модули. Дополнительно просят использовать target="_blank" для своих ссылок.

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

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

Одно из таких писем я уже видел несколько дней назад - в конце расположен блок с рекламой нескольких (то ли 4, то ли 6) модулей. Выглядит HTML-письмо симпатично, мне понравилось.

Описание этого рекламо-предложения слегка различается (на данный момент я встречал его трижды: в блоге, в описании функции "Promote Extension" в акаунте продавца, теперь вот ещё в письме). В основном пишут о рекламе на главной странице. Но в блоге, если не ошибаюсь, было и про мелькающие блоки вверху страниц категорий и поиска.

Цена такой рекламы - $50 в сутки (по $35 на выходных). В день можно рекламировать до трёх своих модулей. Выбирается модуль и дата.

Похоже, в штате у них появился человек, ответственный за дизайн (заметно и по дизайну v2.0, и по улучшающимся письмам) и развитие продаж.

Новая система модулей OCMOD - Opencart Modification System

Начало появляться описание формата и отличий новой системы расширений OCMOD от использовавшейся ранее разработки: широко известного VQMOD, автором которой является Qphoria.

Суть системы расширений осталась та же самая, но XML форматы VQMOD и OCMOD отличаются, поэтому модули придётся переписывать. OCMOD - упрощённая версия VQMOD. В админке также добавлены удобства для загрузки новых OCMOD-расширений (Extensions / Extension Installer).

Например, основные отличия OCMOD от VQMOD: имеются операторы Replace, Before, After, Regex, Offset, Limit, отсутствуют ignoreif, log.

Отличается и работа offset.

Модули могут состоять из одного файла (должен иметь расширение .ocmod.xml) или нескольких, упакованных в архив с расширением .ocmod.zip. В архиве могут находиться XML, SQL и PHP файлы:

  • upload/*
  • install.sql
  • install.php
  • install.xml

Все файлы из папки `upload` будут скопированы в папку, куда установлен Opencart.

В install.sql можно добавить все необходимые SQL-запросы (create, drop, insert, update), которые должны быть исполнены при установке модуля. Каждый запрос должен заканчиваться символом ;.

Если модуль требует каких-то дополнительных действий для установки, PHP код надо разместить в файле `install.php`.

Остальные подробности можно будет узнать позже -- либо по мере появления новой документации по адресу https://github.com/opencart/opencart/wiki/Modification-System, либо путём изучения появляющихся модулей.

См. также:

  • Override Engine + VQmod for OpenCart 2.0 (J.Neuhoff). Это решение позволяет получить как новую систему Override Engine (OE), так и поддержку всех старых vQmod расширений (OE хорош именно для модулей, а вот для изменения шаблонов способ vQmod пока наиболее подходящий; плюс совместимость). Всё доступно свободно для скачивания и эксперименто. Предлагали Даниэлю. Кстати, автор vQmod (Qphoria) тоже высказался в топике за встраивание этого варианта OE+vQmod в Opencart 2.0. Он сказал: "Согласен. Я хочу, чтобы OE включили в ядро Opencart, а vQmod остался внешним расширением, каким он всегда был. OE или правильная система хуков -- это что-то, что ядро должно предлагать из коробки, тогда как vQmod был создан лишь как костыль, исправляющий отсутствие чего-то подобного в ядре. vQmod до сих пор имеет огромный смысл в Opencart, но я не вижу смысла в добавлении урезанного его варианта вместо того, чтобы сделать правильную систему."
  • SafePatch -- альтернатива vQmod

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