Почему я не могу экспортировать словарные термины с помощью функций?


Хорошо, я установил функции, uuid, uuid_features.

В соответствии с документами термины vocab также должны экспортироваться при создании функции таксономии.

Поэтому я запускаю команду:

Таксономия Drush fe my_feature: теги

Но каждый раз внутри функции нет такой вещи, как термины. Экспортируется только словарный запас. Что я делаю не так?

Из обзора кода я вижу, что реализованы только hook_taxonomy_default_vocabularies.

Author: Codium, 2015-07-31

2 answers

Вам необходимо использовать модуль uuid_features.

Можно как экспортировать отдельные термины, перечислив те, которые вы хотите, так и экспортировать все термины со словарем:

  1. Включить функции uuid_features
  2. Перейдите в раздел администратор/конфигурация/содержимое/uuid_features
  3. Установите флажки в словарях в разделе "Экспортируемые наборы терминов таксономии".
    • Если вы хотите экспортировать все термины, установите флажок "Автоматическое определение терминов uuid", чтобы будущие дополнения / изменения будут добавлены.
    • Если вы не выбрали опцию "Автоматическое определение терминов uuid": Выполните поисковую операцию, и вы увидите новый элемент "uuid_term", получите список компонентов и выполните поиск по имени функции uuid_term:THETERMSUUID1 uuid_term:THETERMSUUID2 (становится очень длинным, поэтому опция "Автоматическое определение терминов uuid")
    • Если вы выбрали опцию "Автоматическое определение терминов uuid": вам просто нужно экспортировать таксономию, поэтому введите имя функции drush fe таксономия: ИМЯ ВОКАБА

Извините за странный маркированный список, пытаясь представить два варианта в одном списке.

 5
Author: Duncanmoo, 2015-08-05 10:44:08

Лучший способ экспортировать термины таксономии без каких-либо дополнительных модулей - это использовать update_hook_N() в вашем файле .install.

Вот код, который я использую:

/**
 * Insert terms for MYVOCAB vocabulary.
 */
function MYMODULE_update_7101() {
  $terms = array(
    'Term #1',
    'Term #2',
    'Term #3',
    '...',
  );
  // Check if term exists in vocabulary and add it if not.
  MYMODULE_safe_add_terms($terms, 'MYVOCAB');
}

/**
 * Helper function for adding terms to existing vocabularies.
 *
 * @param array $term_names
 * @param string $vocabulary_machine_name
 * @param int $weight
 */
function MYMODULE_safe_add_terms($term_names = array(), $vocabulary_machine_name = '', $weight = 100) {
  //  Make sure the vocabulary exists.  This won't apply all desired options
  //  (description, etc.) but that's okay.  Features will do that later.
  //  For now, we just need somewhere to stuff the terms.
  $vocab = taxonomy_vocabulary_machine_name_load($vocabulary_machine_name);

  // Load the vocabulary.
  // Check if field already exists and add it if not existing.
  if (is_object($vocab) && property_exists($vocab, 'vid') && $vocab->vid > 0) {
    //  Load each term.
    $i = 0;
    foreach ($term_names as $term_name) {
      $term = taxonomy_get_term_by_name($term_name, $vocabulary_machine_name);
      // Check if term exists and if it doesn't exist create a new one.
      if (count($term) == 0) {
        $term = (object)array(
          'name' => $term_name,
          'vid' => $vocab->vid,
          'weight' => $weight + $i,
        );
        // Save new term.
        taxonomy_term_save($term);
        $i++;
      }
    }
    drush_log($i . ' terms added to ' . $vocabulary_machine_name . ' vocabulary', 'notice');
  }
  else {
    drush_log('Vocabulary "' . $vocabulary_machine_name . '"" not found', 'error');
  }
}
 0
Author: Ales Rebec, 2016-05-10 06:51:50