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

Перевод Opencart 1.5.x

Русский перевод Opencart: v1.5.0.5 - 1.5.5. Информация о других переводах (русский, украинский язык)

Quickcheckout: one-page simple checkout

Quickcheckout: one-page simple checkout

Clipboard Catcher для линуксоидов (bash, xclip)

19 февраля 2015 г. Ruslan Brest Linux » HowtoОбсудить

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

При запущенной утилитке всё, что копируется в клипборд, дублируется в текстовый файл. Очень удобно, когда предстоит много копи-паста: позволяет избавиться от Alt-Tab, Ctrl-V, Alt-Tab после каждого Ctrl-C.

Далее...

Прикрутил Markdown Extra к Opencart 2.0.1.1

Писать описания стало в разы легче: Summernote (в Opencart 2.x), как и любой другой WYSIWYG HTML редактор (CKEditor в Опенкарт 1.5.x), мне больше мешают, чем помогают. Единственное место, где при работе над контентом изредка возникает желание переключиться с режима исходников на "кнопочки" - вставка ссылки вокруг выделенного текста и может быть ещё списки.

Всё остальное время - это либо яростная борьба с лишними тегами (те же `br`, например), лишними переводами строк, лишними наборами спанов, стилей и шрифтов (иногда удлиняющими исходник втрое), ненужными указаниями размеров шрифта и с массой всего ещё. Н-е-у-д-о-б-н-о. Я очень многое после них исправлял, а иногда делать это приходилось после каждого исправления, потому что у этих WYSIWYG редакторов свой взгляд на форматирование и представление кода.

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

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

Ну и сам по себе Markdown гораздо лаконичней HTML исходников. Работать с ним мне намного удобней.

При этом, что очень важно, ничто не мешает использовать HTML в описаниях, если есть необходимость! То есть переезд с HTML на Markdown в описаниях товаров и категорий оказывается безболезненным. Старые описания показываются как и показывались.

OCJ: в акаунте у купленных файлов теперь видна дата последнего обновления

В магазине расширений OpencartJazz.com мелкое, но удобное улучшение: в акаунте покупателя, в "Мои заказы / Файлы для скачивания" теперь видна дата обновления файлов.

Следить за изменениями стало проще!

В данный момент следить за изменениями можно по этой дате, а дальше смотреть `history.txt` в скачанном архиве. На очереди - дублирование списка обновлений в отдельной вкладке описания товара и подписка по RSS. Думаю, так за обновлениями следить будет ещё легче.

P.S. Стандартно Опенкарт выводит там никому не нужную дату первого создания файла для скачивания, которая никогда не обновляется.

Совсем забыл: Opencart SeoPro для OC2 с кешированием и мультиязыками в URL

31 января 2015 г. Ruslan Brest Web development » E-commerce » OpenCart6

Что-то я совсем забыл написать: у нас уже давно есть и прекрасно работает (на Opencart 2.0.1.1) SeoPro для OC2!

"Из коробки" есть:

  • кеширование
  • мультиязык в URL (site.com/ru/tratata/, site.com/en/tratata/)

Возможно, что-то ещё, что я уже не очень помню. Это основное. Я активно пользуюсь версией 2.0.1.1 для живого магазина, благодаря чему русский перевод и SeoPro/OC2 ежедневно тестируются и шлифуются. Перевод во многих местах вычитывается в контексте и исправляется по мелочам, сеопро уже не трогаем - работает стабильно. Хотя может ещё про дефолтный язык что-то подумаем. Позже.

Github: https://github.com/rb2/opencart-seopro

OpencartJazz: OCJ SeoPro для Опенкарт 2.0.x

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

Устройство Opencart 2.0 (OC2): работа инсталлятора, модификаций и модулей

27 января 2015 г. Ruslan Brest Howto » E-commerce » OpenCart2

Мда… Синтаксические ошибки на этапе формирования модификации запросто укладывают весь сайт. OCMOD формирует файл с ошибкой, дальше ВСЁ… ФИНИШ. Пока не пофискишь - не поедет. Учитывая, что синтаксическая ошибка может запросто возникнуть при конфликне модулей, система будет слабо автоматизируемой. Должен работать квалифицированный админ. Сценарий примерно такой:

Далее...

Opencart 2.0.1.1 bugfix: default language fallback

Если вы пользуетесь не только английским языком, то вам наверняка попадались отсутствующие строки наподобие text_home, button_continue, button_login.

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

Но всё равно не учтён один момент. Далее...

Процессы в мелких webdev командах

Форум для обсуждения внутренних тем не взлетел за полгода. Очень хотелось уйти от неструктурированных обсуждений в скайпе и иметь что-то более самодокументируемое. Ближе к email, но более централизованное и разделённое на потоки-топики. Форум, в общем. Нормально подходит.

Но вот увы. Теоретически очень хорошо подходит под идею. На практике - не работает. Точно так же у нас не взлетели и багтрекеры (issue tracker) в гит-репозиториях (Github, Bitbucket). Но там мне они и самому неудобны: хочется доступности в оффлайне, как весь репо с работой - рядом и перед носом. А оно где-то далеко и оторвано.

Что работает?

Сумбурные обсуждения по скайпу плюс быстрая фиксация кем-то важных огрызков разговоров в файлы - в общем репо или в соседней с репо-папкой локальной "репо.MNT" (MNT - от слова maintenance, обслуживание). Забыли оперативно записать - считай потеряли. Потом фиг найдёшь. Поиск в скайпе сделан для отъявленных мазохистов.

Ах, ну да - гит-репозитории как бы подразумеваются. Любые распределённые VCS, но мы только с гитом работаем. Возможность кипучей работы оффлайн и синхронизация с удалёнными репами -- киллерфича.

Такие дела.

На сегодня наверное всё, хотя у меня ещё есть что сказать про тудушки на flat files и "наколенных" вики на россыпях Markdown файлов. Но пусть утрясётся и проверится подольше.

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

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

Починил ошибку при отправлении 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

Подарок тем пользователям 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"

Далее...