По поводу меняющихся цен: общий механизм будет в любом случае основываться на 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(); }
Давно уже хотим сделать. Руки не доходят.
Как идея — было бы неплохо добавить кнопочку сохранения некоторых снипетов которые помогают при разработке, например вызов процессора или по отдельности всякие полезные открывки кода, так-же в консоли очень удобно тестить разрабатываемые MODXсниппеты, интегрируемые стороние скрипты, агрегаторы и т.д., такая функция не будет лишней, что добавит Console более гибкости. и сократит количество открытых в винде окон нотпадов или сторонних IDE/Текстовиков
Имееться ввиду сохрание внутри Окружения MODX предварительно назначая Id и кастомное имя и кнопка вставки сниппета(выпадающий список(имена) с выбором сохраненного сниппета) прямо в textarea компонента console.
Я уже недалекий, но все-еще чайник — Считаю что это актуально.
Subj. Welcome!
Сборка отличная. Решил переделать сайт с Joomla+virtuemart на shopmodx
устраивает всё, очень гибкие настройки.
Только в одном моменте у меня возник вопрос: как вывести еще одну цену товара, зависящую от количества?
Здорово! то, что надо!
Выпустил новый пакет modxSite-1.2.0-beta
Главная новинка — процессор на обработку форм (на замену formIt). Конечно, в нем гораздо меньше готовых функций, чем в формите, но он вполне годится ему на замену. Под катом покажу применение на примере обновленной сборки ShopModxBox-2.2.0
Итак, главное назначение этого процессора — обработка входящих данных, проверка обязательных полей, выполнение субпроцессора, если данные все заполнены верно (к примеру, процессор оформления заказа), а так же рассылка уведомления пользователям из указанных групп пользователей.
Рассмотрим реальную задачу, которую этот процессор выполнял в обработке формы обратной связи на странице контактов в сборке магазина:
1. Проверка обязательных полей (емейл, имя, сообщение, каптча).
2. Отправка уведомления пользователям спецгруппы.
Сам по себе базовый процессор обработки форм не имеет обязательных полей, но в нем предусмотрена функция, в которой эти поля указываются. Что мы делаем, для реализации нашей формы?
1. Мы пишем свой расширяющий процессор, в котором перечисляем обязательные поля, устанавливаем значение группы пользователей на основе системной настройки, которые получат новые сообщения, указываем проверять каптчу (будет автоматически использован пакет modCaptcha), а так же указывает Smarty-шаблон, который будет использоваться для оформления письма менеджерам (необходимо будет его добавить в основной шаблон сайта. Шаблон по умолчанию есть в самом пакете modxSite, но он не подключен).
2. Создаем Smarty-шаблон, в котором прописываем вызов нашего процессора.
Особое внимание предлагаю обратить на блок вывода каптчи.
Немного инфы по юзабилити на заметку: (для всех, кто ненавидит каптчи (как и я)). В общем, если в форме используется каптча, то в случае отправки формы, даже если есть ошибки в форме, если каптча введена верно, то не создавать опять форму с каптчей (типа вводите картинку опять, раз руки такие кривые), а создавать хидден-поле со значением этой каптчи без вывода картинки, которая изменит значение в сессии. То есть если пользователь правильно ввел раз каптчу, то дальше она ему не нужна.
А теперь самое интересное: данный процессор имеет огромное преимущество над формитом и прочими решениями тем, что обработка всех полей происходит именно в процессоре, и он возвращает ассоциативный массив ошибок. Таким образом его можно использовать хоть в обычной форме, хоть с Ajax-ом, хоть в консоли отлаживать. К примеру, в новой сборке магазина выполните вот такой код:
<?php print '<pre>'; ini_set('display_errors', 1); $modx->switchContext('web'); $modx->setLogLevel(3); $modx->setLogTarget('HTML'); $modx->invokeEvent('OnHandleRequest'); $namespace = 'modxsite'; if(!$response = $modx->runProcessor('web/forms/feedback', array( "email" => "test@test.loc", "fullname" => "test", "message" => "test", "captcha" => "wlfnq", ), array( 'processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/', ))){ print "Не удалось выполнить процессор"; return; } print_r($response->getResponse());
И вы увидите результат.
Вышла новая версия сборки для интернет-магазинов на базе 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