Коротко — это не одна‑строчная правка, потому что «статус» в компоненте bitrix:idea — не просто текст в шаблоне, а часть бизнес‑логики/данных. Ниже — универсальная пошаговая инструкция и пример, как это делается безопасно (без правки ядра Bitrix). Если скажете версию Bitrix (Site Manager / Bitrix24 self‑hosted) и пришлёте код своего компонента — дам точный фрагмент кода.
Основная идея:
- не правьте core (/bitrix/components/bitrix/idea/) — скопируйте компонент в /local/components или /bitrix/components/your.vendor/idea;
- добавьте новую константу/запись статуса в список статусов, подключите текст в lang-файле;
- поправьте обработчик смены статуса (в component.php) чтобы он понимал новый статус и записывал его в базу через API модуля;
- при необходимости добавьте интерфейс (кнопку/пункт меню) в шаблон для установки статуса;
- обновите существующие записи через API или админку и очистите кеш.
Пошагово
1) Копирование компонента
- Скопируйте /bitrix/components/bitrix/idea/ в /local/components/yourname/idea/ (или в /bitrix/components/yourname/idea/). Так вы избежите перезаписи при обновлении.
2) Найдите, где в компоненте описан список статусов
- В component.php или в подключаемых файлах ищите массивы/перечисления с ключами "STATUS", "STATUS_LIST", "IDEA_STATUS" и т.п. (grep по «STATUS», «status», «IDEA» поможет).
- Обычно в $arResult формируется список статусов для отображения.
3) Добавьте новый статус и язык
- В lang/ru/component.php добавьте:
$MESS['IDEA_STATUS_REJECTED'] = 'Отклонено';
- В том месте, где собирается список статусов, добавьте элемент, например:
$arResult['STATUS_LIST']['REJECTED'] = array(
'ID' => 'REJECTED',
'NAME' => GetMessage('IDEA_STATUS_REJECTED'),
'SORT' => 200,
'COLOR' => '#ff0000' // если используется цвет
);
4) Обработка запроса на смену статуса
- В component.php (или в обработчике AJAX в /ajax.php если есть) добавьте разрешение на установку нового статуса: проверьте права текущего пользователя (обычно уже есть блок проверки прав на изменение статуса).
- Используйте API модуля Idea для сохранения статуса. Если есть класс CIdea или аналогичный, вызов похож на:
CIdea::Update($ideaId, array('STATUS' => 'REJECTED'));
(Имя метода может отличаться — уточните в вашей версии: ищите функции Update/SetStatus в модулях/idea.)
- Если API отсутствует, обновите поле через ORM/модель или через $DB->Query — но лучше через API.
5) Интерфейс (шаблон)
- В шаблоне (template.php) добавьте кнопку/ссылку «Отклонено», которая будет посылать POST/AJAX запрос с id идеи и новым статусом.
- Пример кнопки:
<a href="#" data-id="<?= $ID ?>" data-status="REJECTED" class="idea-set-status">Отклонено</a>
- Подключите JS, который отправляет запрос на component.php/ajax.php и обрабатывает ответ.
6) Обновление существующих идей
- Если нужно массово проставить статус, используйте админку (если есть UI) или скрипт:
CIdea::Update($id, array('STATUS'=>'REJECTED'));
либо прямой SQL (только если API нет и вы понимаете риски).
7) Очистка кеша
- После правок очистите кеш компонентов / кеш сайта.
Советы и предостережения
- Не правьте файлы в /bitrix/modules или /bitrix/components/bitrix напрямую.
- Всегда делайте бэкап БД перед массовыми обновлениями.
- Проверьте, где в коде используются текущие статусы (фильтры, уведомления, статистика) — возможно, потребуется допилить обработчики.
- В облачном Bitrix24 (cloud) многие ядровые модули нельзя изменить — уточните тип системы.
Если хотите — пришлите:
- версию Bitrix (Site Manager, D7, Bitrix24 self‑hosted),
- путь к вашему компоненту (если он кастомный) или скрин/фрагмент кода, где собираются статусы,
и я подготовлю конкретный патч/фрагмент кода для вставки.