web-dev-qa-db-ja.com

csvを介した分類のインポート?

Csvファイルをインポートして分類カテゴリをすばやく作成する方法はありますか?

もしそうなら、それは何らかの階層関係を維持しますか?

taxonomy_csvプロジェクトは、私が望んでいたことを完全に確信していません。

2
chrisjlee

これはモジュールですDrupal 6 CSVからノードをインポートしますが、その説明に従って、その階層で分類をインポートできます: http:// drupal .org/project/node_import

to Drupal 7代替が存在します: Feedshttp://drupal.org/project/feeds

3
cigotete

Taxonomy CSV import/export を使用できます
また、階層関係でうまく機能します。

1
Dimetry

最近のプロジェクトでは、カスタムフィールドを含む用語を何百もインポートする必要がありました。 Drupal 7の場合、カスタムのDrushコマンドを使用する方法です...

 /**
 * Implements hook_drush_command
 */
function glossary_import_drush_command() {
  $items['glossary-import'] = array(
    'description' => "Import glossary terms to Glossary taxonomy from CSV",
    'aliases' => array('gloss-imp'),
    'options' => array(
      'csv' => 'Path to CSV file to use',
    ),
    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
  );
  return $items;
}
/**
 * Run command logic.
 */
function drush_glossary_import($csv) {

  // Read csv contents into PHP
  $file = file_get_contents($csv);

  // Create array from file
  $array = array_map("str_getcsv", explode("\n", $file));

  // Make sure it's converted to utf8
  $array_utf8 = utf8_converter($array);

  // Get the vocab id from the vocabulary name
  $vocab = taxonomy_vocabulary_machine_name_load('VOCABULARY_NAME');

  // Create taxonomy terms for each item in array
  foreach ($array_utf8 as $item) {
    // If we have no term name, skip
    if (!empty($item[0])) {
      // Create some friendly variables from $item
      $term_name = !empty($item[0]) ? $item[0] : '';
      $term_sort_name = !empty($item[1]) ? $item[1] : '';
      $term_search_term = !empty($item[2]) ? $item[2] : '';
      $term_description = !empty($item[3]) ? $item[3] : '';

      // Check if term exists so we do not overwrite or create duplicate term
      $query = new EntityFieldQuery;
      $result = $query
      ->entityCondition('entity_type', 'taxonomy_term')
      ->propertyCondition('name', $term_name)
      ->propertyCondition('vid', $vocab->vid)
      ->execute();

      // If we don't find a term with the above query, create term
      if (empty($result['taxonomy_term'])) {
        // Setup term
        $term = new stdClass();
        $term->vid = $vocab->vid;
        $term->name = $term_name;
        $term->field_glossary_sortable_name[LANGUAGE_NONE][0]['value'] = $term_sort_name;
        $term->field_glossary_search_term[LANGUAGE_NONE][0]['value'] = $term_search_term;
        $term->description = $term_description;

        // Save term
        taxonomy_term_save($term);

        // Report message term was saved
        drupal_set_message($term_name . ' added');
      }
      else {
        // Warning message, term exists, skip
        drupal_set_message($term_name . ' exists! Skipping', 'warning');
      }
    }
  }
}

function utf8_converter($array) {
  array_walk_recursive($array, function(&$item, $key) {
    if(!mb_detect_encoding($item, 'utf-8', true)){
      $item = utf8_encode($item);
    }
  });

  return $array;
}
0
ZhuRenTongKu

このモジュールを使用すると、CSV(カンマ区切り値)ファイルとの間で、またはコピーアンドペーストのテキストを使用して、分類法をインポートまたはエクスポートできます。

https://www.drupal.org/project/taxonomy_csv

0
steniya