Форма поиска

Не получается?

Не получается решить проблему с Друпалом?

Готовы помочь делом и советом. Стоимость часа - 500 руб.

Запросить помощь

Поделитесь ссылкой:

Создание модуля в Drupal 8

Друпал 8 имеет отличную от Друпал 7 архитектуру, поэтому процесс написания собственного модуля существенно отличается от принятого в прошлых версиях Друпал. Однако, не все так страшно. Пусть, название нашего модуля будет formatixsample.

Где разместить файлы модуля? Можно выбрать несколько мест: в каталоге /modules, в каталоге /sites/all/modules, либо, при мультисайтинговой конфигурации - в каталоге /sites/mysite/modules.

Мы добавим папку /modules/formatixsample (для ясности я буду всегда указывать абсолютные пути от корня), а в ней создадим файл описания модуля formatixsample.info.yml. Это файл в формате YAML, содержащий всю информацию о нашем модуле:

name: Пример модуля
description: Описание нашего модуля
package: Название группы модулей
type: module
version: 1.0
core: 8.x

Перейдем в раздел "расширить" и в списке обнаружим название нашего модуля:

Опишем системный путь, по которому мы сможем обратиться к нашему модулю. Теперь для этого служит отдельный файл formatixsample.routing.yml, определяющий путь, права доступа, заголовок и контроллер, генерирующий содержимое:

formatixsample.content:
  path: '/formatixsample'
  defaults:
    _controller: 'Drupal\formatixsample\Controller\FirstController::content'
    _title: 'Тра ля ля. Это наш модуль.'
  requirements:
    _permission: 'access content'

Мы указали путь /formatixsample, права доступа -  access content (доступ к содержимому - так же как к обычным материалам) и указали на наш контроллер, осуществляющий вывод.

Контроллер нужно поместить в папку /modules/formatixsample/src/Controller нашего модуля в файл FirstController.php. Регистр имен на сервере под управлением linux - важен!

namespace Drupal\formatixsample\Controller;
 
use Drupal\Core\Controller\ControllerBase;
 
class FirstController extends ControllerBase {
  public function content() {
    return array(
      '#type' => 'markup',
      '#markup' => 'Привет! Это вывод нашего модуля.',
    );
  }
}

В строке namespace мы описали наше пространство имен, далее - унаследовали свой контроллер от базового ControllerBase, переопределив метод content(). Все просто.

Включим наш модуль в разделе "Расширить" и перейдем по адресу http://yoursite.ru/formatixsample. В браузере отобразится вывод нашего контроллера, а страница будет иметь заданный нами заголовок:

Создадим пункт меню. Если раньше системный путь и меню - были одной сущностью, то в Друпал 8 эти понятия разделены. Пункты меню описываются в специальном файле formatixsample.links.menu.yml, который следует поместить в корневую папку модуля: /modules/formatixsample:

formatixsample.admin:
  title: 'Меню нашего модуля'
  description: 'Описание пункта меню'
  parent: system.admin_config
  route_name: formatixsample.content
  weight: 9

Кроме понятных заголовка и описания пункта, здесь указаны ссылка на системный путь (formatixsample.content), что мы задали в файле formatixsample.routing.yml, а также - местоположение в меню: system.admin_config и вес 9, определяющий порядок в меню.

Для того, чтобы перестроить меню - очистим кэш Друпала. В результате, в списке появится наш пункт:

В следующих статьях создадим блок и форму. Stay turned!

Полезна ли для вас эта информация?: 
5
Ваша оценка: Нет В среднем: 5 (2 голосов)

Размещение и поддержка сайтов на Drupal

Предлагаем услуги по размещению и поддержке сайтов, разработанных как в нашем бюро, так в других веб-студиях.

Мы готовы взять на себя все работы по поддержке вашего сайта или электронного магазина и гарантируем его доступность и безопасность.

Подробнее ...

Предметная фотосъемка

Выполним профессиональную фотосъемку вашей продукции, офиса, производства, участка или любых других объектов.

Оплата услуг

Оплатить услуги разработки, модернизации, поддержки и размещения сайтов можно любыми удобными вам способами как в интернете, так и оффлайн. Оформляются все бухгалтерские документы.

Оплата услуг