We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 47698
    • 7 Posts
    Здравствуйте.
    Стоит банальная задача – вывод ресурсов с помощью getResources с фильтрацией по TV.
    Но что-то пошло не так, уже неделю бьюсь, перерыл весь интернет, перепробовал всё, что только можно.
    Уважаемые MODX'эры, помогите решить проблему.

    Вызов сниппета:
    [[!getResources?
    &parents=`3`
    &resources=`-34,-35,-36,-37,-38,-40`
    &tpl=`attorneyOfficeRowTpl`
    &limit=`0`
    &includeTVs=`1`
    &processTVs=`1`
    &tvFilters=`attorney_office==[[*office_office]]`
    &debug=`1`
    ]]
    Как видите, источником информации служит не текущий ресурс, а ресурс с id=3.
    Для фильтрации по переменной шаблона было создано две переменные с input type – Listbox (Single-Select), с идентичными значениями.
    Output type у обеих – Text (перепробовал варианты, остановился на этом).
    Значения введены в формате: Thousand Oaks CA||Westlake Village CA||San Francisco CA
    attorney_office используется дочерними ресурсами ресурса с id=3, office_office – текущим документом, в котором вызывается getResources.
    tvFilters или не фильтрует ничего (ввиду неправильного синтаксиса), или не выводит ничего (видимо по той же причине).

    Вот что сообщает Error Log:
    [2015-09-29 22:14:07] (ERROR @ /index.php) context for 3 is web
    [2015-09-29 22:14:07] (ERROR @ /index.php) SELECT `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `modx_site_content` AS `modResource` WHERE ( ( ( modResource.parent IN (3,34,35,36,37,38,40,4,41,60,62,63,61,64,65,66,67,69,70,68) AND `modResource`.`deleted` = 0 AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 ) AND (EXISTS (SELECT 1 FROM `modx_site_tmplvar_contentvalues` tvr JOIN `modx_site_tmplvars` tv ON tvr.value LIKE 'Westlake Village CA' AND tv.name = 'attorney_office' AND tv.id = tvr.tmplvarid WHERE tvr.contentid = modResource.id) OR EXISTS (SELECT 1 FROM `modx_site_tmplvars` tv WHERE tv.name = 'attorney_office' AND tv.default_text LIKE 'Westlake Village CA' AND tv.id NOT IN (SELECT tmplvarid FROM `modx_site_tmplvar_contentvalues` WHERE contentid = modResource.id)) ) ) AND `modResource`.`id` NOT IN (34,35,36,37,38,40) ) ORDER BY publishedon DESC

    Для меня это полная абракадабра. Ни о чём не говорит.
    Я думаю, что ошибка в синтаксисе записи строки &tvFilters=``
    Что я пробовал:
    &tvFilters=`attorney_office==office_office`
    &tvFilters=`tv.attorney_office==tv.office_office`
    &tvFilters=`[[tv.attorney_office]]==[[tv.office_office]]`
    &tvFilters=`[[+tv.attorney_office]]==[[+tv.office_office]]`
    и так далее, в таком же духе.
    Читал, что можно как-то фильтровать с помощью &where, но с JSON не знаком.

    В общем, если кто-то сталкивался с подобной проблемой, или знает куда копать, – буду безгранично благодарен (потому как устал спать на клавиатуре).
    Заранее благодарен.