Как организовать шаблоны блоков Drupal 8 в модуле?

Я хочу настроить модуль 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';
}

person Justin    schedule 14.10.2016    source источник
comment
Я смог во всем разобраться.   -  person Justin    schedule 14.10.2016