drupal的block在项目中用到的地方非常多,一般情况都是在后台配置自定义block,有时候也需要在代码中获取block内容:
因为一般我们不知道block的ID,所以都是定义了专门的字段key。
$block = \Drupal::entityTypeManager()->getStorage('block_content')
->loadByProperties(['key' => 'xxx']);
今天我需要使用一个系统block的内容,但是一时不知道怎么获取这个block,于是查了一下。
系统block是没有key的,怎么取呢?
打开Block layout,找到项目下布局的block,找到需要使用的block,点击配置:
Machine name 就是block的ID,再使用ID查询即可:
$block = \Drupal::entityTypeManager()->getStorage('block')
->loadByProperties(['id' => 'ixtend_messages']);
这里就可以看到block的结构啦:
PS:
查看系统所有block的方法:
$blocks = Block::loadMultiple();
这个能看到所有的block及结构
这个方法只能看到ID:
$query = \Drupal::entityQuery('block');
$ids = $query->execute();