Меню
RSS
Отключить поиск по описаниям товаров в Битрикс
 
Отключить поиск по описаниям товаров в Битрикс

Иногда, нужно отключить поиск по описаниям анонсов и детальному описанию товаров, при разработке сайтов на Битрикс. Сделать это можно, воспользовавшись событием "BeforeIndex" который вызывается перед индексацией элемента методом CSearch::Index.
 
Привет Михаил! Подскажи можно ли в область поиска добавить highloadblock? Куда надо копать в этом случае?
 
Скажите, а на текущей версии битиркса это работает? Просто у нас шаблон не на D7. код прописываем http://prntscr.com/gef8n0 поиск по анонсному описанию не отключается.
 
Цитата
Максим Иванов пишет:
С кажите, а на текущей версии битиркса это работает? Просто у нас шаблон не на D7. код прописываем http://prntscr.com/gef8n0 поиск по анонсному описанию не отключается.
Да, на текущей работает. Попробуйте запустить полную переиндексацию
 
Спасибо огромное! Это как раз то, что надо!
 
не работает
 
Цитата
mt subscribe пишет:
не работает
Что-то делаете не правильно
 
http://prntscr.com/h3gn9x - в init.php добавил код, http://prntscr.com/h3go80 - сделал переиндексацию. Где ошибка? Не работает - выдает найденное в описании.
 
Добрый день! Пытаюсь использовать ваше решение, но положительного результата не добился.
Если вставляю код в файл, который находится в local , то сайт ложится
Если в файл, который находится в bitrix, то после переиндексации поиска нету никаких изменений на странице результатов поиска... могли бы подсказать в чем может быть дело?  
 
У меня заработало... тут ID инфоблока надо прописать
+ я продублировал тот же код в папке  bitrix php_interface init.php
 
К сожалению через пару месяцев данный скрипт перестал работать. Основные изменения на сайте в это время:перенос на VPS настройка агентов на cron ну и так по мелочи.... не знаю из за чего данный скрипт перестал работать....
Полазив по форумам удалось найти вот такой скрипт
Код
AddEventHandler("search", "BeforeIndex", array("SearchHandlers", "BeforeIndexHandler"));

class SearchHandlers
{
   function BeforeIndexHandler($arFields)
   {
      if($arFields["MODULE_ID"] == "iblock")
      {
         if(array_key_exists("BODY", $arFields) && substr($arFields["ITEM_ID"], 0, 1) != "S") // Только для элементов
         {
            $arFields["BODY"] = "";
         }

         if (substr($arFields["ITEM_ID"], 0, 1) == "S") // Только для разделов
         {
            $arFields['TITLE'] = "";
            $arFields["BODY"] = "";
            $arFields['TAGS'] = "";
         }
      }

      return $arFields;
   }
}

Установил его в  bitrix php_interface init.php и все заработало
Изменено: Михаил Базаров - 26.08.2024 13:20:05
 
Проверено, работает!
Не совсем только понятно почему
Код
// $arFields["BODY"] = str_replace (CSearch::KillTags($arElement[$value]) , "", CSearch::KillTags($arFields["BODY"]) );
// а не  
$arFields["BODY"] = "";
Боимся покалечить индекс который хотим удалить?
 
Цитата
Николай Сухих пишет:
Проверено, работает!
Не совсем только понятно почему
Код
 // $arFields["BODY"] = str_replace (CSearch::KillTags($arElement[$value]) , "", CSearch::KillTags($arFields["BODY"]) );
// а не  
$arFields["BODY"] = ""; 
Боимся покалечить индекс который хотим удалить?
Сам отвечу: Боимся удалить из индекса свойства :)
p.s. Спасибо за статью.
 
Все работает, нужно сделать полную переиндексацию (cнять галочку "Переиндексировать только измененные"). Ну и если есть свой модуль, то в него запихнуть, а не в init.php
 
Этот скрипт не работает, если в описании встречаются пробелы  .
В таком случае нужно дополнительно вырезать такие символы из описаний.
 
после установки скрипта, почему то сайт падает. Пробовал и в local и в bitrix, не получается. В чем может быть проблема? Установлено решение от INTEC Universe
 
Проблему решил заключив код в короткий тег - <?
Не забудьте добавить в $arrIblock = array(...); вместо точек, свой id блок
Итоговый код выглядит так:
Код
<?
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
    $arrIblock = array(49);
    $arDelFields = array(
        "DETAIL_TEXT",
        "PREVIEW_TEXT"
    );
    if (
        CModule::IncludeModule('iblock')
        && $arFields["MODULE_ID"] == 'iblock'
        && in_array($arFields["PARAM2"], $arrIblock)
        && intval($arFields["ITEM_ID"]) > 0
    ) {
        $dbElement = CIblockElement::GetByID($arFields["ITEM_ID"]);
        if ($arElement = $dbElement->Fetch()) {
            foreach ($arDelFields as $value) {
                if (isset ($arElement[$value]) && strlen($arElement[$value]) > 0) {
                    $arFields["BODY"] = str_replace(CSearch::KillTags($arElement[$value]), "", CSearch::KillTags($arFields["BODY"]));
                }
            }
        }
        return $arFields;
    }
}

?>
Изменено: Михаил Базаров - 28.08.2024 13:54:49
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Установка Битрикс24 "Интернет-Магазин + CRM" на один домен и настройка работы почты.

Задача: установить лицензию "Интернет-Магазин + CRM" на один домен. Что бы crm была доступна по адресу crm...

Быстрая отписка от всех рассылок модуля "E-mail маркетинг", в кабинете пользователя

Задача: дать пользователям возможность отписаться от всех рассылок "E-mail маркетинга", не только по ссылке из...

Менять большую картинку, при клике на маленькую, в детальной карточке

Мини скриптик, может кому пригодится для каталога товаров или новостей при использовании дополнительных картинок (обычно...

Правильное подключение стилей и скриптов в Битрикс

Есть несколько способов подключения файлов стилей и скриптов, при верстке шаблонов в системе управления 1С-Битрикс. Если...

Вывести производителей на сайте с отбором его товаров из каталога

Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а т...

Звездочки в рейтинге Битрикс статей и товаров каталога

Задача: изменить вывод рейтинга элемента на звездочки, с помощью шаблона iblock.vote в товарах и новостях.

Добавить свойство в административную форму заказа

Задача, кастомизировать административную форму заказа: добавить свойство заказа в шапку формы, в виде картинки. На сайте...

Очистка корзины в 1С-Битрикс одним нажатием

В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием. Требуется это довольно редко,...

Композитный сайт на 1С-Битрикс

Для новых клиентов: Все новые проекты будут включать в себя применение технологии "Композитный сайт" - данная услуга уже...