Умный поиск в simplesearch
Есть допустим 3 категории на сайте, где есть ресурсы, можно ли в одно поле для поиска ввести одно значение и передать его для поиска в 3 разных сниппета simplesearch или в один, но чтобы он искал отдельно в каждой категории и потом отдельно, но на одной странице вывел результаты поиска, в разных шаблонах.
Комментарии: 10
У simpleSearch есть параметр ids, можете вызвать 3 сниппета и указать в нем разные категории.
Можно с помощью pdoPage сделать.
Форма с поиском
Результаты
Можно с помощью pdoPage сделать.
Форма с поиском
<form action="/search/" mathod="get">
<input name="search" value="{$.get.search | escape}">
<button>Найти</button>
</form>
Результаты
{set $category1 = '!pdoPage' | snippet : [
'parents' => 0 //тут нужная категория
'includeContent' => 1,
'tpl' => '@INLINE {$pagetitle}',
'where' => [
'pagetitle:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:content:LIKE' => '%'~ $.get.search | escape ~'%'
] | toJSON
]}
{if $category1?}
<div>В каткгории 1 найдено:</div>
{$category1}
{/if}
Круть! Работает. С этой стороны я бы не догадался подойти. Спасибо!
Еще вопрос по работе с TV
добавил в выборку TV параметры, по аналогии
и как прописать в условии поиска поиск по TV параметрам?
добавил в выборку TV параметры, по аналогии
'includeTVs' => 'Adr, NameReal, URL',
но ничего не выводитсяи как прописать в условии поиска поиск по TV параметрам?
'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
По идее так должно работать
Можно добавить параметр showLog => 1 и посмотреть почему не выводится.
'OR:Adr:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:NameReal:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:URL:LIKE' => '%'~ $.get.search | escape ~'%',
Можно добавить параметр showLog => 1 и посмотреть почему не выводится.
в моем вопросе было 2 подвопроса, я видимо их недостаточно четко выделил.
1. как вывести TV параметры при поиске по pagetitle например. То есть сам поиск работает, pagetitle выводится, а TV параметра этого же ресурса — нет
2. да, поиск по самим TV парметрам
по логу все верно, насколько я могу судить
1. как вывести TV параметры при поиске по pagetitle например. То есть сам поиск работает, pagetitle выводится, а TV параметра этого же ресурса — нет
2. да, поиск по самим TV парметрам
по логу все верно, насколько я могу судить
.0003102: pdoTools loaded
0.0000761: xPDO query object created
0.0009470: Included list of tvs: Adr, NameReal, URL
0.0004930: leftJoined modTemplateVarResource as TVadr
0.0004148: leftJoined modTemplateVarResource as TVnamereal
0.0003688: leftJoined modTemplateVarResource as TVurl
0.0005469: Added selection of modResource: 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.0000148: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.Adr`
0.0000100: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.NameReal`
0.0000091: Added selection of modTemplateVarResource: IFNULL(`value`, 'нет') AS `tv.URL`
0.0000210: Replaced TV conditions
0.2391658: Processed additional conditions
0.2410922: Added where condition: pagetitle:LIKE=%авто%, OR:content:LIKE=%авто%, modResource.id:NOT IN(999,1002,1001), modResource.parent:IN(998,999,1001,1002,1067,1068,1069,1070,1599,1641,1642,1643,1644,1645,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3755,3756,3757), modResource.published=1, modResource.deleted=0
0.0000241: Replaced TV conditions
0.0002000: Sorted by modResource.pagetitle, ASC
0.0000050: Limited to 10, offset 0
0.0057361: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `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`.`content`, `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`, IFNULL(`TVtstadr`.`value`, '') AS `tv.TstAdr`, IFNULL(`TVtstnamereal`.`value`, '') AS `tv.TstNameReal`, IFNULL(`TVtstmcc`.`value`, '') AS `tv.TstMCC`, IFNULL(`TVtsturl`.`value`, 'нет') AS `tv.TstURL` FROM `LdfDfd3mc_site_content` AS `modResource` LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstadr` ON `TVtstadr`.`contentid` = `modResource`.`id` AND `TVtstadr`.`tmplvarid` = 5 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstnamereal` ON `TVtstnamereal`.`contentid` = `modResource`.`id` AND `TVtstnamereal`.`tmplvarid` = 6 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstmcc` ON `TVtstmcc`.`contentid` = `modResource`.`id` AND `TVtstmcc`.`tmplvarid` = 7 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtsturl` ON `TVtsturl`.`contentid` = `modResource`.`id` AND `TVtsturl`.`tmplvarid` = 8 WHERE ( `modResource`.`pagetitle` LIKE '%авто%' OR `modResource`.`content` LIKE '%авто%' AND `modResource`.`id` NOT IN (999,1002,1001) AND `modResource`.`parent` IN (998,999,1001,1002,1067,1068,1069,1070,1599,3756,3757) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.pagetitle ASC LIMIT 10 "
0.0270789: SQL executed
0.0057619: Total rows: 102
0.0001559: Rows fetched
0.0121310: Prepared and processed TVs
0.0090630: Loaded "modChunk" with name "SmartSearchTST.tpl"
0.0431590: Compiled Fenom chunk with name "modchunk/14"
0.0529652: Returning processed chunks
0.3491061: Total time
16 252 928: Memory usage
вывожу TV также как {$adr}
Документация, tvPrefix
либо так
либо укажите tvPrefix пустым
либо так
{$tv.adr}
либо укажите tvPrefix пустым
'tvPrefix' => ''
{$adr}
в будущем указывайте пустой tpl и увидите массив с плейсхолдерами, а с ним уже можно танцевать 'tvPrefix' => ''
точно же!
Пытаюсь вывести 2 категории вместе
{set $category1 = '!pdoPage' | snippet : [
'parents' => 0 //тут нужная категория
'includeContent' => 1,
'tpl' => '@INLINE {$pagetitle}',
'where' => [
'pagetitle:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:content:LIKE' => '%'~ $.get.search | escape ~'%'
] | toJSON
]}
{if $category1?}
<div>В каткгории 1 найдено:</div>
{$category1}
{/if}
{set $category2 = '!pdoPage' | snippet : [
'parents' => 10 //тут нужная категория
'includeContent' => 1,
'tpl' => '@INLINE {$pagetitle}',
'where' => [
'pagetitle:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
'OR:content:LIKE' => '%'~ $.get.search | escape ~'%'
] | toJSON
]}
{if $category2?}
<div>В каткгории 1 найдено:</div>
{$category2}
{/if}
но второй вывод дублирует первый, хотя значения parents разные и во втором parents точно нет таких ресурсов.
Попробуйте вместо pdoPage указать pdoResources, возможно конфликтуют 2 pdoPage.
без разницы, такое ощущение что он вообще не учитывает
'parents' => 10
у меня была ошибка, там не было запятой, но это ничего не изменило. пробовал id родителя и в кавычки заключать — результат одинаковый. даже если я меняю id родителя — все равно выводятся те же самые ресурсы.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.