Я хочу настроить модуль Drupal 8, который позволит мне определять разные типы блоков (которые несколько связаны) с разными шаблонами веток для каждого блока.
В настоящее время у меня есть структура папок, которая выглядит так:
modules
custom
templater
src
Plugin
Block
TemplaterBaseBlock.php
TemplaterTwoColumnBlock.php
TemplaterThreeColumnBlock.php
templates
block--templater-two-column.html.twig
block--templater-three-column.html.twig
Вот посмотрите на мой класс TwoColumn:
<?php
/**
* @file
* Contains \Drupal\templater\Plugin\Block\TemplaterBlock.
*/
namespace Drupal\templater\Plugin\Block;
/**
* Provides a 'Templater Two Column' Block
*
* @Block(
* id = "templater_two_column",
* admin_label = @Translation("Templater Two Column"),
* )
*/
class TemplaterTwoColumnBlock extends TemplaterBaseBlock {
/**
* {@inheritdoc}
*/
public function build() {
return [
'#title' => $this->t('test'),
];
}
}
А у моего block--templater-two-column.html.twig
просто {{ title }}
Моя первая проблема Файлы шаблонов на самом деле не работают в том месте, которое я указал выше. На самом деле мне пришлось переместить их в мою тему, чтобы они работали правильно. Я бы очень хотел сохранить файлы шаблонов внутри самого модуля. Кто-нибудь знает, что мне нужно сделать, чтобы включить это?
Моя вторая проблема Я знаю, что когда я только начинал, мне нужно было добиться отображения {{ title }}
на странице. Однако больше ничего не отображается из {{ title }}
. Не уверен, что я изменил, чтобы это произошло.
Наконец, взгляните на мой файл templater.module
:
<?php
/**
* @file
* Code for the example module.
*/
/**
* Theme hook
*/
function templater_theme($existing, $type, $theme, $path) {
return [
'templater' => [
'variables' => [
'title' => null,
],
],
];
}
function templater_preprocess_page(&$variables) {
$variables['#attached']['library'][] = 'templater/global-styling';
}