Всего 123 803 комментария

Александр Туниеков
19 октября 2022, 06:54
0
Для поиска советую яндекс поиск для интернет магазинов
У яндекса нет фасетного поиска. То есть фильтров нет
deleted
19 октября 2022, 06:36
0
Например multisearch.io/. Не пробовал, но возможность интересная. Во всяком случае, там реализованно много фишек для более лучшего фильтра. Например исправление ошибок и опечаток и исправление раскладки.
Для поиска советую яндекс поиск для интернет магазинов. Тоже исправляет ошибки, но бесплатно.
deleted
19 октября 2022, 06:31
0
И не включать фильтры в поставку.
А что бы не включить? Если не надо, можно не использовать)
Николай Савин
18 октября 2022, 18:32
0
Для MiniShop3 планируется сделать фильтры встреенные в него
Откуда такая информация?
Zulya
18 октября 2022, 18:24
0
Павел, огромное вам спасибо! Это решение действительно решило мою задачу!
Павел Романов
18 октября 2022, 16:08
1
+1
Да, пардон, там же темы в отдельной таблице и они с сообщениями линкуются по ID.
Вот так должно сработать:
<?php
$mess = array();
$thrs = array();
$table_mess = $modx->getOption('table_prefix').'ec_messages';
$table_threads = $modx->getOption('table_prefix').'ec_threads';

$sql = "SELECT * FROM {$table_threads}";
$q = $modx->prepare($sql);
$q->execute();
$threads = $q->fetchAll(PDO::FETCH_ASSOC);
foreach($threads as $thread){
    $thrs[$thread['resource']] = $thread['id'];
}

$ids = $modx->getChildIds(5,10,array('context' => 'web'));
foreach ($ids as $id){
    $tid = $thrs[$id];
    $sql = "SELECT * FROM {$table_mess} WHERE `thread` = {$tid}";
    $q = $modx->prepare($sql);
    $q->execute();
    $messages = $q->fetchAll(PDO::FETCH_ASSOC);
    foreach ($messages as $message) {
       	$mess[] = $message['id'];
    }
}
return implode(',', $mess);

В чанках вот так попробуйте:
[[#[[+thread_resource]].pagetitle]]
[[#[[+thread_resource]].logo]]
Zulya
18 октября 2022, 15:20
0
Еще обнаружила, что запрос выводит только 13 комментариев, хотя для теста я указала 100 в параметре limit. И выводятся комментарии не только с родителя дедушки с ID 5, а со всего сайта.
Zulya
18 октября 2022, 14:17
0
В &tpl указан чанк.
В ресурсе Демо 1, плейсхолдер [[+thread]] выводит ID ресурса Демо Х.
Наверно поэтому в комментариях ресурса Демо 1 выводятся значения с Демо Х.
vectorserver
18 октября 2022, 14:16
0
boolean setTVValue (str|integer $tv_name OR ID of TV, string $value)
Тип второго параметра должен быть обязательно строкой!
Павел Романов
18 октября 2022, 14:11
+1
В &tpl указан чанк или @INLINE...?
Что выводит просто [[+thread]].
Павел Романов
18 октября 2022, 14:08
+1
Да, 5 — родитель, 10 — глубина выборки.
Подробности тут
Zulya
18 октября 2022, 14:06
0
Кстати, сейчас
[[#[[+thread]].pagetitle]]
[[#[[+thread]].logo]]
В комментариях эти плейсхолдеры выводят значения с других ресурсов, а не значения ресурсов которым написаны комментарии.
Например, если комментарий был написал к ресурсу Демо 1, то при выводе комментарий ресурса Демо 1, [[#[[+thread]].pagetitle]] и [[#[[+thread]].logo]] выводят значения с Демо Х.
Zulya
18 октября 2022, 13:59
1
0
Здравствуйте, Павел!
Спасибо большое за готовое решение!
Вы можете уточнить 10 в
$ids = $modx->getChildIds(5,10,array('context' => 'web'));

За что отвечает цифра 10?
5 — если правильно поняла, это родитель (дедушка) в котором есть ресурсы, которые имеют комментарии.
Павел Романов
18 октября 2022, 12:45
1
+1
Попробуйте сделать сниппет getMessagesIds:
$ids = $modx->getChildIds(5,10,array('context' => 'web'));
$mess = array();
$table_mess = $modx->getOption('table_prefix').'ec_messages';
foreach ($ids as $id) {
    $sql = "SELECT * FROM {$table_mess} WHERE `thread` = {$id}";
    $q = $modx->prepare($sql);
    $q->execute();
    $messages = $q->fetchAll(PDO::FETCH_ASSOC);
    foreach ($messages as $message) {
       	$mess[] = $message['id'];
    }
}
return implode(',', $mess);

И используйте его в качестве &messages в вызове:
[[!pdoPage?
    &element=`ecMessages`
    &threads=`*`
    &messages=`[[!getMessagesIds]]`
    ......
]]

Что касается полей ресурса, то в чанке сообщения можно использовать FastField:
[[#[[+thread]].pagetitle]]
[[#[[+thread]].logo]]
Евгений
18 октября 2022, 12:18
0
подправил для поле tvFilters
<?php
$filterz = '';
if(isset($_GET['types'])) $filterz = $filterz.'types=='.$_GET['types'].',';
if(isset($_GET['config'])) $filterz = $filterz.'config=='.$_GET['config'].',';
if(isset($_GET['style'])) $filterz = $filterz.'style=='.$_GET['style'].',';
if(isset($_GET['fasad'])) $filterz = $filterz.'fasad=='.$_GET['fasad'].',';

if($filterz !=='') $filterz = substr($filterz,0,-1);

return $filterz;
словил такую ошибку
[pdoTools] Error 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"`TVtypes`.`value` LIKE '1\"' AND  ( `msProduct`.`parent` IN (2,24,5,6,7,8,9,10,' at line 1
Евгений
18 октября 2022, 11:48
0
пришел к такому решению:
[[!msProducts? &tpl=`tovartplCat` &limit=`64` &parents=`2` &tvFilters=`[[!where]]` &includeTVs=`types,config,style,fasad` ]]
<?php
$filterz = '';
if(isset($_GET['types'])) $filterz['types'] = $_GET['types'];
if(isset($_GET['config'])) $filterz['config'] = $_GET['config'];
if(isset($_GET['style'])) $filterz['style'] = $_GET['style'];
if(isset($_GET['fasad'])) $filterz['fasad'] = $_GET['fasad'];
if($filterz !=='') $filterz = substr($filterz,0,-1);

//if(!empty($filterz)) {$where = json_encode($filterz);} else {$where = '';}

return $filterz;
но чтото не завелось :(
Петр
18 октября 2022, 11:42
0
Как подружить msOptionsPrice2 и babel? Что бы синхронизировать остатки товаров и свойства?
Никита Боднар
18 октября 2022, 11:35
0
Точнее не в этом случае, а в том случае, если у TV стоит проверка на заполненность.
Никита Боднар
18 октября 2022, 11:19
0
Так тоже пробовал, результата ноль.