20 июня 2019, 09:42 $modx->filterPathSegment($pagetitle) Вопросы / Событие на сохранение объекта migx db 4 +1
11 июня 2019, 09:32 Зачем переключать что-то кроном, если ваш первый комментарий решит проблему. Только обработать условие нужно в шаблоне. Делаем tv поле флажками со значениями от 1 до 7 и назовем например его day_of_sale. И в чанках вывода товаров используем {if (''|date:'N') | in : ($_pls['tv.day_of_sale']|split:'||')} <button>Продается</button> {else} Не продается {/if} И еще по хорошему добавить такое же условие в плагин на событие msOnBeforeAddToCart, если покупка идет через минишоп, чтобы нельзя было вообще в корзину добавить товар switch($modx->event->name) { case 'msOnBeforeAddToCart': $days = explode('||', $product->getTVValue('day_of_sale')); if(!in_array(date('N'),$days)) { $modx->event->output('Вы не можете купить этот товар сегодня.'); } break; } Все условия, естественно, можно сделать сложнее и любыми, но общий посыл думаю ясен. Вопросы / Переключение опции в зависимости от дня недели 6 0 1
21 мая 2019, 14:49 За модуль webpack-assets-manifest спасибо, прикручу к своему конфигу и теперь нормально свяжу с modx. Для разработчиков / Обновление App 38 +2
11 января 2019, 18:18 Можете phpthumbon использовать, там нет такой проблемы с русским языком. Вопросы / Одно и тоже изображение во всех товарах 5 +1
09 января 2019, 09:31 Спасибо за статьи по vuejs. Буквально месяц назад сам заинтересовался им. Применяли ли вы vuejs во frontend в связке с modx, на сколько его рентабельно использовать разработке коммерческих сайтов? На данный момент использовал vue в качестве компонентов корзины-заказа minishop2 на одном сайте, ради эксперимента, но не уверен, что не возникнут проблемы, если fronend будет полностью на vue. В основном интересует поддержка поисковиков и настройка SSR. Был ли подобный опыт? Для разработчиков / modExtra-cli - разворачиваем modExtra из терминала 18 +1
26 декабря 2018, 09:46 Эх, немного не дождался обновления, сам поправил код под новый формат, на рабочих проектах. Те, кто сидят на АТОЛ, отправляйте заявку на смену ФФД сейчас, потому что она будет долго обрабатываться, не как у них заявлено 30-60 минут. Ждем уже несколько дней :) Новости и события / Новый формат фискальных документов (ФФД 1.05) 3 0
14 декабря 2018, 15:20 Предлагаю несколько вариантов решения проблемы. Вариант первый, костыльный. Нужно поставить слэш перед вызовом tv поля. <img src="[[!phpthumbof? &input=`/[[+tv.image]]`&options=`&w=349&h=190&zc=C`]]" alt="[[+tv.image-alt]]"> Вариант второй. Заходите в файл /core/components/phpthumbof/model/phpthumbof/phpthumbof.class.php И меняете строку 220: if (strpos($input,'/') != 0 && strpos($input,'http') != 0) {на if (strpos($input,'/') != 0 && strpos($input,'http') !== 0) { Вариант третий. Ставите компонент phpthumbon от Павла Гвоздя и не знаете горя. Вопросы / pdoPage 8 +1
14 декабря 2018, 13:31 Если $_modx->config.some_id это строка вида 1,18,19, то {if $_modx->resource.id in list $_modx->config.some_id|split} выводим {/if} Вопросы / Fenom - перебор нескольких условий вывода 2 0
11 декабря 2018, 19:19 Судя по исходникам просто так не выйдет. Создайте плагин и повесьте на событие OnManagerPageBeforeRender После вставьте следующий код: <?php switch ($modx->event->name) { case 'OnManagerPageBeforeRender': if($controller->config['controller'] == "mgr/orders") { if ($miniShop2 = $modx->getService('miniShop2')) { $modx->controller->addHtml('<style>.x-grid3-col-order-product-image img {width:40px;display:block;}</style>'); $modx->controller->addHtml(' <script> Ext.onReady(function(){ var originalGetColumns = miniShop2.grid.OrderProducts.prototype.getColumns; miniShop2.config["default_thumb"] = miniShop2.config["defaultThumb"]; Ext.override(miniShop2.grid.OrderProducts,{ getColumns: function () { var imgFields = [ "product_thumb", "product_image" ]; var columns = originalGetColumns.apply(this); for(var i=0; i<columns.length; i++){ if(imgFields.indexOf(columns[i]["dataIndex"]) != -1){ columns[i]["renderer"] = miniShop2.utils.renderImage; columns[i]["id"] = "order-product-image"; } } return columns; } }); }); </script> '); } } break; } Если в системной настройке ms2_order_product_fields указан product_thumb или product_image, то вы увидите уже не ссылку, а картинку. Вопросы / Вывод изображения в Заказы>Покупки (админка Minishop2) 3 +5 5
11 декабря 2018, 08:49 Попробуйте в конце цикла написать $modx->error->reset(); Вопросы / Баг при программной заливке изображений в msGallery 4 0
03 октября 2018, 09:22 Исправил. Вся проблема в том, что строится неверный sql запрос. Изначально он выглядит так (упрощу для читабельности): SELECT * FROM `modx_site_content` AS `modResource` WHERE ( `modResource`.`pagetitle` LIKE '%%' OR `modResource`.`longtitle` LIKE '%%' OR `modResource`.`description` LIKE '%%' OR `modResource`.`content` LIKE '%%' AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'ru' ) По этому запросу у нас выходит, что мы получаем любые ресурсы, в которых содержится подстрока запроса, а если его нет, то вообще все ресурсы. Для того чтобы такого не происходило, нам нужно все условия для фильтрации по запросу сгруппировать, чтобы запрос выглядел так: SELECT * FROM `modx_site_content` AS `modResource` WHERE ( ( `modResource`.`pagetitle` LIKE '%%' OR `modResource`.`longtitle` LIKE '%%' OR `modResource`.`description` LIKE '%%' OR `modResource`.`content` LIKE '%%' ) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'ru' ) Т.е. мы просто оборачиваем наши условия в скобки. Но построением запроса у нас занимается pdoResources. Для того, чтобы он составил такой запрос нам нужно вместо: 'where' => '{ "OR:pagetitle:LIKE":"%' ~ $.get.query ~ '%", "OR:longtitle:LIKE":"%' ~ $.get.query ~ '%", "OR:description:LIKE":"%' ~ $.get.query ~ '%", "OR:content:LIKE":"%' ~ $.get.query ~ '%" }' написать так: 'where' => '[{ "OR:pagetitle:LIKE":"%' ~ $.get.query ~ '%", "OR:longtitle:LIKE":"%' ~ $.get.query ~ '%", "OR:description:LIKE":"%' ~ $.get.query ~ '%", "OR:content:LIKE":"%' ~ $.get.query ~ '%" }]'Квадратные скобки в json запросе как раз и будут группировать наши условия и всё будет работать как надо. Вопросы / [Решено] [pdoResources] - не работает параметр context? 2 +2
20 сентября 2018, 10:34 &suggestionsMaxFilters (по умолчанию 200) — Максимальное количество операций фильтрации (не самих фильтров), для которых работают предварительные результаты. Если операций требуется больше — suggestions отключатся. &suggestionsMaxResults (по умолчанию 1000) — Максимальное количество ресурсов, для которых работают предварительные результаты. Если ресурсов будет больше — suggestions отключатся. https://docs.modx.pro/komponentyi/msearch2/snippetyi/mfilter2 Вопросы / mFilter2, проблема с фильтрацией по TV. 2 +1
13 сентября 2018, 09:44 Спасибо огромное за анализ проблемы. На одном проекте тоже возникала проблема с тормозами, все никак руки не доходили разобраться в причине, думал что какая то карта генерируется при каждом обновлении, поскольку тормозить начинало с увеличением количества товаров. Для разработчиков / Ускоряем массовое обновление ресурсов в 3 раза 5 0
09 августа 2018, 08:43 Черт побери, как лаконично. Я пытался в get это учесть. У меня работает. Насколько я понимаю, проблема в чем: 1) Вызывается метод get класса acProduct, в нем есть вызов loadData 2) В loadData вызывается метод getOne 3) В getOne класса msProduct вызывается родительский метод getOne класса xPDOObject 4) В getOne класса xPDOObject в этом куске кода if ($criteria === null) { $criteria= array ($fk => $this->get($k)); if (isset($fkdef['criteria']) && isset($fkdef['criteria']['foreign'])) { $criteria= array($fkdef['criteria']['foreign'], $criteria); } }вызывается снова метод get из класса acProduct, в котором вызывается loadData и все уходит в цикл. Дмитрий, касательно того, что не проставляются связи без указания их в схеме. Я полагаю, что вы подключаете файл класса через require? Если так, то стоит в главном классе компонента вручную загрузить класс msProduct и тогда acProduct наследует все связи. $this->modx->getService('miniShop2'); $this->modx->loadClass('msProduct'); Вопросы / Проблемы с переопределением метода get 6 0
08 августа 2018, 14:58 Если не ошибаюсь, то модель acProduct при расширении msProduct должна получить все её связи, т.е. эти четыре связи: <aggregate alias="Category" class="msCategory" local="parent" foreign="id" cardinality="one" owner="foreign"/> <composite alias="Data" class="msProductData" local="id" foreign="id" cardinality="one" owner="local"/> <composite alias="Categories" class="msCategoryMember" local="id" foreign="product_id" cardinality="many" owner="local"/> <composite alias="Options" class="msProductOption" local="id" foreign="product_id" cardinality="many" owner="local"/>не нужны, поскольку они уже указаны в msProduct, и их нужно удалить из схемы и перегенерировать модель. Возможно возникает конфликт из-за того, что в acProduct и в родительском msProduct указаны связи с одинаковыми алиасами. Вопросы / Проблемы с переопределением метода get 6 0
08 августа 2018, 14:28 Вам Володя верно написал, используйте его пример. У вас случайно нет сниппета «in», который переопределяет стандартный модификатор fenom? Вопросы / Fenom и оператор присутствия 'in' 11 0
08 августа 2018, 14:21 Можете показать схему таблицы этой модели? И еще конструктор (метод __construct). Есть подозрение, что неверно устанавливаются связи. Вопросы / Проблемы с переопределением метода get 6 0
08 августа 2018, 14:10 Возможно вам подойдет компонент msSetInCart Вопросы / Образец товара minishop2 1 0
08 августа 2018, 08:29 Работать будет, только нужно одинарные кавычки заменить на двойные {$_modx->resource.template | in : [20, 17, 32] ? "ключ найден: {$_modx->resource.template}" : "ключ не найден: {$_modx->resource.template}"} Вопросы / Fenom и оператор присутствия 'in' 11 +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... Да, планируется. Даже чуть больше, чем просто бонусная система)
Делаем tv поле флажками со значениями от 1 до 7 и назовем например его day_of_sale. И в чанках вывода товаров используем
И еще по хорошему добавить такое же условие в плагин на событие msOnBeforeAddToCart, если покупка идет через минишоп, чтобы нельзя было вообще в корзину добавить товар
Все условия, естественно, можно сделать сложнее и любыми, но общий посыл думаю ясен.
Вариант первый, костыльный.
Нужно поставить слэш перед вызовом tv поля.
Вариант второй.
Заходите в файл /core/components/phpthumbof/model/phpthumbof/phpthumbof.class.php
И меняете строку
на
Вариант третий.
Ставите компонент phpthumbon от Павла Гвоздя и не знаете горя.
Создайте плагин и повесьте на событие OnManagerPageBeforeRender
После вставьте следующий код:
Если в системной настройке ms2_order_product_fields указан product_thumb или product_image, то вы увидите уже не ссылку, а картинку.
Изначально он выглядит так (упрощу для читабельности):
По этому запросу у нас выходит, что мы получаем любые ресурсы, в которых содержится подстрока запроса, а если его нет, то вообще все ресурсы. Для того чтобы такого не происходило, нам нужно все условия для фильтрации по запросу сгруппировать, чтобы запрос выглядел так:
Т.е. мы просто оборачиваем наши условия в скобки. Но построением запроса у нас занимается pdoResources. Для того, чтобы он составил такой запрос нам нужно вместо:
написать так:
Квадратные скобки в json запросе как раз и будут группировать наши условия и всё будет работать как надо.
&suggestionsMaxResults (по умолчанию 1000) — Максимальное количество ресурсов, для которых работают предварительные результаты. Если ресурсов будет больше — suggestions отключатся.
https://docs.modx.pro/komponentyi/msearch2/snippetyi/mfilter2
1) Вызывается метод get класса acProduct, в нем есть вызов loadData
2) В loadData вызывается метод getOne
3) В getOne класса msProduct вызывается родительский метод getOne класса xPDOObject
4) В getOne класса xPDOObject в этом куске кода
вызывается снова метод get из класса acProduct, в котором вызывается loadData и все уходит в цикл.
Дмитрий, касательно того, что не проставляются связи без указания их в схеме. Я полагаю, что вы подключаете файл класса через require? Если так, то стоит в главном классе компонента вручную загрузить класс msProduct и тогда acProduct наследует все связи.
не нужны, поскольку они уже указаны в msProduct, и их нужно удалить из схемы и перегенерировать модель. Возможно возникает конфликт из-за того, что в acProduct и в родительском msProduct указаны связи с одинаковыми алиасами.