Аля · 07 октября 2016, 12:31 Получила в итоге свой id шник $resurses = $modx->runSnippet('pdoResources',array( 'parents' => 37, 'tvFilters' => 'status==1,code=='."$code", 'tpl' => '@INLINE [[+id]]' )); echo $resurses; Вопросы / Как узнать id ресурса, зная его tv 3 0 1
Виталий Валерьевич · 08 июля 2016, 13:02 [[!pdoPage? &element=`pdoResources` &loadModels=`ms2gallery` &class=`msResourceFile` &tpl=`@INLINE <a href="[[+url]]" target="_blank"><img src="[[+120x90]]" /></a>` &where=`{"parent": СЮДА ID РОДИТЕЛЯ,"active":1}` &limit=`10` &sortby=`id` &sortdir=`ASC` &leftJoin=`{ "120x90":{"class":"msResourceFile","alias":"120x90", "on":"120x90.parent=msResourceFile.id AND 120x90.path LIKE '%/120x90/'"} }` &select=`{ "msResourceFile":"*", "120x90":"120x90.url as 120x90" }` ]] [[!+page.nav]] Заменить «СЮДА ID РОДИТЕЛЯ» на реальный ID, подставить свои значения по размерам изображений. Да, это пример взятый из документации с pdoPage (постраничной навигацией), можно вывести просто через pdoResources Вопросы / Как правильно вывести несколько галерей? 6 +1 2
Сергей Фещуков · 13 марта 2016, 12:24 Обработчик события успешного добавления товара в корзину: miniShop2.Callbacks.Cart.add.response.success = function(response) { //здесь ваш js-код } /* Но не забывайте, что есть событие изменения количества товара в корзине */ miniShop2.Callbacks.Cart.change.response.success = function(response) { //здесь ваш js-код } Вопросы / JS-обработчик на успешное добавление в корзину 1 0 2
Володя · 20 февраля 2016, 14:28 если у вас динамические страницы, то можно поступить так. создать плагин на vpOnResourceAfterCreate в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок. <?php switch ($modx->event->name) { case 'vpOnResourceAfterCreate': $fastrouter = $modx->getOption('fastrouter', $_REQUEST, array()); /* ваша проверка */ if (false) { $modx->sendErrorPage(); } break; } Новые дополнения и их версии / [VirtualPage] - Виртуальные страницы. 183 0 1
Petro · 04 февраля 2016, 00:52 Нашел Параметр &prepareTVs нужен для ТВ типов file и image, которые содержат ссылку на файл и могут быть связаны с источником медиа. В него нужно указывать список ТВ, или цифру 1 — если вы хотите включить подготовку всех ТВ из includeTVs. Но чего-то с источником &prepareTVs работает не так как написано. Так должно быть? Или я что-то не так понимаю? Вопросы / Источники файлов и pdoResources 2 0 1
Rootiys · 05 ноября 2015, 15:56 В системной настройке ms2_order_product_fields допишите нужные вам поля. Вопросы / Как вывести дополнительную информацию 6 0 1
Андрей Копп · 15 октября 2015, 20:07 Рабочий вариант плагина: <?php switch ($modx->event->name) { case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart': $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties); if (!($miniShop2 instanceof miniShop2)) return ''; // Инициализируем класс в текущий контекст $miniShop2->initialize($modx->context->key, $scriptProperties); $total_count = $miniShop2->cart->status()['total_count']; $tmp = $miniShop2->cart->get(); if ($total_count > 499) { // если 5 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount5 = $product->get('discount5'); $opt = $realPrice*$discount5/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 99) { // если 10 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount4 = $product->get('discount4'); $opt = $realPrice*$discount4/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 29) { // если 30 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount3 = $product->get('discount3'); $opt = $realPrice*$discount3/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 9) { // если 100 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount2 = $product->get('discount2'); $opt = $realPrice*$discount2/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 4) { // если 500 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount1 = $product->get('discount1'); $opt = $realPrice*$discount1/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } else { foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $tmp[$key1]['price'] = $realPrice; } } } $miniShop2->cart->set($tmp); break; }Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету? <script type="text/javascript"> $('#msCart input[name="count"]').change(function(){ var count = $(this).val(); var singlePrice = parseInt($(this).closest('.tab_row').children(".tab_sum").text()); $(this).closest('.tab_row').children(".tab_pr").children("span").html(count * singlePrice); }); </script> Вопросы / Как сделать скидки от количества товара? 13 0 2
Василий Наумкин · 07 августа 2015, 12:16 хотя они соответствуют условию фильтра,Если речь о значении ТВ «по умолчанию» — то их нет в БД физически, так что pdoResources их не выберет. А в остальном должно всё работать. Пошаговые инструкции / Сложная выборка по TV параметрам в getResources 13 0 1
Андрей · 21 марта 2015, 16:31 Ну вот как-то так набросал на скорую руку. -) Создал плагин, повесил на событие OnDocFormSave. <?php if ($modx->event->name == 'OnDocFormSave') { $parentIds = $modx->getParentIds($id, 4, array('context' => 'web')); // Получаем id всех родителей ресурса $res = $modx->getObject('modResource',$id); $curAlias = $res->get('alias'); // Алиас текущего ресурса $cnt = count($parentIds); // Количество родителей if($cnt > 2) { $aliases = array(); // Массив для всех найденных алиасов foreach($parentIds as $v) { if($v == 22 || $v == 0) continue; // Если родитель - контейнер Shop(22) или главный родитель (0) - пропускаем. $obj = $modx->getObject('modResource', $v); $alias = $obj->get('alias'); $aliases[] = $alias; } $resource->set('uri', implode('/',array_reverse($aliases)) . '/' . $curAlias); } else { $resource->set('uri', $curAlias); } $resource->set('uri_override', true); $resource->save(); }Можно еще добавить условие, чтобы урл, таким образом, формировался только для новых ресурсов. Мне пока не нужно. if ($mode == 'new') { // код выше } Вопросы / Убрать часть Url 19 +1 9
nekto · 05 марта 2015, 23:42 Пишу public function prepareListObject(xPDOObject $object) { $data = array(); $data['id'] = $object->id; $data['pagetitle'] = $object->pagetitle; $data['content'] = $object->content; return $data; }Не выводит… Вопросы / RESTful APIs на MODX 2.3 35 0 1
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Заменить «СЮДА ID РОДИТЕЛЯ» на реальный ID, подставить свои значения по размерам изображений.
Да, это пример взятый из документации с pdoPage (постраничной навигацией), можно вывести просто через pdoResources
создать плагин на vpOnResourceAfterCreate
в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок.
Но чего-то с источником &prepareTVs работает не так как написано. Так должно быть? Или я что-то не так понимаю?
Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету?
А в остальном должно всё работать.
Создал плагин, повесил на событие OnDocFormSave.
Можно еще добавить условие, чтобы урл, таким образом, формировался только для новых ресурсов. Мне пока не нужно.
Не выводит…