четверг, 24 октября 2013 г.

X-Cart 5 : underscore.js

Итак, после некоторых раздумий, добавили в код X-Cart 5 библиотеку underscore.js, к уже имеющимся jQuery и jQuery UI.

четверг, 17 октября 2013 г.

X-Cart 5 : Новый виджет поисковых форм для списков

В очередной бете X-Cart 5 появился спец.виджет для отображения поисковых форм, которые обычно показываются над списками в интерфейсе администратора магазина.

вторник, 30 июля 2013 г.

XCN: CleanURL для новой сущности

Итак - если у нас есть некая новая сущность, для которой надо прикрутить clean URL (например - некие сообщения, messages), то нам надо:

среда, 3 июля 2013 г.

XCN: Динамическое изменение конфига

В X-Cart Next основные настройки приложения хранятся в специализированном древообразном хранилище на базе класса \XLite\Core\ConfigCell. Кроме того, само хранилище кэшируется и отдается в результате методом \XLite\Model\Repo\Config::getAllOptions(). Соответственно - если что-то надо динамически в этом хранилище изменить - есть два основных пути.

воскресенье, 30 июня 2013 г.

XCN: Нутрянка авторизации

Авторизация пользователя в X-Cart Next заперта в классе \XLite\Core\Auth. Сей класс является синглтоном и вызов его методов выглядит как
\XLite\Core\Auth::getInstance()->methodName();
В классе заперта валидация пароля и пользователя, а также генерация подписи от пароля.

четверг, 27 июня 2013 г.

Git: Изменение последовательности коммитов

Итак, есть некий сайт/магазин и необходимо сделать кустому. Сливаем сайт, заводим в git, коммитаем кустому. А потом оказывается, что сайт за это время изменился. Сливаем сайт и коммитаем изменения в репозитарий. Может так получится, что "затрётся" кустома (в истории коммитов она, конечно, останется).
Задача, перенести кустому поверх изменённого сайта.

среда, 26 июня 2013 г.

XCN: Запрос по HTTP

Для таких запросов из PHP в X-Cart Next используется \PEAR2\HTTP\Request , обернутый в \XLite\Core\HTTP\Request.
Обертка практически пустая. Единственное, что она добавляет - перехват исключений и их логгирование. Ну и позволяет перекрывать этот класс в модулях, добавляя или меняя какой-то функционал. В остальном работа с этим классом не отличается от PEAR2-класса.

воскресенье, 23 июня 2013 г.

XCN : Отложенные задачи

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

четверг, 20 июня 2013 г.

XC4: Белый экран при заливке апгрейда-пака с XC45х на XC46x

Кратко


перед заливкой апгрейд-пака
*  отключить модуль 'Customer Reviews'
или
* включить опцию 'Use new module initialization routine'
или
* закомментарить вызов func_customer_reviews_init();  в
modules/Customer_Reviews/init.php


Подробнее

Если после заливки апгрейд пака XC4.5.x-XC4.6.0 в директорию X-Cart у вас появился белый экран или 500 (Internal Server Error)

и у вас включен модуль Customer_Reviews и отключена опция
'Use new module initialization routine'

то вы можете решить эту проблему так
1) Временно на время апгрейда закомментиров вызов
//func_customer_reviews_init(); в
файле
modules/Customer_Reviews/init.php


2)или временно отключить модуль Customer_Reviews через восстановленную админку или sql запросом
"update xcart_modules set active='N' where module_name='Customer_Reviews';" (при этом надо почистить кэш директорию var)

3)или временно включить опцию 'Use new module initialization routine' через восстановленную админку или sql запросом
"update xcart_config set value='Y' where name='use_new_module_initialization';"

четверг, 13 июня 2013 г.

XCN: Отладка по-быстрому

Если в X-Cart Next надо поотлаживаться, то лучше всего это делать, используя стандартный логгер, при помощи такой конструкции:

\XLite\Logger::getInstance->logCustom('debug', 'some message');

суббота, 25 мая 2013 г.

XCN : Изменение БД

Часто задают такие вопросы - "Что делать, если надо не просто добавить поле в существующую модель, а, например, добавить новый индекс?" Или "Как убить существующий индекс?".
Да, простым декорирование класса это не сделать - через него можно добавить поле или связь с другой моделью и только. Но и тем не менее способ есть.

четверг, 23 мая 2013 г.

XCN : Dev модуль

Во - начата разработка Dev модуля для разработчиков под X-Cart Next. Весь инструментарий отладки вынесен в него и вся его настройка вынесена из etc/config.php в интерфейс администратора. Так что - софт стал слегка быстрее и отлаживаться стало удобнее - не надо лазить в etc/config.php, можно прям в интерфейсе администратора все включать.
В будущем там же будет визард для быстрого создания скелетов модулей.

среда, 22 мая 2013 г.

HTTP headers в javascript

Если приключилась такая беда, что есть javascript-приложение на клиенте и ему надо узнать, какие HTTP headers передает браузер и, соответственно, какие языки он поддерживает, какое сжатие - то для этого были мной найдены некоторое время назад следующие сервисы:

XCN : Кэширование виджетов

В X-Cart Next где-то с версии 1.2.0 присутствует такая система, как кэширование виджетов. Она позволяет сильно повысить быстродействие сайта, но только при том условии, что разработчики ее используют в своих виджетах :) Система основывается на аргументах виджета, из которых строится ключ ячейки, где и хранится контент виджета. Подробности - ниже.

вторник, 21 мая 2013 г.

X-Cart Next 1.2.3 зарелизен

Мы выпустили очереной релиз, практически минорный :)
Официальная новость - тут

Особо хочу отметить новые модули. Подробнее - ниже.

понедельник, 20 мая 2013 г.

X-Cart Next : Общие методы репозиториев моделей

Тем, кто работает в X-Cart Next с моделями - помните, с какими-бы моделями вы не работали, у вас всегда есть следующий минимальный набор методов:

Must have: elements.less

Тем, кто верстает в LESS, весьма пригодится elements.less , дабы не писать свои велосипеды типа .border-radius(...), .box-shadow(...) и пр.

Кеширование метаданных моделей в Phalcon

Кто пользует phalcon и в частности, его модели, не забываем кэшировать инфу о метаданных :)
см. Caching Meta-Data
Ну а кто пользует кэширование APC и php-fpm - то незабываем, что кэш APC - он с делением на пользователей. И у php-fpm часто пользователь свой. Так что - почистить кэш можно, только запустив apc_clear_cache() именно из-под php-fpm.

Виджет страницы vs. виджет-который-всегда-со-мной

Чем в X-Cart Next виджет страницы отличается от виджета, который есть на КАЖДОЙ странице? Да собственно тока методом getAllowedTargets