При указании tvFilters ничего не возвращает.
Добрый день!
Проблема с фильтрацией по tv (radio, с checkbox'ом ситуация та же). При выборе «Да» (значение по умолчанию) ресурс должен отображаться в плитке, при «Нет» соответственно — нет. Но когда добавляю
Полный код вызова pdoResources (в $where пусто, в $depth — 0):
Пытался сделать через where:
Читал, что Василий не рекомендует использовать tvFilters, но других вариантов кроме перечисленных не вижу.
Почему в моём случае tvFilters не срабатывает как надо?
Проблема с фильтрацией по tv (radio, с checkbox'ом ситуация та же). При выборе «Да» (значение по умолчанию) ресурс должен отображаться в плитке, при «Нет» соответственно — нет. Но когда добавляю
'tvFilters' => '[\'show_in_list\' => \'true\']'
ничего не выводится.Полный код вызова pdoResources (в $where пусто, в $depth — 0):
{$_modx->runSnippet('pdoResources', [
'depth' => $depth,
'select' => 'modResource.id, modResource.uri, modResource.class_key, modResource.pagetitle, modResource.menutitle, `medium`.`url` as medium',
'leftJoin' => '{"medium" : {"class" : "msProductFile", "on" : "`medium`.`product_id` = modResource.id AND `medium`.`path` LIKE \'%/medium/%\'"}}',
'tpl' => 'tile_link-only',
'limit' => 30,
'includeTVs' => 'image,show_in_list',
'tvFilters' => 'show_in_list===true',
'groupby' => 'modResource.id',
'where' => $where,
'includeThumbs' => 'medium',
'sortby' => '{"menuindex":"ASC"}',
'showLog' => 0
])}
Делал по этому посту.Пытался сделать через where:
'where' => '[\'show_in_list\' => \'true\']',
выводит все ресурсы.Читал, что Василий не рекомендует использовать tvFilters, но других вариантов кроме перечисленных не вижу.
Почему в моём случае tvFilters не срабатывает как надо?
Комментарии: 5
добавьте параметр 'return' => 'sql'
По запросу в бд проще понять, что там происходит
По запросу в бд проще понять, что там происходит
SELECT SQL_CALC_FOUND_ROWS modResource.id, modResource.uri, modResource.class_key, modResource.pagetitle, modResource.menutitle, `medium`.`url` as medium, IFNULL(`TVimage`.`value`, '') AS `tv.image`, IFNULL(`TVshow_in_list`.`value`, 'true') AS `tv.show_in_list`
FROM `modx_site_content` AS `modResource`
LEFT JOIN `modx_ms2_product_files` `medium` ON `medium`.`product_id` = modResource.id AND `medium`.`path` LIKE '%/medium/%'
LEFT JOIN `modx_site_tmplvar_contentvalues` `TVimage` ON `TVimage`.`contentid` = `modResource`.`id` AND `TVimage`.`tmplvarid` = 4
LEFT JOIN `modx_site_tmplvar_contentvalues` `TVshow_in_list` ON `TVshow_in_list`.`contentid` = `modResource`.`id` AND `TVshow_in_list`.`tmplvarid` = 6
WHERE ( `TVshow_in_list`.`value` = 'true' AND `modResource`.`parent` IN (20) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )
GROUP BY modResource.id
ORDER BY modResource.menuindex ASC LIMIT 30
судя по запросу условие есть, ресурсы с show_in_list = true есть, но в результатах пусто
-
только наверно вручную прописывать в WHERE:
IFNULL(`TVshow_in_list`.`value`, 'true') = 'true'
Почему то where не подхватывает IFNULL
IFNULL(`TVshow_in_list`.`value`, 'true') = 'true'
Почему то where не подхватывает IFNULL
спасибо, работает
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.