Как поженить Wayfinder и msProducts?

Добрый день уважаемые знатоки. Мой вопрос в следующем:
На сайте bmsensors.ru есть слева древовидное меню. В карточке товара есть аналог этого меню, который должен выводить все совместимые приблуды (собственно — связи товара) в таком же древовидном варианте.

1. Можно ли используя просто msProducts придать этому выводу нужный вид?
2. Можно ли как-либо гибридизировать msProducts с WayFinder, чтобы получить искомый результат?

Сама страница вот:
http://bmsensors.ru/katalog/oborudovanie/monitory/monitoryi-paczienta/corometrics-250
Михаил
15 сентября 2016, 14:16
modx.pro
1 370
0

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

Роман Садоян
16 сентября 2016, 09:13
0
Так msProducts это те же ресуры.

Проще установить 1 пакет, который наверняка уже установлен — pdoTools, организовать вывод через pdoMenu (там даже параметры практически одинаковые) и удалить wayfinder за ненадобностью.
    Михаил
    16 сентября 2016, 11:45
    0
    Роман, добрый день. Спасибо за ответ. Остался единственный момент: Сделает ли pdoMenu выборку по параметрам &link и &master для вывода ТОЛЬКО связей товара?
      Роман Садоян
      16 сентября 2016, 13:33
      0
      Да, можете издеваться как хотите, там есть where и join'ы
        Михаил
        17 сентября 2016, 16:06
        0
        Роман, может Вы подскажете:

        есть вывод:

        [[pdoMenu?
                        &parents=`8`
                        &level=`5`
                        &where=`{"link":"1","master":"[[*id]]"}`
                    ]]
        
        По моему представлению он должен выводить все товары, связанные с данным связью №1.
        Но не выводит. Что я делаю не так?
          Andrei D.
          17 сентября 2016, 17:29
          +1
          &class=`msProduct`
          ?
          а без where выводит что-нибудь?
            Михаил
            17 сентября 2016, 17:49
            0
            Все меню целиком. С
            &class=`msProduct`
            — тоже ничего(((
            Вот лог:
            0.0073318: pdoTools loaded
            0.0000429: xPDO query object created
            0.0004759: Added selection of msProduct: 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.0038021: Processed additional conditions
            0.0046010: Added where condition: Data.link=1, Data.master=53, msProduct.parent:IN(10,90,150,163,170,178,91,95,99,109,115,119,122,129,136,139,143,146,149,92,93,94,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,237,242,245,246,247,248,250,252,254,255,256,257,258,259,260,261,337,338,339,340,96,97,98,463,464,465,466,467,468,100,103,106,101,102,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,104,105,305,312,307,308,309,313,314,311,315,316,317,318,319,320,321,322,323,324,107,108,295,296,329,330,331,332,333,334,335,336,110,111,112,113,114,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,116,117,118,469,470,471,472,473,475,120,121,530,531,532,533,534,519,520,521,522,523,524,525,526,528,535,123,126,124,125,127,128,130,133,131,132,264,262,263,134,135,497,498,499,500,501,137,138,510,511,512,513,514,515,516,517,518,140,141,142,502,503,505,504,507,508,509,144,145,476,477,478,479,147,148,151,154,159,160,161,162,152,153,155,156,157,158,164,165,166,167,168,169,171,175,176,172,173,174,177,179,180,181,185,490,491,492,493,182,183,484,485,486,487,488,489,494,495,496), OR:msProduct.id:IN(386,529), msProduct.published=1, msProduct.hidemenu=0, msProduct.deleted=0, msProduct.context_key=web
            0.0000629: Sorted by msProduct.menuindex, ASC
            0.0006840: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`content`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties` FROM `modx_site_content` AS `msProduct` WHERE  ( `Data`.`link` = '1' AND `Data`.`master` = '53' AND  ( `msProduct`.`parent` IN (10,90,150,163,170,178,91,95,99,109,115,119,122,129,136,139,143,146,149,92,93,94,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,237,242,245,246,247,248,250,252,254,255,256,257,258,259,260,261,337,338,339,340,96,97,98,463,464,465,466,467,468,100,103,106,101,102,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,104,105,305,312,307,308,309,313,314,311,315,316,317,318,319,320,321,322,323,324,107,108,295,296,329,330,331,332,333,334,335,336,110,111,112,113,114,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,116,117,118,469,470,471,472,473,475,120,121,530,531,532,533,534,519,520,521,522,523,524,525,526,528,535,123,126,124,125,127,128,130,133,131,132,264,262,263,134,135,497,498,499,500,501,137,138,510,511,512,513,514,515,516,517,518,140,141,142,502,503,505,504,507,508,509,144,145,476,477,478,479,147,148,151,154,159,160,161,162,152,153,155,156,157,158,164,165,166,167,168,169,171,175,176,172,173,174,177,179,180,181,185,490,491,492,493,182,183,484,485,486,487,488,489,494,495,496) OR `msProduct`.`id` IN (386,529) )  AND `msProduct`.`published` = 1 AND `msProduct`.`hidemenu` = 0 AND `msProduct`.`deleted` = 0 AND `msProduct`.`context_key` = 'web' )  ORDER BY msProduct.menuindex ASC "
            0.0007980: Could not process query, error #1054: Unknown column 'Data.link' in 'where clause'
            0.0000820: Tree was built
            0.0151639: Total time
            9 437 184: Memory usage
            
              Михаил
              17 сентября 2016, 18:20
              0
              Andrei, спасибо за совет.
              Вот работающий код:
              [[pdoMenu?
                              &parents=`10`
                              &level=`6`
                              &class=`msProduct`
                              &where=`{"link:=":"1" AND "master:=":"[[*id]]"}`
                          ]]
              
              Возможно, Вы знаете, как спрятать остальные несвязанные категории? Имеется в виду, что все связи к данному товару: bmsensors.ru/katalog/oborudovanie/fetalnye-monitory/coromerics-250-seriya
              Находятся в последней категории «Фетальные мониторы», а все, что выше — нужно спрятать. Нужно спрятать все, кроме связей. Поможете?))
                Михаил
                17 сентября 2016, 18:50
                0
                Все-таки не работает(((
    Дмитрий
    16 сентября 2016, 12:06
    +2
    Насколько я знаю, pdoTools гораздо мощней Wayfinder, GetResources, GetPage и еже с ними вместе взятых, и умеет делать практически любые выборки. Поищите здесь на ресурсе по вопросам и статьям, информации море.
      Михаил
      17 сентября 2016, 19:41
      0
      У меня есть вот такая конструкция:
      &innerJoin=`{
                  		"OrderProduct": {"class":"msOrderProduct", "on":"msProduct.id = OrderProduct.product_id"},
                  		"Order": {"class":"msOrder", "on":"Order.id = OrderProduct.order_id"}
                  	}`
                  	&where=`{
                  		"Order.user_id": [[!+modx.user.id]],
                  		"Order.status:>": 1
                  	}`
                  	&groupby=`msProduct.id`
      
      Она показывала товары, оплаченные конкретным покупателем. Возможно, ее можно видоизменить под мою нынешнюю задачу?
        Мордынский Николай
        17 сентября 2016, 21:50
        0
        Изначально pdoMenu это полный аналог вайфайндера с раширением и допилом от Василия, с тех пор вайфайндер мало менялся а компоненты в pdoTools постоянно расширяются и допиливаются… так что пдо меню даст фору вайфайндеру… у него функционал шире.
          Константин Ильин
          17 сентября 2016, 22:00
          0
          Если у вас древовидное меню в 2-а уровня, то можно банально

          1. Вызов pdoResource по всем категориям и чанк tplCat
          [[pdoResources? 
              &parents=`8` 
              &tpl=`tplCat`
          ]]
          2. В чанке tplCat вызов msProduct
          [[msProducts? 
              &tpl=`product_item_menu`
              &link=`1` 
              &parents=`[[+id]]`
              &master=`[[*id]]`
              &tplWrapper=`@INLINE <li>[[+pagetitle]]</li><ul>[[+output]] </ul>`
          ]]
          3. Чанк product_item_menu например:
          <li><a href="[[+uri]]">[[+pagetitle]]</a><li>

          Это если не «парится» лишний раз
            Михаил
            17 сентября 2016, 23:53
            0
            Костя, спасибо))) Там глубже))) но такой вариант у меня в голове. Просто хочется без костылей)))
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            13