Как лучше в Битрикс24 (коробка) вывести свою кнопку вместо значения пользовательского свойства?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: подскажите, у меня есть модуль, в нем добавлена в папку install установка компонента — добавление кнопки в карточку сущности смарт-процесса, она отрисовывается через вывод пользовательского поля кастомного. Кнопка появляется, но ее видно, только если нажать на поле как редактирование, а до этого момента пишет «Не заполнено». Проверял в разные шаблоны компонентов вывод отображения кнопки, но не работает.

Сейчас ситуация такая: указывал 'RENDER_COMPONENT' => self::RENDER_COMPONENT, чтобы Bitrix знал, какой компонент использовать для отображения но не работает

Каким способом отображать кнопку постоянно?
692607e7398a1436837098.png
692607ee4b0a5924018387.png
6926083808880899867678.png

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

В коробочном Битрикс24 вывод своей кнопки вместо значения пользовательского свойства лучше делать через кастомизацию шаблона/компонента или пользовательское поле с отдельной логикой отображения, а не правкой ядра. Конкретный путь зависит от места вывода: карточка CRM, список, детальная страница, бизнес-процесс или публичный компонент.

Если речь про свой компонент/страницу в коробке, самый простой вариант — при выводе значения проверять поле и вместо текста рендерить кнопку:

if (!empty($arResult['UF_MY_FIELD'])) {
    echo '<a class="ui-btn ui-btn-primary" href="/local/tools/action.php?id=' .
        (int)$arResult['ID'] . '">Выполнить</a>';
}

if (!empty($arResult['UF_MY_FIELD'])) { echo '<a class="ui-btn ui-btn-primary" href="/local/tools/action.php?id=' . (int)$arResult['ID'] . '">Выполнить</a>'; }

Если это стандартная CRM-карточка, прямое изменение вывода сложнее. Там лучше использовать расширение JS или кастомный tab/placement, если доступно. Для коробки можно подключить своё JS-расширение через события/Asset и заменить отображение на клиенте, но это хрупче, чем серверный шаблон.

Если кнопка должна запускать действие, не делайте его только через GET без проверки прав. Нужны CSRF/bitrix_sessid, проверка текущего пользователя и прав на элемент.

if (!check_bitrix_sessid()) {
    die('Bad sessid');
}

if (!check_bitrix_sessid()) { die('Bad sessid'); }

Правки размещайте в /local/: компонент, шаблон, JS-расширение или обработчик события. В /bitrix/ руками не лезьте, иначе обновление коробки перетрёт изменения.

Итог: если это ваш шаблон — выводите кнопку серверно вместо значения поля. Если стандартная CRM-карточка — делайте отдельное расширение/вкладку/JS, но с проверкой прав и sessid. Ядро Битрикс24 не править.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно