Как реализовать вывод рекомендуемых ресурсов?

Привет всем, подскажите как реализовать следующее:
Допустим есть раздел услуги и есть раздел кейсы.
Нужно в услуге указать необходимые ресурсы с кейсам (Например услуга «продажа квартиры», а в ней указать кейсы — как купить квартиру, как оформить квартиру). А на выходе на странице ресурса «продажа квартиры», отображались следующие поля кейсов: титле, анонс и ссылка на кейс.
Спасибо
алексей
29 августа 2018, 14:10
modx.pro
1
1 274
0

Комментарии: 16

Stanislavsky
29 августа 2018, 18:05
+1
В админке эти самые кейсы храним в виде ресурсов, а у главной услуги будет TV поле, в котором прописаны через запятую id кейсов. Ну, и дальше просто через pdoResources выводим.
{set $id = 'id'| resource}

{'pdoResources' | snippet : [
    'resources' => $id  | resource : "ваше tv поле"
    ...
]}
    алексей
    30 августа 2018, 15:37
    0
    мм, не совсем понял
      Stanislavsky
      30 августа 2018, 15:43
      0
      Что именно не понятно?
        алексей
        30 августа 2018, 15:52
        0
        Создал контэйнер Кейсы (121), в нем 3 ресурса 122,123,124
        создал доп поле множественный выбор 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>
        но не выходит ничего
        (
          Баха Волков
          30 августа 2018, 16:00
          0
          А вы пробовали посмотреть что приходит? Отладкой же тоже нужно заниматься.

          Предположу, что нужно в настройках вывода TV указать разделитель и указать запятую
            Баха Волков
            30 августа 2018, 16:02
            0
            [[pdoResources?
            ...
            &includeTVs=`keis`    // Зачем? У тех ресурсов тоже указан этот TV?
            ...
            ]]
              Stanislavsky
              30 августа 2018, 16:04
              0
              Сильно заморочился.
              Кейсы(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 . 
              
                  ...
              ]}
                алексей
                30 августа 2018, 23:29
                0
                вот так?
                {set $id = 'id'| resource}
                {'pdoResources' | snippet: [
                'resources' => $id | resource: «tv_keis»

                ]}
                но ничего не выходит
                  Stanislavsky
                  30 августа 2018, 23:48
                  0
                  А остальные параметры прописал? Tpl и т.д.
        алексей
        30 августа 2018, 23:38
        0
        да, дело было в выводе (поставил разделитель ,)
        в шаблоне вывожу
        [[!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
          30 августа 2018, 23:55
          0
          то что писал Stanislavsky вообще ничего не выводит
          У тебя fenom включен? Если нет, то естественно ничего не выведет. Так, стоп. Ты прописываешь parents. Вопрос, зачем? Я так понял, что у твоих дочерних ресурсов могут быть разные родители. Поэтому и такое решение я тебе предложил.

          То в ресурсе где поле keis заполнено, выводит их титл (т.е. титлы 122 и 123)
          Ты через запятую указал ресурсы? А 124 опубликован? А как у тебя чанк вывода выглядит?

          А в ресурсе где поле keis не заполнено, выводит все титлы 122,123,124
          Логично, что если ты не будешь указывать keis, то выведутся все ресурсы.

          P.S. НЕкэшировать pdoResources не нужно.Он у тебя динамически не меняется.
            алексей
            31 августа 2018, 07:46
            0
            Fenom включин
            Убрал parents
            Пробую итак и так
            вот в шаблоне
            prnt.sc/kox6c3
            вот в ресурсе указываю какие кейсы отображать
            prnt.sc/kox6mp
            На выходе пусто
              Stanislavsky
              31 августа 2018, 09:02
              0
              А остальные параметры прописал? Tpl и т.д.
              Еще раз
              Судя по скринам как я тебе скинул, так ты и прописал. И снова, ЕСТЕСТВЕННО, что работать не будет
                алексей
                31 августа 2018, 14:27
                0
                ну да, а как нужно? я с феном не очень
                сейчас сдлелал так
                {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
            Баха Волков
            31 августа 2018, 02:55
            0
            Для того чтобы не выводились ресурсы если не заполнен TV можно сделать так:

            [[*keis:default=`999999`]]
            
            // т.е.
            
            &resources=`[[*keis:default=`999999`]]`
            Кстати, parents не нужно указывать
            алексей
            03 сентября 2018, 05:47
            0
            и кто не поможет с проблемой?
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              16