Переіндексація сайту на 1с-бітрікс за розкладом
Здрастуйте дорогі Новомосковсктелі!
У сьогоднішній статті мова піде про переиндексации сайту за розкладом.
Зіткнулися з таким завданням: на сайті щодня відбувається імпорт товарів в форматі CSV. У Інфоблоки налаштоване все правильно (прапорець індексувати елементи для модуля пошуку - встановлений). У товару є властивість артикул. Це властивість бере участі в пошуку. Після імпорту, пошук не може знайти нові товари. Причина виявилася в тому, що ні переіндексувати пошуковий індекс у товарів. Рішення проблеми: Налаштування> Пошук> Переіндексація. запустити переіндексацію. якщо ви завантажуєте базу в ручну і не часто. У моєму випадку це рішення не підходило, тому що переіндесіровать пошук вручну кожен день мені не представлялося цікавим заняттям. Реалізація рішення проблеми складалася з 2-ух етапів:
Скрипт для переиндексации сайту.
Функція bitrix api для переиндексации сайту - CSearch :: ReIndexAll. Вона приймає 4 параметра:
- Якщо дорівнює true, то на першому кроці пошуковий індекс буде повністю очищений. За замовчуванням дорівнює false, що призводить до перебудови індексу тільки тих елементів, вміст яких змінилося.
- Якщо заданий і більше нуля, то як тільки час виконання функції перевищить значення цього параметра, її виконання завершиться. Дані для початку наступного кроку будуть повернуті як результат роботи функції.
- Зберігає стан процесу індексації (прогрес) на початок кроку.
- Видаляє історію / статистику підказок для рядка пошуку. Необов'язковий параметр, за замовчуванням приймає значення false.
У мене вийшов наступний код:
Скрипт для переиндексации сайту на 1с-Бітрікс написаний. Функцію додамо в файл /bitrix/php_interface/init.php. Переходимо до другого етапу.
Створюємо агента для виконання скрипта в CMS бітрікс.

Поясню значення полів:
- дата останнього запуску - якщо агент періодичний, то буде виведено час останнього запуску при його редагуванні;
- дата і час наступного запуску - час старту роботи агента, якщо він не періодичний то виконається 1 раз в цей час;
- модуль - цей модуль буде автоматично підключатися, а саме буде підключатися файл / bitrix / modules / ID модуля / include.php. в цьому випадку необхідно переконатися, що функція-агент буде доступна після підключення цього файлу; як варіант, я міг написати так:

попередньо додавши функцію, отриману на 1-му етапі, в клас CSearchStatistic, який знаходиться в файлі /bitrix/modules/search/classes/general/statistic.php. Але краще використовувати варіант, який я описав вище, тому що він більш мобільний.
- функція агента - це основне поле, ім'я функції, яку я написав в першому етапі це - Reindex_Search ();
- ID користувача - це фільтр виконання на хіті для певного користувача;
- Інтервал я задав 86400 секунд, що є 24 години.
Переіндексація сайту на 1с-Бітрікс за розкладом (кожен день) готова.
Поділитися 0 0 0 0