Павел Романов

Павел Романов

Был в сети 30 июля 2026, 15:23
Заказы принимаю
Я сделал TV поле rating для шаблона товара и плагин на событие OnDocFormRender с проверкой товар это или нет (ID шаблона товара у меня 7):
<?php
if ($resource->get('template') == 7) {
	$thr = 'resource-'.$id.'';
	$pars = array (
		'thread'=> $thr,
		'tpl'=> 'rating-tv'
		);
	$rat = $modx->runSnippet('ecThreadRating',$pars);
	$rating = ceil($rat);
	$page = $modx->getObject('modResource', $id);
	$page->setTVValue('rating', $rating);
}
При открытии ресурса в редакторе ему автоматически прописывается в TV rating его рейтинг из таблицы компонента. Ну а дальше уже простая сортировка по TV.

В моем случае этого хватило, поскольку товары постоянно обновляются и менеджер сайта их открывает, но можно сделать по тому же принципу сниппет, который запускать по Cron.
Тогда можно сделать такой сниппет:
<?php
$arr = explode(' ', $input);
$last = array_pop($arr);
unset($last);
return implode(' ', $arr);
Назвать его, к примеру, similar и в условии прописать:
&where=`{"pagetitle:LIKE":"%[[*pagetitle:similar]]%"}
Но тогда, естественно, не использовать пробелы в цифровых обозначениях. То есть «2А», а не «2 А», поскольку тут название разбивается именно по пробелам.
Согласен с mekirile. Проверьте без условия, только sortdir уберите (он не нужен, поскольку уже прописан в sortby):
[[getResources?
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
	&tpl=`@INLINE [[+pagetitle]]`
]]
Если так что-то выведет, то поставьте условие:
[[getResources?
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
        &where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
	&tpl=`@INLINE [[+pagetitle]]`
]]
Если результатов не будет замените параметр where на такой:
&where=`{"pagetitle:LIKE":"%[[*pagetitle]]%"}`
и естественно, пропишите свой &tpl.
У Вас стоит сниппет msProducts? Нет. Значит и не надо его писать ).

Если у Вас установлен pdoTools, то в &element вообще ничего писать не нужно — по умолчанию используется сниппет pdoResources.

Если pdoTools не установлен, а есть getPage с getResources, то так:
[[!getPage?
        &element=`getResources`
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
        &where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
        &sortdir=`DESC`
        ]]
Через плюс ставится только в чанке-шаблоне вывода у сниппетов типа getResources и т. д. На самой странице, естественно, через [[*...

Можно и встроенными модификаторами, но Вам же нужно получить курс, т. е. значение TV у другого ресурса. Я не знаю установлен у Вас getResourceField или pdoTools, поэтому проще сделать вышеописанный сниппет.
А так-то да (если pdoTools стоит и включен новый парсер):
[[*cena_proekta_doma:div=`[[#****.cena_rur_auto]]`]]