Документация для разработчиков
Темная тема

Кастомизация компонента карточки

Кастомизация интерфейса карточки - достаточно типовая задача. Обычно для этого приходилось выносить в local весь компонент (а то и несколько), полностью его копировать и поддерживать.

Для карточки смарт-процесса и новой карточки предложения это немного проще.

Для начала необходимо переопределить сервис роутинга, как в предыдущих примерах.

use Bitrix\Crm\Service;
use Bitrix\Crm\Service\Router;

class MyContainer extends Service\Container {
	public function getRouter(): Router
	{
		return new class extends Router {
			public function parseRequest(HttpRequest $httpRequest = null): Router\ParseResult {
				$result = parent::parseRequest($httpRequest);
                
				if (!defined('SUPER_ENTITY_TYPE_ID'))
				{
					return $result;
				}
            
				if ($result->getComponentName() === 'bitrix:crm.item.details')
				{
					$parameters = $result->getComponentParameters();
					$entityTypeId = $parameters['ENTITY_TYPE_ID'] ?? $parameters['entityTypeId'] ?? null;
					if ((int)$entityTypeId === SUPER_ENTITY_TYPE_ID)
					{
						$result = new Router\ParseResult(
							'dev:crm.item.details',
							$parameters,
							$result->getTemplateName()
						);
					}
				}
            
				return $result;
			}
		};
	}
};

Теперь для одного единственного смарт-процесса за отрисовку детальной карточки будет отвечать отдельный компонент.

Код класса компонента очень компактный, состоит из единственного метода. Большая часть логики сосредоточена в родительском классе.

Код шаблона тоже небольшой. Весь javascript-код вынесен в отдельный js-экстеншн crm.item-details-component..

Можно унаследовать этот экстеншн и подключить его в шаблоне вашего переопределенного компонента.



Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх