Quería recuperar términos de taxonomía de cierto vocabulario en Drupal 8.
Aparentemente todavía puedo hacerlo usando, taxonomy_get_tree
pero está en desuso.
Ahora tengo que usar TermStorageInterface :: loadTree
Estoy tratando de acceder a esta función desde un Block
pero no entiendo cómo crear una instancia de la TermStorageInterface
clase.
Intenté acceder a la función directamente pero no es una función estática:
TermStorageInterface::loadTree('categories')
Traté de crear instancias de la clase pero me dijo Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
No entiendo cómo funciona esta clase y cómo puedo acceder a los enlaces de taxonomía. Creo que me falta una gran parte de entender cómo funciona Drupal.
fuente
Esto es lo que uso para crear una lista de etiquetas:
fuente
El error que está recibiendo es porque está tratando de crear una instancia de una interfaz, que no es algo que PHP permita. Las interfaces PHP describen los métodos que las clases deberían implementar para casos específicos, pero no pueden usarse para crear un objeto, por ejemplo con
new InterfaceName()
.Ahora que
taxonomy_get_tree()
se ha eliminado y el servicio del administrador de entidades ha quedado en desuso, debe utilizar el siguiente código.No es necesario usarlo,
\Drupal::getContainer()
ya que\Drupal
expone un método auxiliar para obtener el servicio de administrador de tipo de entidad.fuente
Cargar usando el nombre de máquina del vocabulario (vid):
fuente
\ Drupal :: entityManager () ahora está en desuso, así que esto funcionó para mí
fuente
Acabo de escribir una función, siéntase libre de editar y usar :) Necesitaba la identificación del término, pero puede devolver lo que quiera.
fuente
$query->condition
después$query->execute()
no tiene efecto. Además, si el primer término no es el correcto, el foreach devolverá nulo en lugar de verificar el siguiente término. (Para su caso de uso, ¿podría utilizar taxonomy_term_load_multiple_by_name en su lugar?)Aquí está el ejemplo D8 de cómo acceder a términos de taxonomía basados en el nombre de la máquina de vocabulario:
Para cargar el conjunto de entidades, utilice:
loadTree('categories', 0, NULL, TRUE)
.fuente
Si necesita un término entidad, puede usar 'loadByProperties ()'.
fuente
fuente
Puede ver la descripción completa aquí https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
fuente