Пару лет назад в ядре битрикса появился интересный модуль - модуль идей (для тех, кто не знает, у битрикса на основании этого модуля есть целый раздел). Суть модуля в том, чтобы пользователи сайта делились своими идеями / желаниями / хотелками, а другие пользователи внедряли эти идеи. Была у меня недавно задача, связанная с данным функционалом - на корпоративном портале нужно было поднять раздел с идеями и немного его доработать. Вот о доработке раздела и пойдет речь
К тексту идей нужно было добавить несколько дополнительных полей...
Начну с того, что модуль идей - это, грубо говоря, надстройка над модулем блогов. Одна идея - это сущность класса CBlogPost. Из чего делаем вывод, что все, что применимо к постам блогов, также применимо и к постам идей.
Для реализации механизма добавленных полей, необходимо создать пользовательские свойства для объекта "BLOG_POST".
Для работы с пользовательскими свойствами, можно воспользоваться двумя функциями (взял с форума):
Для получения значения/значений свойства:
function GetUserField ($entity_id, $value_id, $property_id)
{
$arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields ($entity_id, $value_id);
return $arUF[$property_id]["VALUE"];
}
тут: $entity_id - сущность, объект, для которого создано свойство для идей; $value_id - ID идеи; $property_id - идентификатор пользовательского свойства (Название свойства).
Пример использования функции:
$arResult['UF_CATEGORY_CODE'] = GetUserField("BLOG_POST", intval($ID), "UF_CATEGORY_CODE");
Для установки значений используется функция: function SetUserField ($entity_id, $value_id, $uf_id, $uf_value)
{
return $GLOBALS["USER_FIELD_MANAGER"]->Update ($entity_id, $value_id,
Array ($uf_id => $uf_value));
}
Пример использования функции:
SetUserField ("BLOG_POST", intval($ID), "UF_CONFIRMED", "1");
Эти функции могут пригодиться в том случае, если вы планируете делать какие-то свои обработки. Если же для своих целей вы выбрали комплексный компонент идей, то нужно просто в параметр POST_PROPERTY дописать все свойства. Тогда нужно будет только дописать в шаблоне подачи новой формы вывода этих свойств, а в компонентах показа идеи - вывод свойств с помощью функции GetUserField
