Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с помощью физической структуры и прав пользователей. Но, намного проще, для контент менеджера и последующей структуризации- это создавать раздел в заранее созданном инфоблоке.
Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с помощью физической структуры и прав пользователей. Но, намного проще, для контент менеджера и последующей структуризации- это создавать раздел в заранее созданном инфоблоке.
Что мы сделаем: При регистрации пользователя будем создавать раздел с его логином в инфоблоке. С помощью API методов 1С-Битрикс "OnAfterUserAdd" и "CIBlockSection"
Для этого — Создаем новый инфоблок на сайте
— в файл /bitrix/php_interface/init.php вставляем код
// Регистрируем обработчик AddSectionInBlock
AddEventHandler("main", "OnAfterUserAdd", Array("AddSectionInBlock", "OnAfterUserAddHandler"));
class AddSectionInBlock
{
// создаем обработчик события "OnAfterUserAdd"
function OnAfterUserAddHandler(&$arFields)
{
if (CModule::IncludeModule('iblock')) {
$bs = new CIBlockSection;
$arFieldsi = Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => 10, //ID инфоблока в котором создастся раздел
"NAME" => $arFields["LOGIN"], //Название раздела с логином пользователя
"CODE" => $arFields["LOGIN"], //Символьный код раздела с логином пользователя
"SORT" => $SORT,
);
if ($ID > 0) {
$res = $bs->Update($ID, $arFieldsi);
} else {
$ID = $bs->Add($arFieldsi);
$res = ($ID > 0);
}
if (!$res)
echo $bs->LAST_ERROR;
}
}
}
Способы применения данного функционала достаточно обширны. Как простой пример: Это фильтровать разделы в кабинете пользователя, куда вы (как администратор) будете складывать элементы, доступные только этому пользователю.
Вариант на D7
Код на Битрикс D7, который создает раздел инфоблока при регистрации пользователя. В этом коде используется пространство имен и классы, что соответствует стандартам D7:
use Bitrix\Main\EventManager;
use Bitrix\Iblock\SectionTable;
use Bitrix\Main\Loader;
class AddSectionInBlock
{
public static function onAfterUserAddHandler(&$arFields)
{
if (Loader::includeModule('iblock')) {
$iblockId = 10; // ID инфоблока, в котором создастся раздел
$sectionData = [
'ACTIVE' => 'Y',
'IBLOCK_ID' => $iblockId,
'NAME' => $arFields['LOGIN'], // Название раздела с логином пользователя
'CODE' => $arFields['LOGIN'], // Символьный код раздела с логином пользователя
'SORT' => 500, // Укажите нужный порядок сортировки
];
// Создаем новый раздел
$result = SectionTable::add($sectionData);
/*
if (!$result->isSuccess()) {
// Если произошла ошибка, выводим ее
$errors = $result->getErrorMessages();
foreach ($errors as $error) {
echo $error;
}
}
*/
}
}
}
// Регистрируем обработчик события
EventManager::getInstance()->addEventHandler(
'main',
'OnAfterUserAdd',
['AddSectionInBlock', 'onAfterUserAddHandler']
);