Drupal → Добавить вкладку/таб/локальную-задачу/local-task для определённого типа материала
Пример добавления вкладки для материалов типа page
:
src/Controller/ModulenameController.php
class ModulenameController extends ControllerBase { public function exampleTabContent(NodeInterface $node) { return ['#markup' => 'Tab content...']; } public function exampleTabAccess(NodeInterface $node) { return AccessResult::allowedIf($node->bundle() === 'page'); } }
modulename.routing.yml
entity.node.example_tab: path: '/node/{node}/example-tab' defaults: _controller: '\Drupal\modulename\Controller\ModulenameController::exampleTabContent' requirements: _custom_access: '\Drupal\modulename\Controller\ModulenameController::exampleTabAccess'
modulename.links.task.yml
entity.node.example_tab: route_name: entity.node.example_tab base_route: entity.node.canonical title: Example tab weight: 2
Использование _custom_access
приводит к одному минусу — объект контроллера будет создаваться на всех страницах где выводятся вкладки материала. Чтобы этого не происходило можно написать свой сервис access_check или просто вынести проверку в глобальную функцию и указать её вместо \Drupal\modulename\Controller\ModulenameController::exampleTabAccess
.
Комментарии
как установить тему для страницы таба,
например, чтоб была как на странице редактирования ноды (админская)
Оставить комментарий