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

Web development

Новая система модулей 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

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

Знакомим `phpcs` (PHP CodeSniffer) и Sublime Text со стандартом оформления кода FuelPHP

UPD: При ближайшем рассмотрении оказалось, что отличий от PSR2 больше, чем табы вместо пробелов. Чтобы сделать автоматическую проверку, надо ещё многое переделать, а где-то и дописать. Так что я поспешил: с опубликованным вариантом проверять синтаксис PHP CodeSniffer'ом на соответствие правилам пока что неудобно.


Самый простой способ - поставить в редакторе/IDE правила автоформатирования PSR-2 и заменить использование пробелов в отступах на табуляцию (этим стандарты оформления кода, принятые в FuelPHP, отличаются от PSR-2). Заодно можно включить отображение пробелов и табуляций.

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

Для автоматизации проверки кода существуют разные инструменты: примеры (и важность с удобством применения этого непосредственно в редакторах/IDE) есть в статье http://philsturgeon.co.uk/blog/2013/08/php-static-analysis-in-sublime-text.

Обычно они дают возможность запустить проверку, либо настроить её и показ ошибки при сохранениях файла. Последнее очень удобно, т.к. помогает исправлять обнаруженные ошибки по ходу дела и без дополнительных усилий. Ниже - рецепт по автоматизации для ST3 (а может и ST2, если плагин совместим).

Знакомим phpcs и ST3 со стандатами оформления кода FuelPHP

  • sudo apt-get install php-codesniffer
    • phpcs -i - показать список установленных стандартов. Нужен psr2 (PSR-2)
    • Если его нет - обновляем полностью CodeSniffer (просто скопировать оттуда папку с PSR2/1 стандартом недостаточно)

    • Это, конечно, грубовато - обновлять напрямую, в обход apt-get , но он считает, что установлена самая свежая версия и более правильного способа я сейчас не знаю.

      cd ~/Downloads
      wget https://github.com/squizlabs/PHP_CodeSniffer/archive/master.zip
      unzip PHP_CodeSniffer-master.zip
      cd PHP_CodeSniffer-master
      sudo cp -r --parents -t /usr/share/php/PHP/ CodeSniffer CodeSniffer.php scripts
      cd scripts
      sudo mv /usr/bin/phpcs /usr/bin/phpcs.ORIGINAL
      sudo cp -t /usr/bin/ phpcs
    • в PSR-2 используются пробелы вместо табуляций и phpcs на них ругается. Сделаем свой стандарт "FuelPHP", основанный на PSR2. Рядом с папкой PSR2 создаём FuelPHP, в которой достаточно одного файла FuelPHP/ruleset.xml :

    • <?xml version="1.0"?>
      <ruleset name="FuelPHP">
       <description>The FuelPHP coding standard.</description>
       <!-- Include the whole PSR-2 standard -->
       <rule ref="PSR2">
       <!-- Redefine 2.4 Indenting -->
       <!-- Code MUST use an indent of tabs, and MUST NOT use 4 spaces for indenting. -->
       <exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
       </rule>
       <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
      </ruleset>

      Проверяем: phpcs -i

      The installed coding standards are Zend, FuelPHP, PHPCS, PSR2, PSR1, Squiz,
      MySource and PEAR
  • install ST3 plugin "Sublime Phpcs" http://www.soulbroken.co.uk/code/sublimephpcs/
  • check config, see HOWTO: http://philsturgeon.co.uk/blog/2013/08/php-static-analysis-in-sublime-text
    • только мы вместо "psr2" теперь напишем свой "FuelPHP" в юзеркониге:

    • Содержимое /home/rb/.config/sublime-text-3/Packages/User/phpcs.sublime-settings :

      {
          "show_debug": true,
          "phpcs_executable_path": "/usr/bin/phpcs",
          "phpcs_additional_args": {
              "--standard": "FuelPHP",
              "-n": ""
          },
      }

Автоматическая проверка в ST3 тепрь работает.

Также можно использовать отдельно: phpcs --standard=fuelphp home.php .

Opencart, GNU GPL и модули

Opencart использует лицензию GNU GPL v3. Это одна из наиболее жёстких лицензий, накладывающая ограничения на закрытие исходного кода как производных программ, так и расширений (модулей, плагинов).

Ниже несколько цитат из GNU GPL FAQ, касающихся лицензирования и условий распространения модулей и расширений GPL-программ.

Далее...

[FWD] Сравнение производительности четырёх JS-библиотек

Сравнение производительности четырёх JS-библиотек: native Javascript, Google Closure, jQuery, ExtJS.

Результаты там наглядные и поразительные. jQuery оказывается заметным тормозом.

См. также:

Далее...

Создатель PrestaShop: встреча во Львове 26 июля 2013 года

Создатель PrestaShop Бруно Левек 26-го июля 2013 года прилетает в Украину, где проведет во Львове встречу с разработчиками, представителями веб-студий, фрилансерами.

Формат встречи — закрытый семинар. Участие абсолютно бесплатное, но чтобы получить приглашение, вам нужно пройти предварительную регистрацию и заполнить простую форму.

Если посетить встречу нет возможности, но накипели какие-то важные и неотложные вопросы, то вы можете их задать с помощью этой же формы.

PhantomJS - утилита для тестирования дизайна на разных экранах

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

Базируется на движке WebKit. Технически - это обычный броузер, но без интерфейса пользователя. Результаты рендеринга страницы и Javascript можно записать в виде картинки.

Testing your responsive design with PhantomJS.

Там описана установка из репозиториев для Ubuntu и MacOSX и пример использования -- результаты в виде скриншотов тоже можно разглядеть. Я с инструментом не работал, так что вряд ли смогу что-то добавить к тому, что написано в указанной статье.

Что нас ждёт в Opencart 2.0

Конца разработке Opencart 2.0 пока ещё не видно, но сейчас уже можно выделить основные нововведения и готовиться к изменениям.

Что нас ждёт в новой версии Опенкарт?

  • HTML5,
  • адаптивный дизайн (Twitter Bootstrap),
  • наведение красоты и использование шрифтов с иконками (Font Awesome) вместо мелкой графики,
  • добавление полей в форму регистрации из админки (не видел, не знаю, о чём речь),
  • а также "встроенный vqmod": новые пункты меню "Extension installer" и "Modifications" в меню расширений.

Также 10 июня было сказано, что Paypal и Amazon заплатили за внесение каких-то новых фишек, но на гитхаб это пока не выложено. Делается какой-то другой компанией и будет объединено позже.

UPD: это оказались:

Далее...

Opencart CE (Community Edition)

Давно я ожидал появления альтернативной версии репозитория Опенкарт с более адекватным ведением дел. Вообще-то думал, что он чуть раньше появится. Но чтобы его объявили прям в "новостях и анонсах" на форуме -- не ожидал. Смело :) Я думал, будет как-то менее заметно и в одном из репо десятка-другого активных разработчиков и комиттеров, разочаровавшихся в политике DK. Респект rph :)

Вообще-то в какой-то момент, когда Qphoria начал бранчи в гитхабе изучать, я поверил, что не всё потеряно. Но потом опять началось, ДК ничуть не изменился. Workflow в гитхабе также остался прежним.

В общем, на днях (21 июня) пара квалифицированных разработчиков (rph /opencarthelp/ и AddCreative как минимум) объявили о рождении "community edition" форка (ответвления от основного репозитория Opencart). Судя по списку планируемых вопросов -- с этими людьми "кашу сварить" можно. И скорее даже нужно. Очень надеюсь, что там дело пойдёт намного лучше по части совместной разработки.

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

Чтобы было чуть более понятно, надо пояснить, как сейчас ведутся дела.

Далее...

Что даёт установка минимальной цены расширений продавцам и покупателям

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

  • установка нижней планки (минимальной цены шаблонов);
  • и кол-во продаж за определенный период.

Ни слова про рейтинг почему-то, хотя в теме сразу же появились логичные напоминания об этом. По крайней мере, на этот счёт можно быть спокойным.

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

Меня это рассмешило. И вот почему.

Далее...