Csvファイルをインポートして分類カテゴリをすばやく作成する方法はありますか?
もしそうなら、それは何らかの階層関係を維持しますか?
taxonomy_csv
プロジェクトは、私が望んでいたことを完全に確信していません。
これはモジュールですDrupal 6 CSVからノードをインポートしますが、その説明に従って、その階層で分類をインポートできます: http:// drupal .org/project/node_import
to Drupal 7代替が存在します: Feedshttp://drupal.org/project/feeds
Taxonomy CSV import/export を使用できます
また、階層関係でうまく機能します。
最近のプロジェクトでは、カスタムフィールドを含む用語を何百もインポートする必要がありました。 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;
}
このモジュールを使用すると、CSV(カンマ区切り値)ファイルとの間で、またはコピーアンドペーストのテキストを使用して、分類法をインポートまたはエクスポートできます。