Ich wollte Taxonomiebegriffe aus einem bestimmten Wortschatz in Drupal 8 abrufen.
Anscheinend kann ich es immer noch benutzen, taxonomy_get_tree
aber es ist veraltet.
Ich muss jetzt TermStorageInterface :: loadTree verwenden
Ich versuche, von a auf diese Funktion zuzugreifen, Block
verstehe jedoch nicht, wie die TermStorageInterface
Klasse instanziiert werden kann .
Ich habe versucht, direkt auf die Funktion zuzugreifen, aber es ist keine statische Funktion:
TermStorageInterface::loadTree('categories')
Ich habe versucht, die Klasse zu instanziieren, aber es hat mir gesagt Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
Ich verstehe nicht, wie diese Klasse funktioniert und wie ich auf Taxonomie-Links zugreifen kann. Ich glaube, ich vermisse einen großen Teil des Verständnisses, wie Drupal funktioniert.
quelle
So erstelle ich eine Liste mit Tags:
quelle
Der Fehler, den Sie erhalten, liegt darin, dass Sie versuchen, eine Instanz einer Schnittstelle zu erstellen, was PHP nicht zulässt. PHP-Interfaces beschreiben die Methoden, die Klassen für bestimmte Fälle implementieren sollten, können jedoch nicht zum Erstellen eines Objekts verwendet werden, z. B. mit
new InterfaceName()
.Nachdem
taxonomy_get_tree()
dies entfernt wurde und der Entitätsmanagerdienst veraltet ist, müssen Sie den folgenden Code verwenden.Es ist nicht verwenden müssen ,
\Drupal::getContainer()
da\Drupal
macht eine Hilfsmethode den Entitätstyp - Manager - Dienst zu bekommen.quelle
Laden mit Maschinenname des Vokabulars (Vid):
quelle
\ Drupal :: entityManager () ist jetzt veraltet, so dass dies für mich funktioniert hat
quelle
Ich habe gerade eine Funktion geschrieben, die Sie gerne bearbeiten und verwenden können :) Ich brauchte die ID des Begriffs, aber Sie können zurückgeben, was Sie wollen.
quelle
$query->condition
After$query->execute()
hat keine Wirkung. Auch wenn der erste Term nicht der richtige ist, gibt foreach null zurück, anstatt den nächsten Term zu überprüfen. (Für Ihren Anwendungsfall können Sie möglicherweise stattdessen taxonomy_term_load_multiple_by_name verwenden?)Im folgenden D8-Beispiel wird gezeigt, wie auf Taxonomiebegriffe zugegriffen wird, die auf dem Namen der Vokabularmaschine basieren:
Um die ganzen Einheiten zu laden, benutzen
loadTree('categories', 0, NULL, TRUE)
.quelle
Wenn Sie eine Begriffseinheit benötigen, können Sie 'loadByProperties ()' verwenden.
quelle
quelle
Die vollständige Beschreibung finden Sie hier https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
quelle