Drupal 7.52, использую Feeds. Еще у меня есть Feed Import, но он отключен.
1. Один csv файл я успешно ввел (в ноды). Но у меня не пошел ввод с разделителем TAB. Я посмотрел, как импортер экспортируется, и подумал, что этот разделитель вообще не работает. Я прав?
2. Не могу импортировать csv без уникального поля. Хотя друпал, вроде, не отказывается, только говорит, что чего-то делать не будет. Но он не делает вообще ничего! Есть какие-то особенные настройки, которые надо делать в таком импортере?
В этом импортере что-то не так?
$feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
$feeds_importer->api_version = 1;
$feeds_importer->id = 'equip_move_import';
$feeds_importer->config = array(
'name' => 'Оборудование: импорт перемещений',
'description' => '',
'fetcher' => array(
'plugin_key' => 'FeedsFileFetcher',
'config' => array(
'allowed_extensions' => 'txt csv tsv xml opml',
'delete_uploaded_file' => FALSE,
'direct' => FALSE,
'directory' => 'public://feeds',
'allowed_schemes' => array(
0 => 'public',
),
),
),
'parser' => array(
'plugin_key' => 'FeedsCSVParser',
'config' => array(
'delimiter' => '|',
'encoding' => 'Windows-1251',
'no_headers' => 1,
),
),
'processor' => array(
'plugin_key' => 'FeedsNodeProcessor',
'config' => array(
'expire' => '-1',
'author' => '0',
'authorize' => 0,
'mappings' => array(
0 => array(
'source' => '0',
'target' => 'title',
'unique' => FALSE,
'language' => 'und',
),
1 => array(
'source' => '1',
'target' => 'field_equipmovedate',
'unique' => FALSE,
'language' => 'und',
),
2 => array(
'source' => '2',
'target' => 'field_equiploc',
'term_search' => '0',
'autocreate' => 1,
),
3 => array(
'source' => '3',
'target' => 'field_equipresp',
'term_search' => '0',
'autocreate' => 1,
),
4 => array(
'source' => '4',
'target' => 'field_user',
'unique' => FALSE,
'language' => 'und',
),
),
'insert_new' => '1',
'update_existing' => '0',
'update_non_existent' => 'skip',
'input_format' => 'plain_text',
'skip_hash_check' => 0,
'bundle' => 'equip_move',
'language' => 'und',
),
),
'content_type' => '',
'update' => 0,
'import_period' => '-1',
'expire_period' => 3600,
'import_on_create' => 0,
'process_in_background' => 0,
);
Комментарии
Переформулирую вопрос:
нужно импортировать из csv массив данных в ноды, причем в импортируемых данных нет поля, которое можно использовать как unique.
Это возможно? и если возможно, то какими средствами?
Я импортирую csv на сайт.
Стала проверять - у меня нет поля с конфигурацией unique
Разделитель - ;
Но... в настройках синонимов урл поставила вот так:
type/[node:title]-[node:nid]
И всё прекрасно работает.
===
Что касается Вашего кода... - у меня подозрение по поводу кодировки.
Друпал кушает csv в кодировке UTF8, а не Windows-1251
Вот код моего импорта:
<?php$feeds_importer = new stdClass();
$feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
$feeds_importer->api_version = 1;
$feeds_importer->id = 'csv2aforizm';
$feeds_importer->config = array(
'name' => 'csv2aforizm',
'description' => 'csv2aforizm',
'fetcher' => array(
'plugin_key' => 'FeedsFileFetcher',
'config' => array(
'allowed_extensions' => 'txt csv tsv xml opml',
'direct' => FALSE,
'directory' => 'public://feeds',
'allowed_schemes' => array(
0 => 'public',
),
),
),
'parser' => array(
'plugin_key' => 'FeedsCSVParser',
'config' => array(
'delimiter' => ';',
'no_headers' => 0,
),
),
'processor' => array(
'plugin_key' => 'FeedsNodeProcessor',
'config' => array(
'expire' => '-1',
'author' => '1',
'authorize' => 1,
'mappings' => array(
0 => array(
'source' => 'Title',
'target' => 'title',
'unique' => 0,
),
1 => array(
'source' => 'Body',
'target' => 'body',
'unique' => FALSE,
),
2 => array(
'source' => 'Avtor',
'target' => 'field_avtor',
'unique' => FALSE,
),
),
'update_existing' => '0',
'input_format' => 'plain_text',
'skip_hash_check' => 0,
'bundle' => 'aphorizm',
),
),
'content_type' => '',
'update' => 0,
'import_period' => '-1',
'expire_period' => 3600,
'import_on_create' => 1,
'process_in_background' => 0,
);
?>
Спасибо.
Я внимательно сравнил наши импортеры и нашел несколько различий (кроме очевидных). Некоторые понятные, другие - странные.
По поводу pathauto у меня настройка похожая - equip/move/[node:title]/[node:nid]. Конечно, проверю, что изменится, если заменить слеш на другой символ.
Кодировку Windows-1251 друпал кушает однозначно, потому что другой массив данных у меня в этой кодировке импортировался благополучно. Но на всякий случай, проверю и UTF-8.
Теперь о расхождениях собственно в импортере.
Ну, названия импортера и полей - это само собой.
Самое загадочное расхождение: у Вас в 0 столбце указано 'unique' => 0,
а в других местах (а у меня - везде) указано 'unique' => FALSE.
Как Вы добились этого эффекта?
Кроме того, у меня есть, а у Вас отсутствуют строчки
'insert_new' => '1',
'update_non_existent' => 'skip',
и есть различие в строке 'import_on_create' =>
Постараюсь понять, какие для этого нужны настройки. Или это ручная правка?
PS. что-то получилось ))
После первой правки (кажется, это было всего-навсего 'unique' => 0 в 0 столбце - кстати, я понял, как это делается) картинка изменилась, но данные не импортировались.
Потом я еще побился... оно вело себя совсем правдоподобно, только данные не вводились.
Похоже, оно не хочет автозаполнять пустые словари таксономии. После того, как я ввел в них по одному термину, все сработало и я получил введенные данные и заполненные словари.
Спасибо за помощь.
НЕ ПОМНЮ.
Это было давно.
Нет, ручной правки не было. Была настройка именно в стандартном интерфейсе импортера фидов.
Ну так с таксономией ДЕЙСТВИТЕЛЬНО надо действовать по-другому.
Словари создавать легче, лучше, проще вручную.
Термины таксономии импортировать заранее.
И только потом - материалы с этими терминами.
Хотя, по идее, не могло это повлиять на неимпортирование материалов.
Если термина нет, то материал импортируется, термины в нём ВРОДЕ БЫ есть, но они не связаны со словарем; таксономия не будет адекватно работать.
хм... Кажется. Точно не помню.
Кстати, обратите внимание на модуль Таксономия_Менеджер.
С его помощью очень просто стопку терминов загнать в словарь. НАМНОГО проще, чем настраивать импорт фида.