Иван Бочкарев · 25 ноября 2019, 09:05 2 0 Можно так: {set $material = $_modx->resource.project_material | split:'||'} {foreach $material as $item} {set $filter[] = 'project_material=='~$item} {/foreach} {'!pdoResources' | snippet : [ 'parents' => 7, 'limit' => 2, 'tvPrefix' => '', 'tvFilters' => $filter, 'showLog' => 0, 'sortby' => 'RAND()', 'includeTVs' => 'project_image,project_price,project_area,project_material,project_size,project_bedrooms,project_bathrooms,location', 'tpl' => '@FILE chunks/projects/project.tpl', ]} Вопросы / pdoResources Fenom Where LIKE 14
Евгений Борисов · 11 августа 2019, 14:18 2 +5 Универсального средства нет. Все сугубо индивидуально — Различные капчи обходятся при помощи rucaptcha.com/ или подобных сервисов — От явных спамеров которые используют proxy листы/tor помогает www.stopforumspam.com — Для защиты от матов и прочего бреда можно составить черный список слов — Чтобы дополнительно отсеять спамеров с временными почтовыми ящиками можно составить список доменов github.com/TicketeStartup/temp-mail-check/blob/master/disposable-email-domains.json естественно, он будет не полный. И этот способ подойдет скорее для защиты от левых регистраций. В любом случае, если вас решили целенаправленно заспамить, то это сделают. Но в 90% случаев данных мер достаточно. Вопросы / Защита AjaxForm от спама конкурентов 5
Василий Столейков · 05 июля 2019, 17:50 1 +1 Оставлю тут комментарий, может кому пригодится. Можно сделать свой модификатор, которым будет удобно пользоваться: Создаём сниппет под названием tv Вставляем в него следующий код: <?php $output = ''; if(!empty($options)) { $lang = $modx->getOption('localizator_key'); if(empty($input)) $input = 1; if($res = $modx->getObject('locTemplateVarResource', array( 'contentid' => $input, 'tmplvarid' => $options, 'key' => $lang ))) { $output = $res->get('value'); } } return $output;Используем на сайте везде где нужно в виде модификатора: // устанавливаем в переменную {$tv_name} локализованное значение тв-параметра. {set $tv_name = 1|tv:3} // где 1 это ресурс, а 3 это id тв параметра. Возможно и мне пригодится на будущее скопипастить, чтобы не писать заново, хотя времени на написание ушло 2 минуты. Новые дополнения и их версии / Localizator - поддержка TV параметров 183
Володя · 06 июня 2019, 14:34 2 0 {var $name} {set $count = 0} {foreach $array as $value} {include ++$count} <div class="col-md-6">{$value.pagetitle}</div> {/foreach} {/var} Вопросы / fenom, поместить результат foreach в переменную 3
Андрей · 04 июня 2019, 17:21 1 +3 Была такая задача, правда товар выбирался не по чекбоксам, а указывался в TV с множественным выбором Создаем TV product_of_the_day с типом ввода Список (множественный выбор), в возможных значениях там указываем @SELECT `pagetitle` AS `name`,`id` FROM `[[+PREFIX]]site_content` WHERE `published` = 1 AND `deleted` = 0 AND (`template` = 16) // Тут вместо 16 ваш id шаблона с товаром Дальше плагин на событие OnLoadWebDocument Суть такова — товар выбирается по номеру дня недели, т.е. в списке первый товар будет на понедельник, второй на вторник и т.д. <? // Плагин на событие OnLoadWebDocument $products_of_the_day = $modx->getObject('modTemplateVarResource', [ 'contentid' => 4, // id ресурса к которому привязан TV 'tmplvarid' => 80 // id TV ]); unset($_SESSION['product_of_the_day']); if ($products_of_the_day) { $day = date('N'); $products_of_the_day = explode('||', $products_of_the_day->get('value')); if (!empty($products_of_the_day) && isset($products_of_the_day[$day - 1])) { $_SESSION['product_of_the_day'] = $products_of_the_day[$day - 1]; } } В шаблоне получаем ID товара дня, можем делать с ним что угодно, в вашем случае подставить в вызов сниппета {set $product_of_the_day_id = $.session.product_of_the_day} Вопросы / Менять товар каждые 24 часа 5
Евгений Webinmd · 30 мая 2019, 18:53 1 +1 1) подключить сервис $pdoTools = $modx->getService('pdoTools');2) заменить вызов чанка $modx->getChunkна $pdoTools->getChunkЭто в самом сниппете, продублируй и заменяй Новые дополнения и их версии / [FileAttach] Загрузка файлов на сайт во frontend 115
Илья Уткин · 23 апреля 2019, 20:14 1 +1 В плагине доступна переменная $mode — new или upd Вопросы / Как в плагине понять, открывается на редактирование или создается ресурс? 4
Игорь Гришанов · 23 марта 2019, 16:33 3 +2 Павел абсолютно прав) Только что делал таким образом Порядок действий такой 1) Находишь файл core/components/minishop2/model/minishop2/msorderhandler.class.php 2) находишь там функцию getCost и заменяешь ее тем что в приведенной Павлом ссылке 3) добавляешь скрипт из той же ссылки на страницу Оформления заказа в самом низу 4) выводишь ссылку в нужном месте <span id="deliveryprice">Стоимость доставки: <span id="ms2_delivery_cost"></span> руб.</span> это будет цена доставки 5) если еще надо цену заказа БЕЗ доставки то добавляешь в скрипт в функцию miniShop2.Callbacks.Order.getcost.response.success такие строки например var cartcost = response.data['cost'] - rdc; $('#ms2_cost').text(cartcost);тогда ссылка на цену без доставки будет так <span id="ms2_cost"></span> Вопросы / Пункты "Цена", "Цена доставки". 13
Павел Гвоздь · 04 февраля 2019, 17:09 3 +4 docs.sencha.com/extjs/3.4.0/ — Самый лучший источник, я только его использовал и использую. Новые дополнения и их версии / msGallerySearch - загрузка изображений в галерею minishop2 по ссылке и Google поиск картинок 44
Юрий · 23 января 2019, 19:28 1 +1 Либо переопределить сам класс, написав кастомный, либо переопределить только метод getCost в кастомном классе, что логичнее. Метод подключения кстомного класса из инструкции не работает. Поэтому в графу «класс обработчик заказа» нужно вписать название вашего кастомного класса. Вопросы / Cтоимость способа доставки в MS2 15
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в 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`; — добавлены ...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
FileMan - прикрепление файлов к ресурсам для MODX 3 Добрый день! Может что-то с правами доступа к файлам? Посмотрите логи в modx, в php. С ходу сложно ответить, ранее не было таких случаев.
— Различные капчи обходятся при помощи rucaptcha.com/ или подобных сервисов
— От явных спамеров которые используют proxy листы/tor помогает www.stopforumspam.com
— Для защиты от матов и прочего бреда можно составить черный список слов
— Чтобы дополнительно отсеять спамеров с временными почтовыми ящиками можно составить список доменов github.com/TicketeStartup/temp-mail-check/blob/master/disposable-email-domains.json естественно, он будет не полный. И этот способ подойдет скорее для защиты от левых регистраций.
В любом случае, если вас решили целенаправленно заспамить, то это сделают. Но в 90% случаев данных мер достаточно.
Можно сделать свой модификатор, которым будет удобно пользоваться:
Возможно и мне пригодится на будущее скопипастить, чтобы не писать заново, хотя времени на написание ушло 2 минуты.
Создаем TV product_of_the_day с типом ввода Список (множественный выбор), в возможных значениях там указываем
Дальше плагин на событие OnLoadWebDocument
Суть такова — товар выбирается по номеру дня недели, т.е. в списке первый товар будет на понедельник, второй на вторник и т.д.
В шаблоне получаем ID товара дня, можем делать с ним что угодно, в вашем случае подставить в вызов сниппета
2) заменить вызов чанка
на
Это в самом сниппете, продублируй и заменяй
Порядок действий такой
1) Находишь файл core/components/minishop2/model/minishop2/msorderhandler.class.php
2) находишь там функцию getCost и заменяешь ее тем что в приведенной Павлом ссылке
3) добавляешь скрипт из той же ссылки на страницу Оформления заказа в самом низу
4) выводишь ссылку в нужном месте
это будет цена доставки
5) если еще надо цену заказа БЕЗ доставки то добавляешь в скрипт в функцию miniShop2.Callbacks.Order.getcost.response.success
такие строки например
тогда ссылка на цену без доставки будет так
Метод подключения кстомного класса из инструкции не работает. Поэтому в графу «класс обработчик заказа» нужно вписать название вашего кастомного класса.