Помогите с условием pdoPage msProducts fenom.
У категории товаров есть TV поле со значениями, например: детский|для ребенка
Далее хочу вывести товары у которых совпадают теги.
1. Как сделать условие OR в выборке?
2. Почему если вместо optionFilters использовать where, то не срабатывает выборка вообще?
3. Если я теги категории разбиваю через split {set $tag_category = $_modx->resource.category_tags|split:'|'}, то получаю массив
Array ( [0] => детский [1] => для ребенка )
можно ли его запихнуть в условие?
Далее хочу вывести товары у которых совпадают теги.
{'!pdoPage' | snippet : [
'parents' => 9,
'limit' => 12,
'includeThumbs' => 'medium',
'cache' => 1,
'ajaxMode' => 'default',
'tpl' => 'tpl.msProducts.box',
'element' => 'msProducts',
'optionFilters' => '{"tags":"для ребенка"}',
]}
Проблема в следующем:1. Как сделать условие OR в выборке?
2. Почему если вместо optionFilters использовать where, то не срабатывает выборка вообще?
3. Если я теги категории разбиваю через split {set $tag_category = $_modx->resource.category_tags|split:'|'}, то получаю массив
Array ( [0] => детский [1] => для ребенка )
можно ли его запихнуть в условие?
Комментарии: 3
Моих знаний не достаточно, чтобы точно ответить на вопрос.
Но давайте попробуем разобраться вместе))
Но давайте попробуем разобраться вместе))
1. Как сделать условие OR в выборке?
'where' => '{"tv.tags:LiKE":"%для ребенка%", "OR:tv.tags:":"%детский%"}',
2. Почему если вместо optionFilters использовать where, то не срабатывает выборка вообще?Думаю, что optionFilters фильтрует полученный данные, а where задает условия для выборки.
3. Если я теги категории разбиваю через split {set $tag_category = $_modx->resource.category_tags|split:'|'}, то получаю массив
'where' => '{"tv.tags:LiKE":"%'~$tag_category[0]~'%", "OR:tv.tags:":"%'~$tag_category[1]~'"%}',
Или 'where' => $array | json_endode
где $array — массив условий
Спасибо, но тут возникает какая то проблема именно в условии.
'where' => '{"Data.tags:LIKE":"%детский%"}',
не ищет ничего.// должно искать в товарах minishop2.0.0000710: pdoTools loaded.
0.0004618: Conditions prepared
0.0000219: xPDO query object created
0.0001061: leftJoined msProductData as Data
0.0000632: leftJoined msVendor as Vendor
0.0000610: leftJoined msProductFile as medium
0.0000010: Grouped by msProduct.id, `medium`.url
0.0000870: 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`, `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`, `exclude_alias_in_childs`, `properties`
0.0000398: Added selection of msProductData: `article`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`
0.0000329: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
0.0000288: Added selection of msProductFile: url as `medium`
0.0006020: Processed additional conditions
0.0007181: Added where condition: class_key=msProduct, Data.tags:LIKE=%детский%, msProduct.parent:IN(4466,4467,4468,4469,4470,4471,4472,4473,4490,4492,4576,4601), msProduct.published=1, msProduct.deleted=0
0.0000372: Sorted by msProduct.id, ASC
0.0000010: Limited to 12, offset 0
0.0002100: 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`.`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`.`exclude_alias_in_childs`, `msProduct`.`properties`, `Data`.`article`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties`, `medium`.url as `medium` FROM `modx_site_content` AS `msProduct` LEFT JOIN `modx_ms2_products` `Data` ON `msProduct`.`id` = `Data`.`id` LEFT JOIN `modx_ms2_vendors` `Vendor` ON Data.vendor=Vendor.id LEFT JOIN `modx_ms2_product_files` `medium` ON `medium`.product_id = msProduct.id AND `medium`.rank = 0 AND `medium`.path LIKE '%/medium/%' WHERE ( `msProduct`.`class_key` = 'msProduct' AND `Data`.`tags` LIKE '%детский%' AND `msProduct`.`parent` IN (4466,4467,4468,4469,4470,4471,4472,4473,4490,4492,4576,4601) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 ) GROUP BY msProduct.id, `medium`.url ORDER BY msProduct.id ASC LIMIT 12 "
0.0018470: SQL executed
0.0000720: Total rows: 0
0.0000048: Rows fetched
0.0000081: Returning raw data
0.0039980: Total time
40 370 176: Memory usage
Проблема в русском слове. Но даже если пропустить его через json_encode ничего не выводиться. Нужно капать дальше. Если найду решение, отпишусь.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.