По поводу меняющихся цен: общий механизм будет в любом случае основываться на 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 Итак, главное назначение этого процессора — обработка входящих данных, проверка обязательных полей, выполнение субпроцессора, если данные все заполнены верно (к примеру, процессор оформления заказа), а так же рассылка уведомления пользователям из указанных групп пользователей. Рассмотрим реальную задачу, которую этот процессор выполнял в обработке формы обратной связи на странице контактов в сборке магазина:
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