Выборка статей для юзера
        Добрый день. на сайте установлен компонент Login. Настроена авторизация. 
Админ создает ресурс Проекты. И в это папке будут создаваться разные страницы.
админ пишет статью и в доп.поле указывет того юзера которому эта страница/статья должно показываеться. Это доп.поле с типом одиночный выбор и выборкой
@SELECT `username` AS `name`,`id` FROM `[[+PREFIX]]users` WHERE `active` = 1
В личном кабинете пользователя есть ссылка на ресурс «Проекты». Сам ресурс содержит код
Как я понимаю нужно фильтровать, но возможно фильтрую не так :) Потомучто не выводится вообще ничего. Подскажите как правильно отфильтровать данное действие
вот лог работы
    
    
                                                                                
            Админ создает ресурс Проекты. И в это папке будут создаваться разные страницы.
админ пишет статью и в доп.поле указывет того юзера которому эта страница/статья должно показываеться. Это доп.поле с типом одиночный выбор и выборкой
@SELECT `username` AS `name`,`id` FROM `[[+PREFIX]]users` WHERE `active` = 1
В личном кабинете пользователя есть ссылка на ресурс «Проекты». Сам ресурс содержит код
[[pdoResources?
    &parents=`[[*id]]`
    &depth=`1`
    &tpl=`project.tpl`
    &includeContent=`1`
    &includeTVs=`adres,cost,date-cost,dogovor,kloset,material,remont,square,userz`
    &prepareTVs=`userz`
    &prepareTVs=`userz`
    &tvFilters=`userz==[[!+modx.user.id]]`
]]Так вот, нужно чтобы пользователю были доступны только те «подресурсы», в которых он указан в тв — userzКак я понимаю нужно фильтровать, но возможно фильтрую не так :) Потомучто не выводится вообще ничего. Подскажите как правильно отфильтровать данное действие
вот лог работы
0.0001509: pdoTools loaded
0.0000391: xPDO query object created
0.0000620: Added TVs filters
0.0006170: Included list of tvs: dogovor, remont, square, kloset, material, adres, cost, date-cost, userz
0.0002282: leftJoined modTemplateVarResource as TVdogovor
0.0001760: leftJoined modTemplateVarResource as TVremont
0.0001719: leftJoined modTemplateVarResource as TVsquare
0.0001671: leftJoined modTemplateVarResource as TVkloset
0.0001709: leftJoined modTemplateVarResource as TVmaterial
0.0001659: leftJoined modTemplateVarResource as TVadres
0.0001681: leftJoined modTemplateVarResource as TVcost
0.0001659: leftJoined modTemplateVarResource as TVdate-cost
0.0001662: leftJoined modTemplateVarResource as TVuserz
0.0008881: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000122: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.dogovor`
0.0000081: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.remont`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.square`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.kloset`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.material`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.adres`
0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.cost`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.date-cost`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.userz`
0.0000770: Replaced TV conditions
0.0016592: Processed additional conditions
0.0020020: Added where condition: 0=`TVuserz`.`value` LIKE '2', modResource.parent:IN(15,16), modResource.published=1, modResource.deleted=0
0.0000472: Replaced TV conditions
0.0001352: Sorted by modResource.publishedon, DESC
0.0000041: Limited to 10, offset 0
0.0003169: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `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`.`content`, `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`, IFNULL(`TVdogovor`.`value`, '') AS `tv.dogovor`, IFNULL(`TVremont`.`value`, '') AS `tv.remont`, IFNULL(`TVsquare`.`value`, '') AS `tv.square`, IFNULL(`TVkloset`.`value`, '') AS `tv.kloset`, IFNULL(`TVmaterial`.`value`, '') AS `tv.material`, IFNULL(`TVadres`.`value`, '') AS `tv.adres`, IFNULL(`TVcost`.`value`, '') AS `tv.cost`, IFNULL(`TVdate-cost`.`value`, '') AS `tv.date-cost`, IFNULL(`TVuserz`.`value`, '') AS `tv.userz` FROM `modx2_site_content` AS `modResource` LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVdogovor` ON `TVdogovor`.`contentid` = `modResource`.`id` AND `TVdogovor`.`tmplvarid` = 3 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVremont` ON `TVremont`.`contentid` = `modResource`.`id` AND `TVremont`.`tmplvarid` = 4 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVsquare` ON `TVsquare`.`contentid` = `modResource`.`id` AND `TVsquare`.`tmplvarid` = 5 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVkloset` ON `TVkloset`.`contentid` = `modResource`.`id` AND `TVkloset`.`tmplvarid` = 6 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVmaterial` ON `TVmaterial`.`contentid` = `modResource`.`id` AND `TVmaterial`.`tmplvarid` = 7 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVadres` ON `TVadres`.`contentid` = `modResource`.`id` AND `TVadres`.`tmplvarid` = 8 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVcost` ON `TVcost`.`contentid` = `modResource`.`id` AND `TVcost`.`tmplvarid` = 9 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVdate-cost` ON `TVdate-cost`.`contentid` = `modResource`.`id` AND `TVdate-cost`.`tmplvarid` = 10 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVuserz` ON `TVuserz`.`contentid` = `modResource`.`id` AND `TVuserz`.`tmplvarid` = 11 WHERE  ( `TVuserz`.`value` LIKE '2' AND `modResource`.`parent` IN (15,16) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0033572: SQL executed
0.0000770: Total rows: 0
0.0000091: Rows fetched
0.0000291: Prepared and processed TVs
0.0000050: Returning processed chunks
0.0095630: Total time
5 505 024: Memory usage    Комментарии: 15
                В pdoResources 1.4.1 Василий писал, что пока не реализовал tvFilters, для перехода с getResource. Возможно так и не было реализовано, попробуй через 
                    &where=`{"userz:=":"[[!+modx.user.id]]"}` Приставку TV указывать, вроде, как не надо.            
                К сожалению так тоже не работает :(            
                    
                Если тестовый сервер киньте доступы, интересно будет глянуть. Ну или сам уже вечером попробую у себя            
                    &where=`{"userz":"[[!+modx.user.id]]"}`            
                Нет, к сожалению так тоже не работает. Может ест ькакой-то другой способ решить эту задачку?            
                    
                проверьте если вместо [[!+modx.user.id]] подставить id конкретного юзера, у которого точно есть материалы.
Можно еще что-то типа такого использовать
                    Можно еще что-то типа такого использовать
&where=`[" TVuserz = [[+modx.user.id]]"]`Но тут не помню нужен ли префикс TV            
                если поставить точно id то данный материал отображается, но его видят все, а не только тот юзер, для которого он как бы должен быть открыт… это нормально? :)            
                    
                а в [[+modx.user.id]] точно попадает id юзера с материалами?            
                    
                А как это проверить? 
PS: Евгений, может быть я скину доступ, вы гляните профессиональным взглядом? на попытки неуча )))
                    PS: Евгений, может быть я скину доступ, вы гляните профессиональным взглядом? на попытки неуча )))
                ну вы авторизуетесь из другого браузера под нужным юзером и проверяете что выводится на месте [[+modx.user.id]]
Можете скинуть доступы, посмотрю что там у вас не так
                    Можете скинуть доступы, посмотрю что там у вас не так
                Евгений, спасибо за помощь. Все заработало. Все дело в кэше :) Поставил некэшируемый вызов сниппета, и на всякий случай убрал галочку с ресурса про кэш. И все залетало!
Еще раз спасибо!
                    Еще раз спасибо!
                У меня вопрос, а как к следующему выводу в TV списке пользователей добавить первый селект с пустым значением: 
Ведь по умолчанию подставляется первый пользователь из списка, а если не нужно к этой странице прикреплять пользователя, то при сохранении в тв попадёт первый выбранный пользователь, а не пустое значение…
                    доп.поле с типом одиночный выбор и выборкойТакой вариант не срабатывает:
@SELECT `username` AS `name`,`id` FROM `[[+PREFIX]]users` WHERE `active` = 1
Укажите пользователя==||@SELECT `username` AS `name`,`id` FROM `modx_users` WHERE `active` = 1 AND `id` != 1В таком случае выводит первый пункт «Укажите пользователя», а вторым пунктом выводит голый код @SELECT…Ведь по умолчанию подставляется первый пользователь из списка, а если не нужно к этой странице прикреплять пользователя, то при сохранении в тв попадёт первый выбранный пользователь, а не пустое значение…
                Разве что переделать тип ТВ на чекбокс, тогда по умолчанию ничего не будет указано, но если пользователей +100500, то получится неудобоваримая каша…            
                    
                Нашел в доках ответ на свой вопрос… ))
Вот ответ:
                    Вот ответ:
@SELECT '- Выберите пользователя -' AS username, 0 AS id UNION ALL 
SELECT `username` AS `name`,`id` FROM `modx_users` WHERE `active` = 1            
                Я ужк точно не помню какие там параметры, но можно использовать что-то типа такого с использованием tpl 
Если поставить эти две палки в начале, то получится что первый пункт пустой
                    ||[[+id]]==[[+name]] Если поставить эти две палки в начале, то получится что первый пункт пустой
@EVAL $modx->runSnippet('pdoUsers', array('active'=>1))            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.