Ich muss der Tabelle auf der Seite, die die für eine Site definierten Vokabulare auflistet, eine Spalte hinzufügen. Wie kann ich das erreichen?
quelle
Ich muss der Tabelle auf der Seite, die die für eine Site definierten Vokabulare auflistet, eine Spalte hinzufügen. Wie kann ich das erreichen?
Sie müssten die Klasse überschreiben, die die Ausgabe des Listenerstellers auf dieser Seite generiert, und dann die Methoden mit den gewünschten Angaben ausfüllen:
/**
* {@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);
}
Siehe diese verwandte Frage: Können Sie die von einer Entität verwendete List Builder-Klasse ändern?
Also im Wesentlichen:
function mymodule_entity_type_alter(array &$entity_types) {
/** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
$entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}
Erstellen Sie dann in Ihrem Ordner mymodule / src eine VocabularyListBuilder.php, kopieren Sie sie aus der Datei core / modules / taxonomy / src / VocabularyListBuilder.php und ändern Sie die beiden oben genannten Methoden für Ihre Ausgabe (da sie im Wesentlichen identisch sind).
Sie können dies auch mit einer Ansichtsseite tun, möchten jedoch zu Archivierungszwecken erläutern, wie dies im Allgemeinen für Drupal Core funktioniert. Listenerstellungsklassen sind so eine coole und nützliche neue D8-Sache.