taxonomy.api.php

Hooks provided by the Taxonomy module.

File

drupal/core/modules/taxonomy/taxonomy.api.php
View source
<?php

use Drupal\Core\Entity\EntityInterface;

/**
 * @file
 * Hooks provided by the Taxonomy module.
 */

/**
 * @addtogroup hooks
 * @{
 */

/**
 * Act on a newly created vocabulary.
 *
 * This hook runs after a new vocabulary object has just been instantiated. It
 * can be used to set initial values, e.g. to provide defaults.
 *
 * @param \Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   The vocabulary object.
 */
function hook_taxonomy_vocabulary_create(\Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  if (!isset($vocabulary->foo)) {
    $vocabulary->foo = NULL;
  }
}

/**
 * Act on taxonomy vocabularies when loaded.
 *
 * Modules implementing this hook can act on the vocabulary objects before they
 * are returned by taxonomy_vocabulary_load_multiple().
 *
 * @param array $vocabularies
 *   An array of taxonomy vocabulary entities.
 */
function hook_taxonomy_vocabulary_load(array $vocabularies) {
  $result = db_select('mytable', 'm')
    ->fields('m', array(
    'vid',
    'foo',
  ))
    ->condition('m.vid', array_keys($vocabularies), 'IN')
    ->execute();
  foreach ($result as $record) {
    $vocabularies[$record->vid]->foo = $record->foo;
  }
}

/**
 * Act on taxonomy vocabularies before they are saved.
 *
 * Modules implementing this hook can act on the vocabulary object before it is
 * inserted or updated.
 *
 * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   A taxonomy vocabulary entity.
 */
function hook_taxonomy_vocabulary_presave(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  $vocabulary->foo = 'bar';
}

/**
 * Act on taxonomy vocabularies when inserted.
 *
 * Modules implementing this hook can act on the vocabulary object when saved
 * to the database.
 *
 * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   A taxonomy vocabulary entity.
 */
function hook_taxonomy_vocabulary_insert(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  if ($vocabulary
    ->id() == 'my_vocabulary') {
    $vocabulary->weight = 100;
  }
}

/**
 * Act on taxonomy vocabularies when updated.
 *
 * Modules implementing this hook can act on the vocabulary object when updated.
 *
 * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   A taxonomy vocabulary entity.
 */
function hook_taxonomy_vocabulary_update(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  db_insert('mytable')
    ->fields(array(
    'vid' => $vocabulary
      ->id(),
    'foo' => $vocabulary->foo,
  ))
    ->execute();
}

/**
 * Act before taxonomy vocabulary deletion.
 *
 * This hook is invoked before entity_bundle_delete() is called and before
 * the vocabulary is actually removed.
 *
 * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   The taxonomy vocabulary entity that is about to be deleted.
 *
 * @see hook_taxonomy_vocabulary_delete()
 */
function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  db_delete('mytable_index')
    ->condition('vid', $vocabulary
    ->id())
    ->execute();
}

/**
 * Respond to taxonomy vocabulary deletion.
 *
 * This hook is invoked after entity_bundle_delete() has been called and after
 * the vocabulary has been removed.
 *
 * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
 *   The taxonomy vocabulary entity that has been deleted.
 *
 * @see hook_taxonomy_vocabulary_predelete()
 */
function hook_taxonomy_vocabulary_delete(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
  db_delete('mytable')
    ->condition('vid', $vocabulary
    ->id())
    ->execute();
}

/**
 * Act on a newly created term.
 *
 * This hook runs after a new term object has just been instantiated. It can be
 * used to set initial values, e.g. to provide defaults.
 *
 * @param \Drupal\taxonomy\Plugin\Core\Entity\Term $term
 *   The term object.
 */
function hook_taxonomy_term_create(\Drupal\taxonomy\Plugin\Core\Entity\Term $term) {
  if (!isset($term->foo)) {
    $term->foo = 'some_initial_value';
  }
}

/**
 * Act on taxonomy terms when loaded.
 *
 * Modules implementing this hook can act on the term objects returned by
 * taxonomy_term_load_multiple().
 *
 * For performance reasons, information to be added to term objects should be
 * loaded in a single query for all terms where possible.
 *
 * Since terms are stored and retrieved from cache during a page request, avoid
 * altering properties provided by the {taxonomy_term_data} table, since this
 * may affect the way results are loaded from cache in subsequent calls.
 *
 * @param array $terms
 *   An array of taxonomy term entities, indexed by tid.
 */
function hook_taxonomy_term_load(array $terms) {
  $result = db_select('mytable', 'm')
    ->fields('m', array(
    'tid',
    'foo',
  ))
    ->condition('m.tid', array_keys($terms), 'IN')
    ->execute();
  foreach ($result as $record) {
    $terms[$record->tid]->foo = $record->foo;
  }
}

/**
 * Act on taxonomy terms before they are saved.
 *
 * Modules implementing this hook can act on the term object before it is
 * inserted or updated.
 *
 * @param Drupal\taxonomy\Term $term
 *   A taxonomy term entity.
 */
function hook_taxonomy_term_presave(Drupal\taxonomy\Term $term) {
  $term->foo = 'bar';
}

/**
 * Act on taxonomy terms when inserted.
 *
 * Modules implementing this hook can act on the term object when saved to
 * the database.
 *
 * @param Drupal\taxonomy\Term $term
 *   A taxonomy term entity.
 */
function hook_taxonomy_term_insert(Drupal\taxonomy\Term $term) {
  db_insert('mytable')
    ->fields(array(
    'tid' => $term
      ->id(),
    'foo' => $term->foo,
  ))
    ->execute();
}

/**
 * Act on taxonomy terms when updated.
 *
 * Modules implementing this hook can act on the term object when updated.
 *
 * @param Drupal\taxonomy\Term $term
 *   A taxonomy term entity.
 */
function hook_taxonomy_term_update(Drupal\taxonomy\Term $term) {
  db_insert('mytable')
    ->fields(array(
    'tid' => $term
      ->id(),
    'foo' => $term->foo,
  ))
    ->execute();
}

/**
 * Act before taxonomy term deletion.
 *
 * This hook is invoked from taxonomy term deletion before
 * field_attach_delete() is called and before the term is actually removed from
 * the database.
 *
 * @param Drupal\taxonomy\Term $term
 *   The taxonomy term entity that is about to be deleted.
 */
function hook_taxonomy_term_predelete(Drupal\taxonomy\Term $term) {
  db_delete('mytable_index')
    ->condition('tid', $term
    ->id())
    ->execute();
}

/**
 * Respond to taxonomy term deletion.
 *
 * This hook is invoked from taxonomy term deletion after field_attach_delete()
 * has been called and after the term has been removed from the database.
 *
 * @param Drupal\taxonomy\Term $term
 *   The taxonomy term entity that has been deleted.
 */
function hook_taxonomy_term_delete(Drupal\taxonomy\Term $term) {
  db_delete('mytable')
    ->condition('tid', $term
    ->id())
    ->execute();
}

/**
 * Act on a taxonomy term that is being assembled before rendering.
 *
 * The module may add elements to $term->content prior to rendering. The
 * structure of $term->content is a renderable array as expected by
 * drupal_render().
 *
 * @param \Drupal\taxonomy\Plugin\Core\Entity\Term $term
 *   The term that is being assembled for rendering.
 * @param \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display
 *   The entity_display object holding the display options configured for the
 *   term components.
 * @param $view_mode
 *   The $view_mode parameter from taxonomy_term_view().
 * @param $langcode
 *   The language code used for rendering.
 *
 * @see hook_entity_view()
 */
function hook_taxonomy_term_view(\Drupal\taxonomy\Plugin\Core\Entity\Term $term, \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display, $view_mode, $langcode) {

  // Only do the extra work if the component is configured to be displayed.
  // This assumes a 'mymodule_addition' extra field has been defined for the
  // vocabulary in hook_field_extra_fields().
  if ($display
    ->getComponent('mymodule_addition')) {
    $term->content['mymodule_addition'] = array(
      '#markup' => mymodule_addition($term),
      '#theme' => 'mymodule_my_additional_field',
    );
  }
}

/**
 * Alter the results of taxonomy_term_view().
 *
 * This hook is called after the content has been assembled in a structured
 * array and may be used for doing processing which requires that the complete
 * taxonomy term content structure has been built.
 *
 * If the module wishes to act on the rendered HTML of the term rather than the
 * structured content array, it may use this hook to add a #post_render
 * callback. Alternatively, it could also implement
 * hook_preprocess_HOOK() for taxonomy-term.tpl.php. See drupal_render() and
 * theme() documentation respectively for details.
 *
 * @param $build
 *   A renderable array representing the taxonomy term content.
 * @param \Drupal\taxonomy\Plugin\Core\Entity\Term $term
 *   The taxonomy term being rendered.
 * @param \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display
 *   The entity_display object holding the display options configured for the
 *   term components.
 *
 * @see hook_entity_view_alter()
 */
function hook_taxonomy_term_view_alter(&$build, \Drupal\taxonomy\Plugin\Core\Entity\Term $term, \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display) {
  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {

    // Change its weight.
    $build['an_additional_field']['#weight'] = -10;
  }

  // Add a #post_render callback to act on the rendered HTML of the term.
  $build['#post_render'][] = 'my_module_taxonomy_term_post_render';
}

/**
 * @} End of "addtogroup hooks".
 */

Functions

Namesort descending Description
hook_taxonomy_term_create Act on a newly created term.
hook_taxonomy_term_delete Respond to taxonomy term deletion.
hook_taxonomy_term_insert Act on taxonomy terms when inserted.
hook_taxonomy_term_load Act on taxonomy terms when loaded.
hook_taxonomy_term_predelete Act before taxonomy term deletion.
hook_taxonomy_term_presave Act on taxonomy terms before they are saved.
hook_taxonomy_term_update Act on taxonomy terms when updated.
hook_taxonomy_term_view Act on a taxonomy term that is being assembled before rendering.
hook_taxonomy_term_view_alter Alter the results of taxonomy_term_view().
hook_taxonomy_vocabulary_create Act on a newly created vocabulary.
hook_taxonomy_vocabulary_delete Respond to taxonomy vocabulary deletion.
hook_taxonomy_vocabulary_insert Act on taxonomy vocabularies when inserted.
hook_taxonomy_vocabulary_load Act on taxonomy vocabularies when loaded.
hook_taxonomy_vocabulary_predelete Act before taxonomy vocabulary deletion.
hook_taxonomy_vocabulary_presave Act on taxonomy vocabularies before they are saved.
hook_taxonomy_vocabulary_update Act on taxonomy vocabularies when updated.