Dan

Dan

С нами с 29 июня 2021; Место в рейтинге пользователей: #149
Dan
Dan
02 июня 2023, 08:49
0
Версия Modx какая?
Компонент рабочий 100%. Подозреваю, что где-то в ваших кастомных скриптах есть ошибка, поэтому и не работает.
Dan
Dan
31 мая 2023, 19:39
1
+1
Теперь понял. Можно в принципе плагином или если у вас есть дополнение Console, в нем скриптом отметить все галочки у всех ресурсов-карточек. А далее уже рутинная работка — снимать галочки у ненужных. Вообще, если по логике, у всех товаров, привязанных к одной категории, должны быть какие-то общие свойства для выборки. Есть такое?
Dan
Dan
31 мая 2023, 13:26
0
Да, можно писать чистый sql. Не за что, успехов
Dan
Dan
31 мая 2023, 13:23
2
+1
А если так:
'where' => ['Data.old_price > Data.price AND Data.internet_magazin = 1']
Dan
Dan
31 мая 2023, 12:49
0
Попробуйте так написать where
'where' => ['Data.old_price:>' => 'Data.price', 'Data.internet_magazin' => '1']
Dan
Dan
31 мая 2023, 12:37
+1
А потом список отмеченных вы используете в сниппете, чтобы вывести связанные?
Dan
Dan
31 мая 2023, 09:11
1
0
Значит вам нужно открыть div в первом результат и в каждом 4-м, и закрывать его в последнем и каждом 3-м. И при этом выводить отдельный чанк после каждого-3го или последнего. Вызов будет примерно следующий:
[[!pdoResources?
    &parents=`[[*id]]`
    &tpl=`one_test`
    &tplFirst=`one_test.open`
    &tplFirst=`one_test.open`
    &tpl_n3=`one_test.close`
    &tplLast=`one_test.close`
    &includeTVs=`img,newHome,change,price,street`
]]
И код чанков примерно следующий:
1. one_test — просто вывод блока, без оборачивающего div-а
2. one_test.open следующий:
<div> <!--открывается div обертка-->
<!--далее код из чанка one_test-->
3. one_test.close следующий:
<!--код из чанка one_test-->
</div> <!--закрывается div обертка-->
[[$другой_чанк]]
Dan
Dan
30 мая 2023, 22:12
0
Как понять «он заменяет ресурс»?
Вы вроде написали, что каждый 3-ий результат должен выводиться в другом чанке.
Чем вам не подходит tpl_N?
Либо распишите задачу более подробно, чтобы можно было дать точный ответ.
Dan
Dan
29 мая 2023, 11:55
0
Дело в разметке. За вывод выбранных фильтров отвечает метод handleSelected. Если посмотрите код default.js от mSearch2, то увидите, что:
1) По умолчанию, контейнер фильтра — это ближайший родительский тег fieldset
2) Заголовок берется из дочернего элемента контейнера с классом .filter_title

Поэтому, раз у вас своя разметка, то нужно:
1) Создать новый js, например custom.js по адресу assets/components/msearch2/js/web/ и скопировать в него код из default.js, находящегося в той же директории.
2) В системных настройках по ключу mse2_frontend_js укажите созданный вами js-файл
3) В самом файле на 15-16 строчках замените значения filter_title и filter_wrapper на нужные вам.

Либо не трогая js указать это в вызове сниппета в параметре filterOptions
Dan
Dan
29 мая 2023, 11:41
0
А кастомные поля вы как создали? Просто добавили в БД?
Вы должны также сообщить о них самому Modx. Можете воспользоваться этим гайдом. Если не нужно отрисовывать поля в админке, то достаточно одного события OnMODXInit
Dan
Dan
25 мая 2023, 14:18
0
Вывод чего? В контенте ресурса у меня просто рандомный набор слов и слова из words плагин удаляет внутри контента.
Dan
Dan
25 мая 2023, 13:38
0
Я у себя протестил, такой код норм чистит. Вы после сохранения страницу ресурса обновите в админке и увидите, что слова удалились из контента.
<?php
switch ($modx->event->name) {
        case 'OnDocPublished':
        case 'OnBeforeDocFormSave':
        case 'OnDocFormSave':
        $res = $modx->getObject('modResource', 1);
        $words = json_decode($res->getTVValue('words'), true);
           
        $content = $resource->get('content');
        $pattern = '/(?:' . join('|', $words) . ')/i';
        $content = preg_replace($pattern, '', $content);
        
        $resource->set('content', $content);
        $resource->save();
        break;
              
}
Dan
Dan
25 мая 2023, 10:07
0
А у вас поле точно типа tvSuperSelect? Странно конечно. Если не разберитесь, можете мне в тг или в сообщения написать, смогу сегодня в обеду глянуть
Dan
Dan
25 мая 2023, 09:42
0
Вы лог модх смотрите? Надо серверный, ибо ошибка 100% с кодом 5хх, скорее 500.
Dan
Dan
25 мая 2023, 09:31
0
При сохранении ресурса имеете в виду? Просто зависает? Тогда скорее другой плагин что-то ломает. Надо смотреть логи, так сложно сказать.
Dan
Dan
25 мая 2023, 05:15
0
Ну вы хоть почитайте мой комментарий, я же в самом первом написал код, а вы снова по своему получаете, вот и не работает. tvSuperSelect тоже хранит json
Dan
Dan
24 мая 2023, 19:16
+1
Как установите его, в списке тв полей появится tvsuperselect
Dan
Dan
24 мая 2023, 16:45
0
Дописал код в комменте. Честно, не понимаю причем тут gallery
Dan
Dan
24 мая 2023, 16:36
0
Потому что migx хранит в json. При этом, в migx у вас видимо всего одно поле для ввода слова, допустим его ключ word, тогда при декодировании вы получите не массив слов, а массив элементов этого migx, т.е. двумерный массив.
Значит вам нужно будет еще пробежаться по нему и получить все слова.
$words = array();
$res = $modx->getObject('modResource', 11);
$temp = json_decode($res->getTVValue('words'), true);
foreach ($temp as $v) {
    if (!in_array($v['word'], $words)) { //$v['word'] - тут нужно указать ключ вашего поля для слова
        array_push($words, $v['word']); //тут тоже соответственно
    }
}
//после цикла вы получите массив введенных слов. Поэтому я и предлагал tvSuperSelect, с ним было бы проще, без лишнего цикла и вводить в него проще.
Т.
Dan
Dan
24 мая 2023, 14:08
+1
Код тот же самый, просто замените в 1ой строчке моего кода, $resource->id на id вашего ресурса
$res = $modx->getObject('modResource', id_ресурса);
$words = json_decode($res->getTVValue('words'), true);