Иван Бочкарев · 25 ноября 2019, 09:05 Можно так: {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 0 2
Евгений Борисов · 11 августа 2019, 14:18 Универсального средства нет. Все сугубо индивидуально — Различные капчи обходятся при помощи rucaptcha.com/ или подобных сервисов — От явных спамеров которые используют proxy листы/tor помогает www.stopforumspam.com — Для защиты от матов и прочего бреда можно составить черный список слов — Чтобы дополнительно отсеять спамеров с временными почтовыми ящиками можно составить список доменов github.com/TicketeStartup/temp-mail-check/blob/master/disposable-email-domains.json естественно, он будет не полный. И этот способ подойдет скорее для защиты от левых регистраций. В любом случае, если вас решили целенаправленно заспамить, то это сделают. Но в 90% случаев данных мер достаточно. Вопросы / Защита AjaxForm от спама конкурентов 5 +5 2
Василий Столейков · 05 июля 2019, 17:50 Оставлю тут комментарий, может кому пригодится. Можно сделать свой модификатор, которым будет удобно пользоваться: Создаём сниппет под названием 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 +1 1
Володя · 06 июня 2019, 14:34 {var $name} {set $count = 0} {foreach $array as $value} {include ++$count} <div class="col-md-6">{$value.pagetitle}</div> {/foreach} {/var} Вопросы / fenom, поместить результат foreach в переменную 3 0 2
Андрей · 04 июня 2019, 17:21 Была такая задача, правда товар выбирался не по чекбоксам, а указывался в 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 +3 1
Евгений Webinmd · 30 мая 2019, 18:53 1) подключить сервис $pdoTools = $modx->getService('pdoTools');2) заменить вызов чанка $modx->getChunkна $pdoTools->getChunkЭто в самом сниппете, продублируй и заменяй Новые дополнения и их версии / [FileAttach] Загрузка файлов на сайт во frontend 115 +1 1
Илья Уткин · 23 апреля 2019, 20:14 В плагине доступна переменная $mode — new или upd Вопросы / Как в плагине понять, открывается на редактирование или создается ресурс? 4 +1 1
Игорь Гришанов · 23 марта 2019, 16:33 Павел абсолютно прав) Только что делал таким образом Порядок действий такой 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 +2 3
Павел Гвоздь · 04 февраля 2019, 17:09 docs.sencha.com/extjs/3.4.0/ — Самый лучший источник, я только его использовал и использую. Новые дополнения и их версии / msGallerySearch - загрузка изображений в галерею minishop2 по ссылке и Google поиск картинок 44 +4 3
Юрий · 23 января 2019, 19:28 Либо переопределить сам класс, написав кастомный, либо переопределить только метод getCost в кастомном классе, что логичнее. Метод подключения кстомного класса из инструкции не работает. Поэтому в графу «класс обработчик заказа» нужно вписать название вашего кастомного класса. Вопросы / Cтоимость способа доставки в MS2 15 +1 1
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
— Различные капчи обходятся при помощи 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
такие строки например
тогда ссылка на цену без доставки будет так
Метод подключения кстомного класса из инструкции не работает. Поэтому в графу «класс обработчик заказа» нужно вписать название вашего кастомного класса.