Как поженить Wayfinder и msProducts?
Добрый день уважаемые знатоки. Мой вопрос в следующем:
На сайте bmsensors.ru есть слева древовидное меню. В карточке товара есть аналог этого меню, который должен выводить все совместимые приблуды (собственно — связи товара) в таком же древовидном варианте.
1. Можно ли используя просто msProducts придать этому выводу нужный вид?
2. Можно ли как-либо гибридизировать msProducts с WayFinder, чтобы получить искомый результат?
Сама страница вот:
http://bmsensors.ru/katalog/oborudovanie/monitory/monitoryi-paczienta/corometrics-250
На сайте bmsensors.ru есть слева древовидное меню. В карточке товара есть аналог этого меню, который должен выводить все совместимые приблуды (собственно — связи товара) в таком же древовидном варианте.
1. Можно ли используя просто msProducts придать этому выводу нужный вид?
2. Можно ли как-либо гибридизировать msProducts с WayFinder, чтобы получить искомый результат?
Сама страница вот:
http://bmsensors.ru/katalog/oborudovanie/monitory/monitoryi-paczienta/corometrics-250
Комментарии: 13
Так msProducts это те же ресуры.
Проще установить 1 пакет, который наверняка уже установлен — pdoTools, организовать вывод через pdoMenu (там даже параметры практически одинаковые) и удалить wayfinder за ненадобностью.
Проще установить 1 пакет, который наверняка уже установлен — pdoTools, организовать вывод через pdoMenu (там даже параметры практически одинаковые) и удалить wayfinder за ненадобностью.
Роман, добрый день. Спасибо за ответ. Остался единственный момент: Сделает ли pdoMenu выборку по параметрам &link и &master для вывода ТОЛЬКО связей товара?
Да, можете издеваться как хотите, там есть where и join'ы
Роман, может Вы подскажете:
есть вывод:
Но не выводит. Что я делаю не так?
есть вывод:
[[pdoMenu? &parents=`8` &level=`5` &where=`{"link":"1","master":"[[*id]]"}` ]]По моему представлению он должен выводить все товары, связанные с данным связью №1.
Но не выводит. Что я делаю не так?
&class=`msProduct`
?а без where выводит что-нибудь?
Все меню целиком. С
Вот лог:
&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
Andrei, спасибо за совет.
Вот работающий код:
Находятся в последней категории «Фетальные мониторы», а все, что выше — нужно спрятать. Нужно спрятать все, кроме связей. Поможете?))
Вот работающий код:
[[pdoMenu? &parents=`10` &level=`6` &class=`msProduct` &where=`{"link:=":"1" AND "master:=":"[[*id]]"}` ]]Возможно, Вы знаете, как спрятать остальные несвязанные категории? Имеется в виду, что все связи к данному товару: bmsensors.ru/katalog/oborudovanie/fetalnye-monitory/coromerics-250-seriya
Находятся в последней категории «Фетальные мониторы», а все, что выше — нужно спрятать. Нужно спрятать все, кроме связей. Поможете?))
Все-таки не работает(((
Насколько я знаю, pdoTools гораздо мощней Wayfinder, GetResources, GetPage и еже с ними вместе взятых, и умеет делать практически любые выборки. Поищите здесь на ресурсе по вопросам и статьям, информации море.
У меня есть вот такая конструкция:
&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`Она показывала товары, оплаченные конкретным покупателем. Возможно, ее можно видоизменить под мою нынешнюю задачу?
Изначально pdoMenu это полный аналог вайфайндера с раширением и допилом от Василия, с тех пор вайфайндер мало менялся а компоненты в pdoTools постоянно расширяются и допиливаются… так что пдо меню даст фору вайфайндеру… у него функционал шире.
Если у вас древовидное меню в 2-а уровня, то можно банально
1. Вызов pdoResource по всем категориям и чанк tplCat
Это если не «парится» лишний раз
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>
Это если не «парится» лишний раз
Костя, спасибо))) Там глубже))) но такой вариант у меня в голове. Просто хочется без костылей)))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.