pdoTools3 для MODX3

Друзья!
Как вы все знаете (или почти все), @Mark Hamstra взял быка за рога и своим решением утвердил график выхода MODX3:
  • 3.0.0-alpha3 – 27 октября
  • 3.0.0-beta1 – 8 ноября
  • 3.0.0-beta2 – 22 ноября
  • 3.0.0-rc1 – 6 января 2022
  • 3.0.0-rc2 – 17 января
  • 3.0.0-pl – 31 января
Об этом недавно писал @Иван Климчук. Пока всё идёт по графику и следующий релиз должен быть 6 января. Давайте поддержим Марка и поможем довести до логического завершения эту долгоиграющую историю. Это будет охренительный прорыв и даст новый толчок развитию MODX. Ведь многие из нас уже разочаровались увидеть при своей жизни MODX3.

Теперь по теме. Многие говорили, что для тестирования MODX3 им нужен адаптированный pdoTools, так как они ведут разработку исключительно с ним. Пару дней я назад выпустил новую версию этой библиотеки, предназначенную только для MODX3.
Сергей Шлоков
09 декабря 2021, 10:54
modx.pro
2 521
+39

Фильтр mFilter по TV полю типа чекбокс

Хочу создать фильтрацию по TV полю типа чекбокс. Записать сразу несколько параметров через разделитель, вместо создания для каждого параметра отдельного поля. Сейчас у меня есть параметры типа Радио в них параметры выставлены так: Есть==1||Нет==2. Они выводятся чекбоксом. Как мне сделать такие же чекбоксы для параметров из TV поля чекбокс?
Miša Bulic
09 декабря 2021, 10:32
modx.pro
1
1 520
0

Зависимые поля в MIGX

Добрый день. Подскажите а есть возможность в migx делать зависимость полей. К примеру у меня 2 поля:
1) Продукты типа listbox с Input Option Values:
@SELECT CONCAT(pagetitle,' - ',id), id FROM modx_site_content WHERE template=6 AND deleted=0
2) Модификации типа listbox с Input Option Values:
@SELECT CONCAT(name,' - ',id), id FROM modx_msop_modifications WHERE active=1 AND rid=[[+id]]
То есть опции модификации зависят напрямую от выбранного продукта?
Евгений Лазарев
08 декабря 2021, 18:59
modx.pro
1 251
0

pdoMenu выборка с двухуровневого списка не оборачивается в flex box со стилем.

Добрый день!
Формирую пункты меню вот с этих ресурсов:

{if $_modx->resource.materials[0] == 1}
			        {if $_modx->resource.materialtype[0] == 'Кровати'}
                                    <div class="mb-3 color-black small-text">Выберите материал и цвет</div>
                                    <div class="tabs product-materials mb-2">
                                        <div class="tabs-caption d-flex flex-wrap">
                                            <div class="tabs-caption d-flex flex-wrap">
                                                {'pdoMenu' | snippet : [
                                                    'parents' => 414
                                                    'level' => 1
                                                    'sortby' => 'menuindex'
                                                    'tpl' => '@INLINE 
                                                        <div class="tabs-caption__item{if $idx == 1} active{/if}">
                                                            <div class="material-title">{$pagetitle}</div>
                                                            {if $introtext}<span class="material-click">?</span>
                                                            <div class="material-desc">{$introtext}</div>{/if}
                                                        </div>
                                                    '
                                                    'tplOuter' => '@INLINE {$wrapper}'
                                                ]}                    
                                            </div>
                                        </div>
                                        <div class="tabs-content">
                                            {'pdoMenu' | snippet : [
                                                'parents' => 414
                                                'level' => 2
                                                'sortby' => 'menuindex'
                                                'includeTVs' => 'img'
                                                'tvPrefix' => ''
                                                'tpl' => 'tplMaterialImg'
                                                'tplOuter' => '@INLINE {$wrapper}'
                                            ]}  
                                        </div>
                                    </div>
                                    <div class="mb-5"><a class="link-underline color-brown" href="{912 | url}">Заказать образцы 
 тканей домой</a></div>
{/if}
{/if}
Когда тип материала == 'Кровати' то меню генерируется норм по шаблону tplMaterialImg (см. код ниже)

tplMaterialImg
{if $parent != 414}
                                                        {foreach json_decode($_modx->resource.photos) as $item}
                                                            {if $item.material == $pagetitle}
                                                                {var $photo = $item.photo}
                                                            {/if}
                                                        {/foreach}
                                                        
                                                        <label class="product-material">
                                                            <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 418}checked{/if} data-cat="{$parent}" data-img="{$photo}">
                                                            <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
                                                            <div class="product-material__color">{$pagetitle}</div>
                                                        </label>
                                                    {else}                                        
                                                        <div class="tabs-content__item{if $idx == 1} active{/if}">
                                                            <div class="d-flex flex-wrap">
                                                                {$wrapper}
                                                            </div>
                                                        </div>
{/if}
Мне нужно вывести для конкретного родительского ресурса картинки материалов потомков:
0verride
08 декабря 2021, 11:58
modx.pro
781
0

Как в mFilter2 сортировать товары по возрастанию цены?

Товары выводятся через mFilter2. При загрузке страницы товары отсортированы по возрастанию цены и товары с ценой = 0 в конце, тут всё хорошо.
'sortby'=>'{"Data.price=0,Data.price":"ASC"}'
Но если начать переключать сортировку
<a href="#" data-sort="ms|price" data-dir="{$mse2_sort == 'ms|price:desc' ? 'desc' : ''}" data-default="desc" class="sort">{'mse2_sort_price' | lexicon}</a>
то товары с ценой 0 всё равно появляются в начале. Как можно сделать так, чтобы товары с ценой 0 всегда были в конце списка?
Вася
08 декабря 2021, 09:54
modx.pro
1
1 454
0

xLike - вывод ресурсов, которым пользователь ставил лайк

Всем привет, решил реализовать систему лайков при помощи компонента xLike
Однако столкнулся с проблемой
Как вывести список ресурсов, которым ставил лайки в личном кабинете?

Возможно кто-либо сталкивался?
Прошу помощи

Буду благодарен
Андрей
07 декабря 2021, 11:48
modx.pro
1 256
0

Как запомнить пользователя, если он заполнил и отправил все формы?

Всем привет.

На сайте необходимо реализовать 3 формы, которые пользователь должен в течение 1 года отправить.

1 форма (FormIt) — 1 страница (ресурс). Как вывести чанк «Спасибо, вы уже заполняли эту форму 06.12.2021.», если пользователь уже заполнял эту форму?

По какому критерию запоминать, что форма уже была отправлена?

Пока в голову приходит что-то вроде такой схемы:
1. Хранить все формы с помощью сниппета FormIt2db
2. В каждой форме добавить 3 скрытых инпута: ID формы (тут можно вручную прописать), ID залогиненого пользователя ({$_modx->user.id}), текущая дата в UNIX формате ({time()}). Все отправленные формы сохраняем в отдельной таблице.
3. Разработать сниппет, который перед выводом форм будет проверять в базе наличие ID формы + ID пользователя НЕ пусто, то показываем чанк с сообщением.

Я правильно думаю или заморочено?

Буду рад рекомендациям.
Anton
06 декабря 2021, 16:47
modx.pro
1 032
0

Сворачивается дерево ресурсов

Уважаемые Друзья.
На одном из проектов после каждого редактирования сворачивается дерево ресурсов. Очень неудобно каждый раз открывать заново. Как исправить? Заранее благодарю!
ariadnadesign
05 декабря 2021, 11:58
modx.pro
794
0

плагин для обработки события в xparser

есть такой пакет вредный xparser
есть к нему примеры плагинов, например такой

$sp = &$scriptProperties;
switch ($modx->event->name) {
    case 'xParserOnBeforeTaskActions':
        foreach ($sp['rows'] as &$row) {
            $resource = &$row['Resource'];
            // Если код ответа 301, 302, 404
            if (in_array($row['Request']['http_code'], array(301, 302, 404))) {
                $resource['published'] = 0; // присвоим ресурсу published = 0
            }
        }
        unset($resource, $row);
        $modx->event->returnedValues = $sp; // передаём измененённые значения обратно
        break;
}
и он просто подвешивает парсинг

но суть не в этом, нужно сделать так чтобы он проводил проверку на пустые поля контента и одного tv поля и после отменял публикацию

чтото типа
if(empty($resource->get('content')) && empty($resource->getTVValue('video')){
            $resource->set('published', 0);
        }
может кто понимает в чем дело?
Евгений
04 декабря 2021, 12:23
modx.pro
694
0

Вывод одновременно категорий и списка товаров по ним

Здравствуйте!
Как вывести список всех товаров — знаю.
Как вывести список всех категорий — тоже.
Не понимаю, как вывести на одной странице и категории и товары в них, вида:

Категория 1
Товар1
Товар2
Товар3
Категория 2
Товар4
Товар5
Товар6
Категория 3
Товар1
Товар4

В Категория 3 — товары Товар1 и Товар4 — ранее присутствовали в других категориях.
Как я понимаю, нужно сделать SQL-запрос с выборкой по двум таблицам — Категории и Товары.
Большая просьба подсказать КУДА КОПАТЬ.

P.S.
Пример на странице bezumkin.ru/sections/tips_and_tricks/2058/ не работает
Игорь
03 декабря 2021, 21:36
modx.pro
1 077
0