Николай Ланец
16 февр. 2014 г., 17:10

ShopModxBox-2.2.0-beta

Вышла новая версия сборки для интернет-магазинов на базе MODX Revolution — ShopModxBox-2.2.0
Как и предыдущая версия — это всего-лишь промежуточный небольшой апдейт. Из основных изменений:
1. Обновлен пакет modxSite, главная фишка которого — процессор для обработки форм (на замену formIt). 2. Добавлена форма обратной связи на страницу Контакты, сразу с каптчей (добавлен пакет modCaptcha). 3. Шаблон default переименован в shopmodx (чтобы исключить конфликты с шаблоном default из самого пакета modxSite). 4. Процессоры переделаны на getdata-процессоры из компонента modxSite (эти процессоры перенесены и доработаны из пакета shopModx, а там они будут в дальнейшем удалены). Ну и некоторые мелкие багфиксы.
Смотрите изменения на гитхабе.
UPD: Если у кого-то не будет работать каптча (будет постоянно говорить, что неверно код указан), обновите modCaptcha до версии 1.0.1 минимум. Такое особенно возможно на modxcloud.com
К слову, тестовый магазин можно попробовать относительно просто установить на modxcloud.com Вот прямая ссылка на снимок. Вот здесь я подробно расписывал, как накатывать туда снимки сайтов: modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/45.html Просто регистрируете себе бесплатный дев-аккаунт, затягиваете туда снимок и устанавливаете. Напоминаю, что по умолчанию логин/пароль админа — admin/admin
Сборка отличная. Решил переделать сайт с Joomla+virtuemart на shopmodx устраивает всё, очень гибкие настройки. Только в одном моменте у меня возник вопрос: как вывести еще одну цену товара, зависящую от количества?
По поводу меняющихся цен: общий механизм будет в любом случае основываться на TV-параметрах. В этом будет полезен вот этот коммент: modxclub.ru/blog/voprosy-spetsyalistov/309.html#comment2906 Но тонкостей здесь очень много, и нельзя будет это просто так сделать. Основная причина кроется в том, что даже сам биллинг магазина надо дорабатывать. В настоящий момент после того, как товар добавлен в корзину, при добавлении такого же товара будет меняться только его кол-во, но не цена. То есть подсчет суммы потом идет стоимость*количество. В данном случае вам придется весьма серьезно похардкодить (что в принципе допускается изначальной концепцией). Давайте немного теории по этому поводу: Данные товаров в корзине — это записи объектов OrderProduct. Когда добавляется первая запись — тогда происходит создание объекта OrderProduct (соответственно со значениями product_id, price, quantity и т.п.) (выполняется процессор create). А когда меняется число товаров в корзине (простой пересчет или добавление еще этих же товаров), тогда происходит просто обновление записи (процессор update). Эти процессоры расширяют базовые процессоры modObjectCreateProcessor и modObjectUpdateProcessor процессоры соответственно. Нам это важно понимать, так как там будут очень полезные функции beforeSet() и beforeSave(), в которых будет доступен текущий объект записи. К пример, на добавление товара мы хотим пересчитать сумму товара в зависимости от количества (к примеру, дать скидку 10%, если товаров более 10). Код будет такой:
public function beforeSave(){ if($this->object->get('quantity') >= 10){ $price = $this->object->get('price') * 0.9; $this->object->set('price', $price); // Специально выполнять сохранение здесь не надо, // объект будет сохранен дальше автоматически } return parent::beforeSave(); }
как обновить версию 2.1.0-beta до 2.2.0-beta?
Эти сборки изначально предполагались с высоким риском отсутствия обратной совместимости, так что непосредственно механизма обновления с одной версии до другой не предусматривается. Это заготовка, и конечный проект может быть серьезно доработан/переработан, в результате чего обновление чаще всего будет приводить к простой поломке сайта. Но в вашем случае полное обновление особо и не требуется. Просто обновите пакет modxSite, установите пакет modCaptcha и все. Вам только может понадобиться правка/создание шаблона, если вы захотите сделать форму обратной связи, а так же процессор обработки формы. Уточню: работа с шаблонами и процессорами — все это требует навыков программирования.
У меня нет пакета modxSite…
Значит надо его скачать и установить. Он есть в официальном репозитории.
Делаю конструктор на javascript. В ресурсе есть макет, на который клиенты смогут загружать свои изображения ( сувенирная продукция на заказ) Для ресурса сделал дополнительное поле в котором будет сохраняться объект JSON. Как в админке, в списке товаров заказа, сделать ссылку на этот ресурс с передачей в GET запросе информации из этого дополнительного поля?
Вам здесь понадобится знание javascript и очень пригодится знание ExtJS. А так надо будет подправить файлик, добавив в него свою логику формирования ссылки на страницу товара. Только не забудьте добавить свою колонку TVшки в список полей записи, а то эти данные просто не будут доступны в объекте record.

Добавить комментарий