Появилась задача добавить в карту сайта ссылки из 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);
Теперь можно запихнуть это в крон или нужное вам место
Комментариев нет:
Отправить комментарий