Как отключить поиск по описаниям товаров в Битрикс

22.06.2018  09:20

Проблема: Битрикс по-умолчанию ищет и по названиям и по описанием. Попросили поиск по описаниям убрать. А т.к. модуль поиска настраивается чуть более чем никак, штатных возможностей указывать по каким полям искать/индексировать нет, а разные костыли в init.php или вообще не работают или работают только для общего поиска по сайту (search.page) и не работают для поиска в каталоге.

Чукотский трюк: создаём отдельное поле PDETAIL_TEXT тип HTML/текст.
Скрипт переноса детального описания в это поле:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
set_time_limit(0);
ini_set('max_execution_time', '3600');
ini_set('memory_limit', '512M');
$IBLOCK_ID = 12;//catalog
$c = 0;
$c_empty = 0;
CModule::IncludeModule("iblock");
$obE = new CIBlockElement();
global $USER;
if (!$USER->IsAdmin()){
exit;
}
$arSelect = array(
		"ID",
		"NAME",
		"IBLOCK_ID",
		"IBLOCK_SECTION_ID",//added
		"DETAIL_TEXT",
		"ACTIVE",
		"ACTIVE_DATE",
		"SORT",
		"DETAIL_PICTURE"
	);
	$arFilter = array(
		"IBLOCK_ID" => $IBLOCK_ID,
		"IBLOCK_ACTIVE" => "Y",
		// "ID" => 9445,
		// "CODE" => $code,
		//"ACTIVE_DATE" => "Y",
		//"ACTIVE" => "Y",
	);
	$r = CIBlockElement::GetList(
		array(), 
		$arFilter, 
		false, 
		false, 
		$arSelect
	);
	while ( $arCurrentItem = $r->GetNext() ) {//update
			$arFields_update["DETAIL_TEXT"] = '';
		// очищаем Подробное описание
		$obE->Update($arCurrentItem["ID"], $arFields_update);
		$arProps["PDETAIL_TEXT"] = $arCurrentItem["DETAIL_TEXT"];// заполняем наше новое поле
		CIBlockElement::SetPropertyValuesEx($arCurrentItem["ID"], $IBLOCK_ID, $arProps);
		unset($arProps);
		$c++;
	}
echo 'fin: '.$c;

Запускаем переиндексацию, радуемся.

Отдельно угорел что на форме Битрикса есть тема аж от 2010 года, а нормального решения до сих пор нет.


перейти в Блог | Блог (стр. 2)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 45  PHP 57  web-программирование 81  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)