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 столбце - кстати, я понял, как это делается) картинка изменилась, но данные не импортировались.
Потом я еще побился... оно вело себя совсем правдоподобно, только данные не вводились.
Похоже, оно не хочет автозаполнять пустые словари таксономии. После того, как я ввел в них по одному термину, все сработало и я получил введенные данные и заполненные словари.
Спасибо за помощь.
Ну так с таксономией ДЕЙСТВИТЕЛЬНО надо действовать по-другому.
Словари создавать легче, лучше, проще вручную.
Термины таксономии импортировать заранее.
И только потом - материалы с этими терминами.
Хотя, по идее, не могло это повлиять на неимпортирование материалов.
Если термина нет, то материал импортируется, термины в нём ВРОДЕ БЫ есть, но они не связаны со словарем; таксономия не будет адекватно работать.
хм... Кажется. Точно не помню.
Кстати, обратите внимание на модуль Таксономия_Менеджер.
С его помощью очень просто стопку терминов загнать в словарь. НАМНОГО проще, чем настраивать импорт фида.
Обратил уже, правда, неудачно. Ссылочка "импортировать" у меня категорически не хотела появляться. И вообще интерфейс модуля выглядел не так, как на картинках.
Потом импортировал словарь с помощью чего-то вроде taxonomy csv import, сработало нормально, но это уже другая задача.
Варианты:
1. Обновленный модуль Фиид, а когда я настраивала свой импортер, то была более старая версия модуля.
2. Немножко разные настройки импортера.
В Менеджер таксономии не надо "импортировать". Там кнопка "+ Добавить" или "+ Add".
И туда просто столбик терминов вставляем.
Это реально ОЧЕНЬ просто.
Ну я рада, что у вас таки получилось.
Успехов.
1. гм... у меня, полагаю, как раз обновленные модуль, так он сам дописывает эти строки, даже если их не было. Ну да ладно.
2. Я пытался найти влияющие на это настройки импортера, менялось содержимое строки, но она всегда была.
По поводу менеджера таксономии хотелось бы разобраться. Я видел такую ссылку: http://cmspress.info/drupal/project/taxonomy_manager
На одном из скриншотов ссылка "импорт" присутствует, уж не знаю, что она делает. НО мне вообще не удалось увидеть ничего похожего на эти скриншоты, не было и ссылки.
Вы говорите о вводе копипастой? Ну вот поскольку я пробую технологии, хотелось бы именно импорт csv из файла получить. )) я его получил.
Спасибо.
Это именно этот модуль. Но на тех скриншотах я не вижу ссылки Импорт.
Что касается копипаста...
Это же не по одному термину копировать. А сразу кучку. Хоть 30, хоть 100.
Я считаю, что в каждом случае лучше использовать самый простой способ.
Но... - хозяин - барин.
"А она там есть"(С)
На четвертом скриншоте.
Ага. Аж теперь увидела.
Насколько я понимаю, это скрины давнишние. Возможно, еще с 6-го Друпала.
У меня Добавление терминов выглядит вот так:
И в это поле просто копипастом вставляю стопку терминов.
У меня на этом сайте реально БОЛЬШАЯ таксономия. Один словарь "плоский", без иерархии. А во втором - глубокая иерархия.
Поэтому этот модуль помогает еще и управляться с иерархией.
И на этом сайте я без этого модуля - как без рук.
А на всех других своих дру-сайтах у меня этого модуля нету. Там он не нужен. Потому что в других местах нет такой навороченной таксономии и постоянного импорта.
Ага, это постоянно приходится учитывать, когда ищешь в инете что-то.
Если бы у меня была задача просто сделать систему, ввод лапами, возможно, был бы оптимальным, тем более, что моя утилита может так и сяк преобразовать csv файл.
Задача у меня сейчас другая - разобраться с технологиями друпала. Не импортировать словарь (два, три...) а научиться импортировать. В том числе и разобраться с интереснейшим модулем tamper (и, тем более, tamper php). С тем, чтобы стать подобным юному пионеру, который всегда готов. ))