Роман

Роман

С нами с 06 октября 2013; Место в рейтинге пользователей: #290
Роман
20 января 2020, 19:17
0
Разобрался, вот так в цикле
{'!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 пройти.
Роман
20 января 2020, 19:02
0
понятно, спасибо.
Сделал так же по примеру

{'!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'}
Работает, и путь в порядке, НО КАК СДЕЛАТЬ ЦИКЛ? Только одна итерация выводится.
Роман
20 января 2020, 18:55
0
Вообще не понимаю,
Вызываю
{'!getImageList' | snippet : [
'tvname' => 'indexgroup',
'tpl' => 'test'
]}
чанк test
[[+image]] так выводит
{$image} так нет :(
Роман
20 января 2020, 18:43
0
да читал этот пост, так же как я сделал человек с указанием пути через опцию INPUT, думаю можно снипет getimagelist использовать но с синтаксисом Fenom, думаю тоже будет работать без проблем с путями, сейчас попробую.
Роман
20 января 2020, 18:28
0
Спасибо но нет, тоже пробовал, результат /img/phpthumbsup/w/240/h/240/zc/1/src/catalog/Layer1.png
После src нет папки img.
А должно быть так /phpthumbsup/w/240/h/240/zc/1/f/png/src/img/catalog/Layer1.png
Роман
20 января 2020, 17:58
0
Спасибо, так сразу попробовал img/{$item.image… :) не получается. img не попадает в снипет так.
В общем почему то при вызове снипета как модификатор через FENOM без снипетов getImagelist и других, в снипет phpthumbsup не попадает корень сайта, или просто он его не учитывает. Попробую настройки самого снипета поковырять.

Пока сделал так для каждой вставки рисунка.
{'phpthumbsup' | snippet : [
                            'input' => /img/'~$item.image,
                            'options' => '&w=240&h=240&zc=1&f=png',
                            ]
                        }
Роман
20 января 2020, 17:34
0
Если просто {$item.image} выводит тоже неполный путь: catalog/Layer1.png
На что например поменять? Это самый быстрый снипет из существующих аналогов и нет ошибок в консоли как у других, phpthumbOn или Of
Роман
20 января 2020, 16:52
0
Не смог решить, вывел сниппетом pdoTools

{'!pdoResources' | snippet : [
'parents' => 3, 
'limit' => 0, 
'tpl' => 'tpl-cat',
'sortby' => ['menuindex' => 'asc']
'includeTVs' => 'cat_view, cat_img',
'tvFilters' => 'cat_view==1',
'where' => [
'class_key' => 'msCategory'
]
]}
Роман
16 января 2020, 14:00
0
Эх, что то не так, ничего не выводит, условие WHERE убираю выводит все.
Роман
16 января 2020, 13:47
0
Да, хочу без снипета обойтись ради скорости. cat_view есть, но не могу по нему отфильтровать записи. Спасибо, сейчас подключить попробую в параметрах TV
Роман
31 декабря 2019, 17:21
0
Спасибо, завтра продолжу голову ломать в новом году :)) С Новым годом!
Роман
31 декабря 2019, 17:14
0
БЛАГОДАРЮ! Консоль видно как то кеширует, да работает, но все равно нельзя убирать МАССИВ 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. Но вы большой молодец! Низкий вам поклон! СПАСИБО, на базе вашего кода попробую все же свой изменить, что бы работал универсально.
Роман
31 декабря 2019, 16:21
0
Проверьте сами, не работает. Если бы я мог разобраться, я бы сюда не обращался. Ладно, спасибо, если не можете помочь вы не обязаны, спасибо что откликнулись!
Роман
31 декабря 2019, 16:13
0
да хоть напрямую пропишите, 2018 без $_GET['date'], не работает. Дело не в этом.
Роман
31 декабря 2019, 16:06
0
Я пробовал я ваш код, спасибо большое, но не работает он, возвращает абсолютно все записи, не фильтрует, и у вас там почему то работа с датой, А У МЕНЯ ДАТ НЕТ ТАМ, 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] => 
)
Роман
31 декабря 2019, 15:47
0
Спасибо, но дело в том что в консоли не сохраняется ничего, у меня там только мой код :( Я уже посмотрел сразу утром.
Роман
31 декабря 2019, 13:46
0
Нашел где косяк, но решить пока проблему не могу, дело в синтаксисе параметра 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);
Роман
31 декабря 2019, 11:43
0
Кроме платного фильтра Search2 для minishop нет ничего.
Роман
31 декабря 2019, 11:41
0
Да нет, не работает код, 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 не работает.
Роман
31 декабря 2019, 02:46
0
Эх нет, не возвращает массив, ответил вам на почту. Там даты нет, там просто tv с текстовым полем, просто имя такое у tv date, в них что у обычного TV date что у MIGX TV field_news у параметра date простые текстовые поля, в них года 2017, 2018, 2019 их не нужно преобразовывать никак через DateTime и тд.