如何在词汇表页面中显示的表中添加列?


9

我需要在页面中显示的表中添加一列,其中列出了为网站定义的词汇。我该如何实现?

词汇表

Answers:


10

您将需要重写此页面上生成列表构建器输出的类,然后用所需的内容填充方法:

  /**
   * {@inheritdoc}
   */
  public function buildHeader() {
    $header['label'] = t('Vocabulary name');
    $header['foo'] = t('Custom Header');
    return $header + parent::buildHeader();
  }

  /**
   * {@inheritdoc}
   */
  public function buildRow(EntityInterface $entity) {
    $row['label'] = $entity->label();
    $row['foo'] = 'custom_value';
    return $row + parent::buildRow($entity);
  }

看到以下相关问题:您可以更改实体使用的列表构建器类吗?

因此,本质上:

function mymodule_entity_type_alter(array &$entity_types) {
  /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
  $entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}

然后,在mymodule / src文件夹中,创建一个VocabularyListBuilder.php,然后从core / modules / taxonomy / src / VocabularyListBuilder.php中复制并修改上面的两种输出方法(因为它们基本上是相同的)。

您也可以在“查看”页面上执行此操作,但是出于存档目的,我们想解释一下它对于Drupal核心的一般工作方式。列表生成器类是一个非常酷而实用的D8新功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.