четверг, 23 сентября 2021 г.

Bitrix Генерация sitemap из highloadblock

 Появилась задача добавить в карту сайта ссылки из HL

<?php

use \Bitrix\Main\Application;

use \Bitrix\Main\IO\File;

use \Bitrix\Seo\SitemapRuntime;

use \Bitrix\Seo\SitemapIndex;

use Bitrix\Highloadblock\HighloadBlockTable as HLBT;

require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");


$arSitemapSettings = array('SITE_ID' => 's1', 'PROTOCOL' => 'https', 'DOMAIN' => 'vash_site.ru');


$sitemapFile = new SitemapRuntime(1, 'sitemap-hl.xml', $arSitemapSettings );//создание нового xml


CModule::IncludeModule('highloadblock');

function GetEntityDataClass($HlBlockId) {

if (empty($HlBlockId) || $HlBlockId < 1) {return false; }

$hlblock = HLBT::getById($HlBlockId)->fetch();

$entity = HLBT::compileEntity($hlblock);

$entity_data_class = $entity->getDataClass();

return $entity_data_class;

}

$entity_data_class = GetEntityDataClass(6);//нужный hl

$rsData = $entity_data_class::getList(array('order' => array('ID'=>'ASC'), 'select' => array('UF_URL')));


while($el = $rsData->fetch()){

$sitemapFile->appendIBlockEntry($el['UF_URL'], getmicrotime());//добавляем url в xml

$sitemapFile->finish();

}


//Добавим новый xml в sitemap.xml

$sitemapFile = new SitemapIndex('sitemap.xml', $arSitemapSettings);

$arFiles = new \Bitrix\Main\IO\File($_SERVER["DOCUMENT_ROOT"] . '/sitemap-hl.xml', 's1');

$sitemapFile->appendIndexEntry($arFiles);

Теперь можно запихнуть это в крон или нужное вам место 

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

Отправить комментарий