Битрикс – очистить кэш SEO вкладки

Когда пишешь свои скрипты, и на сайте активно работают правила по формированию мета тегов, главное не забыть про кеш.

Как удалить кеш мета тегов в битриксе

Задача: текст описания участвует в формуле SEO вкладки. Но сейчас он содержит теги. Необходимо почистить от тегов текст анонса.
ВАЖНО! Перед стартом работ сохраняйте копию базы \ сайта и т.д. А еще лучше делайте на тестовом поддомене.
Наш код выглядит примерно так:

$res = CIBlockElement::GetList (
	Array("ID" => "ASC"),
	Array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y"),
	false,
	false,
	Array('ID', 'NAME', 'PREVIEW_TEXT')
);
while ($arItem = $res->GetNext()) {
$newTxt = '';
$newTxt = strip_tags(html_entity_decode($arItem['PREVIEW_TEXT']));
// update
$el = new CIBlockElement;
$arLoadProductArray = Array(
	"MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
	"PREVIEW_TEXT"   => $newTxt,
	"PREVIEW_TEXT_TYPE" =>"html",
);

echo $PRODUCT_ID = $arItem['ID'];  // изменяем элемент с кодом (ID) 2
if ($ress = $el->Update($PRODUCT_ID, $arLoadProductArray, true, true)) {
	echo 'UPDATED '.$arItem['NAME']."
"; } else { echo "Error: ".$el->LAST_ERROR; } .....

html_entity_decode – очищает html сущности и переводит их в правильный формат
strip_tags – удаляет html и PHP теги

Заходим в элемент, и видим что там всё нормально. Открываем исходный код страницы.. и видим что там старое закешированное значение. Сброс кеша не помогает, переиндексация тоже – что делать? Помогает кнопка “Сохранить \ Применить”, но не будем же мы в каждом товаре её клацать?

Нужно дописать наш скрипт, и сбросить кеш у каждого элемента.

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Iblock\InheritedProperty;

....
// clear cache
$ipropValues = new InheritedProperty\ElementValues($IBLOCK_ID, $arItem['ID']);
$ipropValues->clearValues(); 

Таким образом, мы перезаписываем текст анонса, и сбрасываем закешированное значение для SEO формул, для каждого отдельного элемента.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *