Puedo recuperar un vocabulario id directamente a partir de DB,
pero hay una función integrada para esto?

por ejemplo:

tengo un vocabulario llamado «listado»,
necesito que construyeron en función de «lista» como argumento de la función, y volver
un vid.

estoy usando drupal 6

OriginalEl autor anru | 2009-10-28

6 Comentarios

  1. 17

    Tengo una función para esto, bueno casi..

     /**
     * This function will return a vocabulary object which matches the
     * given name. Will return null if no such vocabulary exists.
     *
     * @param String $vocabulary_name
     *   This is the name of the section which is required
     * @return Object
     *   This is the vocabulary object with the name
     *   or null if no such vocabulary exists
     */
    function mymodule_get_vocabulary_by_name($vocabulary_name) {
      $vocabs = taxonomy_get_vocabularies(NULL);
      foreach ($vocabs as $vocab_object) {
        if ($vocab_object->name == $vocabulary_name) {
          return $vocab_object;
        }
      }
      return NULL;
    }

    Si quieres la vid acaba de obtener la vid de la propiedad del objeto devuelto y.

    $vocab_object = mymodule_get_vocabulary_by_name("listing");
    $my_vid = $vocab_object->vid;

    Henriks punto acerca de cómo almacenar en una variable es muy válida ya que el código anterior no quiere estar en ejecución en cada solicitud.

    Editar

    También vale la pena señalar que en Drupal 7 se puede utilizar taxonomy_vocabulary_get_names() que hace de este un poco más fácil.

    +1 para añadir ejemplos
    D7 usuarios aviso: Usar $vocab_object->machine_name en lugar de ->name !

    OriginalEl autor Jeremy French

  2. 15

    Para Drupal 7 si sabe el vocabulario de la máquina nombre de este es el camino:

    $vid = taxonomy_vocabulary_machine_name_load('your_vocabulary_name')->vid;

    Si sabe el Verdadero nombre de vocabulario, puede utilizar esta función:

    function _get_vocabulary_by_name($vocabulary_name) {
      //Get vocabulary by vocabulary name.
      $query = db_select('taxonomy_vocabulary', 'tv');
      $query->fields('tv', array(
        'machine_name',
        'vid',
      ));
      $query->condition('tv.name', $vocabulary_name, '=');
      $vocabulary = $query->execute()->fetchObject();
      return $vocabulary;
    }

    OriginalEl autor hugronaphor

  3. 4

    No es construido en función de esto, afaik. Usted puede rodar sus propias llamando taxonomy_get_vocabularies() y la búsqueda de su nombre en la matriz resultante, pero esto va a hacer una solicitud de base de datos en cada llamada.

    Si usted tiene un vocabulario de uso frecuente a partir de un código, podría ser más fácil/más eficaz para almacenar la vid en un Drupal variable a través de la variable_set() una vez y volver a través de variable_get() (Muchos módulos que crear un vocabulario en instalar hacerlo de esta manera).

    Edit: aquí está el código de ejemplo para hacerlo en el módulo de instalar.

    function mymodule_install() {
      $ret = array();
      $vocabulary = array(
          'name' => t('myvocab'),
          'multiple' => '1',
          'required' => '0',
          'hierarchy' => '1',
          'relations' => '0',
          'module' => 'mymodule',
          'nodes' => array('article' => 1), 
        );
      taxonomy_save_vocabulary($vocabulary);
      $vid = $vocabulary['vid'];
      variable_set('mymodule_myvocab', $vid);
      return $ret
     }
    Henrik, espero que no te importa, pero como tenía algo de código para que no se había pongo un ejemplo para el almacenamiento de un vocabulario en instalar.
    No hay problema, eres bienvenido.
    Yo estaba a punto de sugerir taxonomy_get_vocabularies y vio a su nota sobre otro DB llame en cada solicitud… tienes razón.
    falta de ortografía, debe ser taxonomy_vocabulary_save
    Esta respuesta y el código donde destinadas a Drupal 6, donde se taxonomy_save_vocabulary.

    OriginalEl autor Henrik Opel

  4. 3

    Debe ayudar.

    function _my_module_vid($name) {
      $names = taxonomy_vocabulary_get_names();
      return $names[$name]->vid;
    }
    Esto debería funcionar, pero ¿qué acerca de un isset verificación y devolver FALSE si no hay vocabulario con que nombre ?

    OriginalEl autor Reno Greenleaf

  5. 0

    Usted sabe el tipo de nodo para que la vocaulbary está asociado. Tan sólo utilizar taxonomy_get_vocabularies() y pase el tipo de nodo como argumento y obtendrá los detalles que quieras!

    OriginalEl autor Bhavin Joshi

  6. 0

    En Drupal 7 puede utilizar:

    $vocab_object = taxonomy_vocabulary_machine_name_load('vocabulary_name');
    $my_vid = $vocab_object->vid;

    OriginalEl autor digitaldonkey

Dejar respuesta

Please enter your comment!
Please enter your name here