Роман

Роман

Был в сети 23 августа 2025, 12:04
Заказы не принимаю
Разобрался, вот так в цикле
{'!getImageList' | snippet : [
'tvname' => 'indexgroup',
'toJsonPlaceholder' => 'row'
]}
{var $banner = json_decode('row' | placeholder, true)}
{foreach $banner as $cat}
	{$cat['image'] | phpthumbsup : 'w=240&h=240&zc=1'}
{/foreach}
С путями порядок, но все таки используется сниппет Getimagelist.
Думаю все варианты перебрали.
Эх жаль, что с путями беда для phpthumbOn или phpthumbsUp если без сниппета просто Foreach пройти.
понятно, спасибо.
Сделал так же по примеру

{'!getImageList' | snippet : [
'tvname' => 'indexgroup',
'toJsonPlaceholder' => 'row',
]}
{var $banner = json_decode('row' | placeholder, true)}
{var $banner = $banner[0]}
{$banner['image'] | phpthumbsup : 'w=240&h=240&zc=1'}
Работает, и путь в порядке, НО КАК СДЕЛАТЬ ЦИКЛ? Только одна итерация выводится.
Спасибо, так сразу попробовал img/{$item.image… :) не получается. img не попадает в снипет так.
В общем почему то при вызове снипета как модификатор через FENOM без снипетов getImagelist и других, в снипет phpthumbsup не попадает корень сайта, или просто он его не учитывает. Попробую настройки самого снипета поковырять.

Пока сделал так для каждой вставки рисунка.
{'phpthumbsup' | snippet : [
                            'input' => /img/'~$item.image,
                            'options' => '&w=240&h=240&zc=1&f=png',
                            ]
                        }
БЛАГОДАРЮ! Консоль видно как то кеширует, да работает, но все равно нельзя убирать МАССИВ FILTR, и зачем то вы с date format там сделали, я сейчас поменял поле с date на event=новое и все, не работает, эти параметры будут передаваться AjAX формой в сниппет, поэтому нужен массив для фильтрации.

$filter = array();
if($_GET['date']) {
	$filter[] = 'date='.$_GET['date'];
}
Понимаете? И проходить фильтр будет по этому массиву, по нескольким параметрам будет выборка осуществляться,
if($filter) {
  $where = $modx->toJSON(array($filter));
} else {
	$where = '';
}
Вы же изменили все как я понял и завязали жестко на date. Но вы большой молодец! Низкий вам поклон! СПАСИБО, на базе вашего кода попробую все же свой изменить, что бы работал универсально.
Я пробовал я ваш код, спасибо большое, но не работает он, возвращает абсолютно все записи, не фильтрует, и у вас там почему то работа с датой, А У МЕНЯ ДАТ НЕТ ТАМ, 2018 это просто цифры, в простом TV с типом текст. А у вас там
validateDate($date, $format = 'd m Y H:i:s' и так далее.

тот код пробовал ваш, id ресурса поменял на нужный. Потому что на сайте к которому давал вам доступ, ресурс с TV имеет id 198 а не 1
function validateDate($date, $format = 'd m Y H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}
$where = '';
if(validateDate($_GET['date'], 'Y')) {
    $where = ['date:=' => $_GET['date']];
}

if ($where){
    $where = json_encode($where);
}

$params = array(
	'docid' => 1,
	'tvname' => 'field-news',
	'where' => $where
	);
return $modx->runSnippet('getImageList',$params);
Возвращает все три записи, а нужно одну, с [date] => 2018
Array
(
    [MIGX_id] => 1
    [desc] => первая нвость
    [date] => 2018
    [_alt] => 0
    [_first] => 1
    [_last] => 
    [idx] => 1
    [property.docid] => 198
    [property.tvname] => field-news
    [property.where] => 
)
Array
(
    [MIGX_id] => 2
    [desc] => вторая новсть
    [date] => 2017
    [_alt] => 1
    [_first] => 
    [_last] => 
    [idx] => 2
    [property.docid] => 198
    [property.tvname] => field-news
    [property.where] => 
)
Array
(
    [MIGX_id] => 3
    [desc] => третья новость
    [date] => 2017
    [_alt] => 0
    [_first] => 
    [_last] => 1
    [idx] => 3
    [property.docid] => 198
    [property.tvname] => field-news
    [property.where] => 
)
Нашел где косяк, но решить пока проблему не могу, дело в синтаксисе параметра where для getImageList, он другой чем у pdoResources, поэтому не работает фильтрация.Если напрямую в where прописать $where = '{«date:=»:«2018»}'; то все работает, если делать через $where = $modx->toJSON(array($filter)); то не работает.
Еще проблема есть мне кажется в создании массива для фильтрации, а точнее в синтаксисе опять же для where
if($_GET['date']) {
	//$filter[] = 'date='.$_GET['date'];
	//$filter[] = "{'date:=':'2018'}";
}
Вот если миновать массив и в where напрямую прописать то порядок, но нужно через JSON пропустить для AJAX запроса :( пока не знаю как заставить работать этот код.
$filter = array();
if($_GET['date']) {
	//$filter[] = 'date='.$_GET['date'];
	//$filter[] = "{'date:=':'2018'}";
}
if($filter) {
 //$where = $modx->toJSON(array($filter));
 $where = '{"date:=":"2018"}';
}
$params = array(
	'docid' => 198,
	'tvname' => 'field-news',
    'where' => $where
    //'where' => '{"date:=":"2018"}',
	);	
return $modx->runSnippet('getImageList', $params);
Да нет, не работает код, id везде стоят на 198.

$_GET['date'] = '2018';
$filter = array();
if($_GET['date']) {
	$filter[] = 'date='.$_GET['date'];
	//$filter[] = 'date:='.$_GET['date'];
}
if($filter) {
  $where = $modx->toJSON(array($filter));
} else {
	$where = '';
}

// для getimagelist
$params2 = array(
	'docid' => 198,
	'tvname' => 'field-news',
    'where' => $where
	);	
return $modx->runSnippet('getImageList', $params2);
И новости это пример, там слайдер сделан на MIGX. И мне нужен фильтр исключительно полей MIGX, но для getImagelist не работает.
Эх нет, не возвращает массив, ответил вам на почту. Там даты нет, там просто tv с текстовым полем, просто имя такое у tv date, в них что у обычного TV date что у MIGX TV field_news у параметра date простые текстовые поля, в них года 2017, 2018, 2019 их не нужно преобразовывать никак через DateTime и тд.