Как реализовать вывод рекомендуемых ресурсов?
Привет всем, подскажите как реализовать следующее:
Допустим есть раздел услуги и есть раздел кейсы.
Нужно в услуге указать необходимые ресурсы с кейсам (Например услуга «продажа квартиры», а в ней указать кейсы — как купить квартиру, как оформить квартиру). А на выходе на странице ресурса «продажа квартиры», отображались следующие поля кейсов: титле, анонс и ссылка на кейс.
Спасибо
Допустим есть раздел услуги и есть раздел кейсы.
Нужно в услуге указать необходимые ресурсы с кейсам (Например услуга «продажа квартиры», а в ней указать кейсы — как купить квартиру, как оформить квартиру). А на выходе на странице ресурса «продажа квартиры», отображались следующие поля кейсов: титле, анонс и ссылка на кейс.
Спасибо
Комментарии: 16
В админке эти самые кейсы храним в виде ресурсов, а у главной услуги будет TV поле, в котором прописаны через запятую id кейсов. Ну, и дальше просто через pdoResources выводим.
{set $id = 'id'| resource}
{'pdoResources' | snippet : [
'resources' => $id | resource : "ваше tv поле"
...
]}
мм, не совсем понял
Что именно не понятно?
Создал контэйнер Кейсы (121), в нем 3 ресурса 122,123,124
создал доп поле множественный выбор keis
Возможные значения
в шаблоне вывожу
[[pdoResources?
&parents=`[[*parent]]`
&tpl=`tpl.keis`
&includeTVs=`keis`
&processTVs=`1`
&resources=`[[*keis]]`
&showLog=`0`
]]
в чанке tpl.keis
(
создал доп поле множественный выбор keis
Возможные значения
@EVAL return $modx->runSnippet('pdoResources',array('parents'=>'121','depth'=>2,'hideContainers'=>1,'limit'=>0,'sortby'=>'{"pagetitle":"ASC"}','tpl'=>'@INLINE [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));
В нужном ресурсе указал кейсы 122,123в шаблоне вывожу
Рекомендуем
[[pdoResources?
&parents=`[[*parent]]`
&tpl=`tpl.keis`
&includeTVs=`keis`
&processTVs=`1`
&resources=`[[*keis]]`
&showLog=`0`
]]
в чанке tpl.keis
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
но не выходит ничего(
А вы пробовали посмотреть что приходит? Отладкой же тоже нужно заниматься.
Предположу, что нужно в настройках вывода TV указать разделитель и указать запятую
Предположу, что нужно в настройках вывода TV указать разделитель и указать запятую
[[pdoResources?
...
&includeTVs=`keis` // Зачем? У тех ресурсов тоже указан этот TV?
...
]]
Сильно заморочился.
Кейсы(121)
— id 122
— id 123
— id 124
Все эти айдишники дочерних ресурсов «Кейсы» запихиваешь в обычное текстовое TV поле через запятую (Вот так 122,123,124) и назначаешь шаблону, который используется у ресурса «Кейсы». Далее в шаблоне с кейсом ты вызываешь сниппет pdoResources.
Кейсы(121)
— id 122
— id 123
— id 124
Все эти айдишники дочерних ресурсов «Кейсы» запихиваешь в обычное текстовое TV поле через запятую (Вот так 122,123,124) и назначаешь шаблону, который используется у ресурса «Кейсы». Далее в шаблоне с кейсом ты вызываешь сниппет pdoResources.
{set $id = 'id'| resource} // Получаем текущий id ресурса, по которому обратимся к TV полю с дочерними id
{'pdoResources' | snippet : [
'resources' => $id | resource : "ваше tv поле" // сюда подставится значение 122,123,124 .
...
]}
вот так?
{set $id = 'id'| resource}
{'pdoResources' | snippet: [
'resources' => $id | resource: «tv_keis»
]}
но ничего не выходит
{set $id = 'id'| resource}
{'pdoResources' | snippet: [
'resources' => $id | resource: «tv_keis»
]}
но ничего не выходит
А остальные параметры прописал? Tpl и т.д.
да, дело было в выводе (поставил разделитель ,)
в шаблоне вывожу
А если
А в ресурсе где поле keis не заполнено, выводит все титлы 122,123,124
(
то что писал Stanislavsky вообще ничего не выводит
logs там где поле keis заполнено
в шаблоне вывожу
[[!pdoResources?
&depth=`10`
&hideContainers=`0`
&resources=`[[*keis]]`
&parents=`[[*id]]`
&limit=`10`
&tpl=`tpl.keis`
&showLog=`1`
&toPlaceholder=`keisOuter`
]]
<h3>Рекомендуем</h3>
[[+keisOuter]]
Пусто.А если
[[!pdoResources?
&depth=`10`
&hideContainers=`0`
&resources=`[[*keis]]`
&parents=`121`
&limit=`10`
&tpl=`tpl.keis`
&showLog=`1`
&toPlaceholder=`keisOuter`
]]
<h3>Рекомендуем</h3>
[[+keisOuter]]
То в ресурсе где поле keis заполнено, выводит их титл (т.е. титлы 122 и 123)А в ресурсе где поле keis не заполнено, выводит все титлы 122,123,124
(
то что писал Stanislavsky вообще ничего не выводит
logs там где поле keis заполнено
Кейс1--анонс кейса
Кейс2--анонс кейса2
0.0001900: pdoTools loaded
0.0000429: xPDO query object created
0.0005410: Added selection of modResource: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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.0006440: Processed additional conditions
0.0010240: Added where condition: modResource.id:IN(122,123), modResource.parent:IN(121,122,123,124), modResource.published=1, modResource.deleted=0
0.0001750: Sorted by modResource.publishedon, DESC
0.0000081: Limited to 10, offset 0
0.0003560: SQL prepared "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`.`id` IN (122,123) AND `modResource`.`parent` IN (121,122,123,124) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0001400: SQL executed
0.0000329: Rows fetched
0.0012000: Loaded "modChunk" with name "tpl.keis"
0.0015509: Returning processed chunks
0.0043809: Total time
7 864 320: Memory usage
logs ресурса, где поле keis не заполненоРекомендуем
Кейс1--анонс кейса
Кейс2--анонс кейса2
Кейс3--анонс кейса3
0.0001919: pdoTools loaded
0.0000689: xPDO query object created
0.0006959: Added selection of modResource: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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.0035942: Processed additional conditions
0.0039458: Added where condition: modResource.parent:IN(121,122,123,124), modResource.published=1, modResource.deleted=0
0.0001462: Sorted by modResource.publishedon, DESC
0.0000079: Limited to 10, offset 0
0.0004311: SQL prepared "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 (121,122,123,124) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0009971: SQL executed
0.0000591: Rows fetched
0.0046608: Loaded "modChunk" with name "tpl.keis"
0.0052969: Returning processed chunks
0.0122731: Total time
7 864 320: Memory usage
то что писал Stanislavsky вообще ничего не выводитУ тебя fenom включен? Если нет, то естественно ничего не выведет. Так, стоп. Ты прописываешь parents. Вопрос, зачем? Я так понял, что у твоих дочерних ресурсов могут быть разные родители. Поэтому и такое решение я тебе предложил.
То в ресурсе где поле keis заполнено, выводит их титл (т.е. титлы 122 и 123)Ты через запятую указал ресурсы? А 124 опубликован? А как у тебя чанк вывода выглядит?
А в ресурсе где поле keis не заполнено, выводит все титлы 122,123,124Логично, что если ты не будешь указывать keis, то выведутся все ресурсы.
P.S. НЕкэшировать pdoResources не нужно.Он у тебя динамически не меняется.
Fenom включин
Убрал parents
Пробую итак и так
вот в шаблоне
prnt.sc/kox6c3
вот в ресурсе указываю какие кейсы отображать
prnt.sc/kox6mp
На выходе пусто
Убрал parents
Пробую итак и так
вот в шаблоне
prnt.sc/kox6c3
вот в ресурсе указываю какие кейсы отображать
prnt.sc/kox6mp
На выходе пусто
А остальные параметры прописал? Tpl и т.д.Еще раз
Судя по скринам как я тебе скинул, так ты и прописал. И снова, ЕСТЕСТВЕННО, что работать не будет
ну да, а как нужно? я с феном не очень
сейчас сдлелал так
сейчас сдлелал так
{set $id = 'id'| resource}
{'pdoResources' | snippet : [
'resources' => $id | resource : 'keis',
'showLog' => 1,
'tpl' => '@INLINE {$id} - {$pagetitle}'
]}
логРекомендуем
+++++++++
0.0002210: pdoTools loaded
0.0000510: xPDO query object created
0.0006380: Added selection of modResource: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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.0007050: Processed additional conditions
0.0010500: Added where condition: modResource.id:IN(122,123), modResource.parent:IN(98), modResource.published=1, modResource.deleted=0
0.0001729: Sorted by modResource.publishedon, DESC
0.0000069: Limited to 10, offset 0
0.0004091: SQL prepared "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`.`id` IN (122,123) AND `modResource`.`parent` IN (98) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0001161: SQL executed
0.0000141: Rows fetched
0.0000060: Returning processed chunks
0.0029511: Total time
7 602 176: Memory usage
Для того чтобы не выводились ресурсы если не заполнен TV можно сделать так:
[[*keis:default=`999999`]]
// т.е.
&resources=`[[*keis:default=`999999`]]`
Кстати, parents не нужно указывать
и кто не поможет с проблемой?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.