Как поженить Wayfinder и msProducts? Новый

Дополнение: msProducts

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

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

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

Комментарии (13)

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

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

          есть вывод:

          [[pdoMenu?
                          &parents=`8`
                          &level=`5`
                          &where=`{"link":"1","master":"[[*id]]"}`
                      ]]
          
          По моему представлению он должен выводить все товары, связанные с данным связью №1.
          Но не выводит. Что я делаю не так?
          1. Andrei D. 17 сентября 2016, 17:29 # +1
            &class=`msProduct`
            ?
            а без where выводит что-нибудь?
            1. Михаил 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
              
              1. Михаил 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
                Находятся в последней категории «Фетальные мониторы», а все, что выше — нужно спрятать. Нужно спрятать все, кроме связей. Поможете?))
                1. Михаил 17 сентября 2016, 18:50 # 0
                  Все-таки не работает(((
    2. Дмитрий 16 сентября 2016, 12:06 # +2
      Насколько я знаю, pdoTools гораздо мощней Wayfinder, GetResources, GetPage и еже с ними вместе взятых, и умеет делать практически любые выборки. Поищите здесь на ресурсе по вопросам и статьям, информации море.
      1. Михаил 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`
        
        Она показывала товары, оплаченные конкретным покупателем. Возможно, ее можно видоизменить под мою нынешнюю задачу?
        1. Мордынский Николай 17 сентября 2016, 21:50 # 0
          Изначально pdoMenu это полный аналог вайфайндера с раширением и допилом от Василия, с тех пор вайфайндер мало менялся а компоненты в pdoTools постоянно расширяются и допиливаются… так что пдо меню даст фору вайфайндеру… у него функционал шире.
          1. Константин Ильин 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>

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