3

我创建了一个创建自定义块的模块:

<?php
/**
 * Provides a 'SLS Block' Block
 *
 * @Block(
 *   id = "SLS-Subheader",
 *   admin_label = @Translation("SLS Subheader"),
 * )
 */

namespace Drupal\subheader\Plugin\Block;

use Drupal\Core\Block\BlockBase;

class SubheaderBlock extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {


    return array(
      '#title' => "test",
    );
  }
}
?>

模块名称是“副标题”

在我的 subheader.module 中,我想挂钩一个特定的模板:

<?php
/**
 * Implements hook_theme().
*/

function subheader_theme() {
  return array(
    'slssubheader' => array(
      'variables' => array('pierre' => NULL),
      'template' => 'specifictemplate',
    ),
  );
}

我为函数名和数组键尝试了各种命名约定,但总是不成功。它从不将模板挂钩到 specifictemplate.html.twig

任何人有一个想法?

感谢 LOOOOTTT

皮埃尔

4

1 回答 1

1

我有同样的问题,虽然可能是不同的原因。谷歌虽然引导我回答你的问题。您的代码的问题是我相信您的构建方法中缺少#theme 键:

public function build() {
    return array(
      '#title' => "test",
      '#theme' => 'slssubheader' // this one
    );
}

在我的情况下,我不得不搜索几个小时才发现我不小心将自定义命名空间添加到我的 .module 文件中。Drupal 不喜欢这样并且不认识我的任何钩子。

于 2016-04-09T19:18:32.523 回答