В 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;
}
Министерство нефти и газа Республики Казахстан
modx.pro
897
0

Комментарии: 4

Василий Наумкин
20 августа 2014, 20:56
+1
У тебя где-то в шаблоне вызывается pdoSitemap, который выводит карту сайта и отрубает всё остальное.
    БлагоДарю! К сожалению он не в шаблоне вызывается, а на отдельной странице карты сайта. Это норма? Отключаю страницу «опубликован» — сниппет работает хорошо, включаю — такая же беда…
      Василий Наумкин
      21 августа 2014, 10:07
      +1
      1. Добавь в параметры вызываемого pdoPage
      'includeContent' => 0,
      чтобы не выбирать и не выводить контент ресурса.

      2. Пропиши в своем сниппете в where выбирать только ресурсы, у которых searchable = 1.
      У карты сайта, понятно, нужно эту галочку в админке снять.
        Извини, всё понял в чём проблема… searchable стоит, но какойто «умелец» у карты сайта проставил «доступен для поиска»… руки бы ему оторвать… БлагоДарю, Василий, помог так помог!!!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4