В pdoResources при указании контекста выдаёт XML файл с результатами....
День добрый! Я пишу сниппет поиска, в котором мне необходимо указать контекст. Пользуюсь пдоРесурс для этих нужд. При указании контекста мне выдаёт результаты в XML формате, даже не смотря на то, что настройках ресурса, который выводит сниппет, указано не XML, а HTML. Будьте добры, помогите с решением задачи. БлагоДарю!
Код сниппета:
Код сниппета:
<?
// Сниппет поиска v0.1 Beta
$where='';
if(trim($_GET['searchText'])!='') {
$searchText = trim($_GET['searchText']);
}
if(trim($_GET['searchType'])!='') {
$searchType = trim($_GET['searchType']);
}
if(trim($_GET['searchParent'])!='') {
$parents = trim($_GET['searchParent']);
} else {
$parents = '';
}
if(trim($_GET['searchPeriodOt'])!='') {
$searchPeriodOt = trim($_GET['searchPeriodOt']);
$ot = explode('.', $searchPeriodOt);
$otTime = mktime(0,0,0, $ot[1], $ot[0], $ot[2]); // тут начало дня указываем
}
if(trim($_GET['searchPeriodDo'])!='') {
$searchPeriodDo = trim($_GET['searchPeriodDo']);
$do = explode('.', $searchPeriodDo);
$doTime = mktime(23,59,59, $do[1], $do[0], $do[2]); // тут конец дня указываем
}
if($searchText=='') {
return false;
}
// Работаем с типом поиска..
if($searchType=='or') {
$strings = explode(' ', str_replace(array(',','.'), ' ', $searchText));
$strings = array_filter($strings); // удаляем пустые строки
} else {
$strings[] = $searchText;
}
$where .= '"searchable":"1",'; // Указываем, что искать можем только по ресурсам с галочкой "ДОСТУПЕН ДЛЯ ПОИСКА"
//$where .= '"context_key":"'.$modx->context->key.'",'; // Указываем, в какой языковой версии ищем (КОНТЕКСТ)
// Where для строки поиска
if(is_array($strings)) {
foreach($strings as $key => $value)
{
$where .= '"pagetitle:LIKE":"%'.$value.'%","content:LIKE":"%'.$value.'%",';
}
}
// Where для дат (от, до)
if($otTime!='') {
$where .= '"publishedon:>=":"'.$otTime.'",';
}
if($doTime!='') {
$where .= '"publishedon:=<":"'.$doTime.'",';
}
$where = substr($where, 0, -1); // удаляем лишнюю запятую
//print $where; die;
// Параметры указываем
$params = array(
'tpl' => $tpl,
'context' => $modx->context->key,
'parents' => ($parents ? $parents : 0),
'depth' => ($depth ? $depth : 0),
'limit' => ($limit ? $limit : 0),
'select' => ($select ? $select : ''),
'where' => ($where!='' ? '{'.$where.'}' : ''),
);
//print_r($params); die;
$pdoRes = $modx->runSnippet('pdoPage', $params);
if($pdoRes!='') {
if($toPlaceholder) {
$modx->setPlaceholder($toPlaceholder, $pdoRes);
} else {
return $pdoRes.'d';
}
} else {
return false;
}
Комментарии: 4
У тебя где-то в шаблоне вызывается pdoSitemap, который выводит карту сайта и отрубает всё остальное.
БлагоДарю! К сожалению он не в шаблоне вызывается, а на отдельной странице карты сайта. Это норма? Отключаю страницу «опубликован» — сниппет работает хорошо, включаю — такая же беда…
1. Добавь в параметры вызываемого pdoPage
2. Пропиши в своем сниппете в where выбирать только ресурсы, у которых searchable = 1.
У карты сайта, понятно, нужно эту галочку в админке снять.
'includeContent' => 0,
чтобы не выбирать и не выводить контент ресурса.2. Пропиши в своем сниппете в where выбирать только ресурсы, у которых searchable = 1.
У карты сайта, понятно, нужно эту галочку в админке снять.
Извини, всё понял в чём проблема… searchable стоит, но какойто «умелец» у карты сайта проставил «доступен для поиска»… руки бы ему оторвать… БлагоДарю, Василий, помог так помог!!!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.