Skip to content

Instantly share code, notes, and snippets.

@Mausglov
Last active January 26, 2017 09:19
Show Gist options
  • Save Mausglov/e5b4e427bd7e7bfccba6f60e49176f3a to your computer and use it in GitHub Desktop.
Save Mausglov/e5b4e427bd7e7bfccba6f60e49176f3a to your computer and use it in GitHub Desktop.
скрипт для удаления или создания значений из вкладки SEO раздела инфоблока в Битрикс
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
/*
* "восстановитель" значений в seo-вкладке для подразделов
* алгоритм: на входе имеем список ID разделов. Проходим по этому списку, проверяем, что у раздела с таким ID есть подразделы.
* Если они есть, то прописываем им дефолтные значения - при условии, что там вообще ничего не прописано
* (то есть во всей вкладке seo у такого подраздела сняты флажки).
*/
CModule::IncludeModule("iblock");
$connection = \Bitrix\Main\Application::getConnection();
$bs = new CIBlockSection;
$iblockId = 1;
$total = 0;
$updated = 0;
$approved = 0;
// список Id тех разделов, в которые мы прописали кастомные шаблоны
$sectionIdList = [75654,];
$select = ['ID','IBLOCK_ID'];
$timeLimit = 27;
$time = microtime(true);
define('MODE_CREATE', 1);
define('MODE_DROP', 2);
define('CURRENT_MODE', MODE_CREATE);
foreach ($sectionIdList as $sectionId) {
if ( microtime(true) - $time > $timeLimit ) {
echo "timeout!<br>";
break;
}
// получим подразделы
$filter = ['SECTION_ID' => $sectionId];
$rsSection = CIBlockSection::GetList(['ID' => 'ASC',], $filter, false, $select);
if (!$rsSection->SelectedRowsCount()) {
continue;
}
while ( $row = $rsSection->Fetch() ) {
$total++;
$id = (int)$row['ID'];
// проверяем наличие шаблонов
$sql = "
SELECT ID
FROM
`b_iblock_iproperty`
WHERE
`ENTITY_ID` = {$id}
AND `ENTITY_TYPE` = 'S'
LIMIT 1;
";
$query = $connection->query($sql);
if ( CURRENT_MODE == MODE_DROP ) {
if ($query->getSelectedRowsCount()) {
$approved++;
try {
$ipropTemplates = new \Bitrix\Iblock\InheritedProperty\SectionTemplates( $iblockId, $id);
$ipropTemplates->delete();
$ipropValues = $ipropTemplates->getValuesEntity();
$ipropValues->clearValues();
$updated++;
} catch ( \Bitrix\Main\ArgumentException $e ) {
echo "error! ".$e->getMessage()."<br>";
}
}
} elseif ( CURRENT_MODE == MODE_CREATE )
{
if (!$query->getSelectedRowsCount()) {
$approved++;
$fields = array(
"SECTION_META_TITLE" => 'титл {=this.Name}',
"SECTION_META_KEYWORDS" => 'киводс {=lower {=concat this.sections.name this.name ", "} }',
"SECTION_META_DESCRIPTION" => '{=this.Name} {=lower parent.Name}',
"SECTION_PAGE_TITLE" => 'хэдер {=this.Name}',
);
try {
$ipropTemplates = new \Bitrix\Iblock\InheritedProperty\SectionTemplates( $iblockId, $id);
$ipropTemplates->set($fields);
$ipropValues = $ipropTemplates->getValuesEntity();
$ipropValues->clearValues();
$updated++;
} catch ( \Bitrix\Main\ArgumentException $e ) {
echo "error! ".$e->getMessage()."<br>";
}
}
}
}
}
echo "total: {$total}\napproved: {$approved}\nupdated: {$updated}";
echo "\ndone";
@Mausglov
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment