(Drupal8)创建自定义block

原文链接:

https://www.drupal.org/node/2101565

译文:

Drupal8 的block都是block插件的实例。

Drupal的block管理器扫描你的模块里面所有包含了

@Block

注解的类。

下面的代码片段展示了一个例子来定义一个block,使用了@Block注释以及“id”和“admin_label”属性。

在你之前创建好的module目录结构下面创建创建文件

src/Plugin/Block/HelloBlock.php

并且添加以下代码,并且需要你清楚缓存。

<?php
namespace Drupal\hello_world\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
 * Provides a 'Hello' Block
 *
 * @Block(
 *   id = "hello_block",
 *   admin_label = @Translation("Hello block"),
 * )
 */
 class HelloBlock extends BlockBase {  
   /**
   * {@inheritdoc}
   */
  public function build() {    
      return array(      
          '#markup' => $this->t('Hello, World!'),
        );
  }
}

如果想要添加“Hello block”的话,你需要去到

Structure -> Block Layout (admin/structure/block)

并且点击“Place Block”按钮关联每一个可用的区域(region)。

点击已经给出的区域列表的“Place Block”按钮,将会出现一个对话框,列出了所有可用 的block,想要快速查找你定义的block,简单实用“Filter by block name”选项或者使用鼠标滚动定位到“Hello block”。通过这种方式,你可以添加任意多个自定义block实例到你的网站上面。

注意:类名跟文件名必须一致(类HelloBlock 和/src/Plugin/Block/HelloBlock.php)。如果类名不一样的话,block会出现在你的block列表上面,但是你将不能添加它。