Описание
Модуль Node Import позволяет импортировать материалы из CSV (Comma Seperated Values) и TSV (Tab Seperated Values) файлов.
Помимо нод можно импортировать:
— Синонимы
— Словари и термины
— Пользователей
Поддерживает CCK поля:
— Number
— Text
— Date
— Email
— Node reference
— User reference
— ImageField
— FileField
Установка
- Скачиваем модули Node import, Date и Advanced help
- Распаковываем в sites/all/modules
- Включаем модуль Node import на странице admin/build/modules
Использование
В качестве примера импортирую несколько материалов типа Товар (product) с двумя CCK полями: Цена (обычное поле типа Целое число) и Картинки (модуль ImageField). Так же к типу материала привязаны два словаря — Раздел и Теги.
Для создания CSV файла лучше воспользоваться OpenOffice-ом, он в отличии от MS Excel умеет сохранять эти файлы в юникоде. Если всё же используется Excel, то перед импортом нужно будет конвертировать csv файл в кодировку UTF-8 without BOM (сделать это можно с помощью популярного редактора Notepad++).
Шаг 0.
В OpenOffice создаём документ Электронная таблица. Первой строкой прописываем названия полей, которые будут участвовать в импорте. Набор и порядок полей может быть любой, единственно условие это наличие обязательных полей — Заголовок и Раздел (только для данного примера). Следующими строками — сами данные.
Если у поля несколько значений, то они разделяются с помощью запятой. Например в поле Картинки может быть несколько картинок, соответственно выглядеть это должно как image1.jpg,image2.jpg
. Или в поле Теги может быть несколько тегов, соответственно — тег1,тег2
.
Имена файлов в полях типа ImageField и FileField, должны быть относительно директории sites/default/files
. Т.е. если картинки находятся в папке sites/default/files/images
, то в csv они должны выглядеть как images/image1.jpg,images/image2.jpg
. Важно: картинки должны обязательно существовать, т.е. перед импортом их необходимо залить на сервер.
Пример CSV файла:
При сохранении файла указываем формат Текст CSV, кодировка Юникод (UTF-8) (только такая и никакая другая), разделитель поля ,
(запятая), разделитель текста — "
(двойная кавычка):
Шаг 1.
Идём на страницу admin/content/node_import и создаём новый импорт:
Читаем справку, жмём Далее:
Выбираем тип содержимого (в нашем случае Товар) и жмём далее:
Шаг 2.
Загружаем CSV файл и жмём далее:
Шаг 3.
Выбираем формат CSV файла:
Для OpenOffice это первый формат в списке — Значения разделены запятой, для MS Excel второй — Значения разделены точкой с запятой.
Выбирая формат данных и нажимая кнопку Обновить, нужно добиться чтобы под формой выбора форматов, отобразилась корректная таблица:
Шаг 4.
Для каждого поля материала, указываем соответствующее поле из CSV файла:
Шаг 5.
Устанавливаем опции импорта, а именно разделители в полях с несколькими значениями (в нашем примере это везде запятая ,
):
Шаг 6.
Устанавливаем значения по умолчанию. Эти значения будут подставлены в отсутствующие поля:
Шаг 7.
Предварительно просматриваем результат импорта. В идеале должны увидеть жёлтенькие ноды со всеми необходимыми полями:
Если на этом этапе возникли ошибки, то их нужно исправить, например отредактировав залитый на сервер csv файл, и нажать кнопку Обновить.
Например, первый раз у меня вылезла ошибка (скриншот):
warning: Illegal offset type in isset or empty in J:\path\to\drupal\sites\all\modules\node_import\node_import.inc on line 576.
Поле Разделы обязательно для заполнения.
Пришлось в настройках словаря Разделы отметить опцию Теги и снять галку с Требуемый (скриншот).
Если всё хорошо, жмём далее.
Шаг 8.
Последний шаг перед импортом. Ознакамливаемся с опциями импорта и жмём Начать импорт:
Шаг 9.
Импорт:
С виду сложно, но стоит один раз попробовать и разобраться с процессом, дальше будет легче.
Комментарии
Хорошая статья. Всё ли у Вас корректно было с датами при импорте? У меня не работает, если формат поля даты - пользовательский формат, а не список выбора. Список выбора подразумевает выбор из диапазона дат (годов), а у меня могу быть и 1999, и 1973.
дата это cck поле?
Вероятно. А для чего Вы ставили Date? :-)
его требует Node import
Не будете пробовать загружать материалы с датами? Просто я уже на протяжении месяца бьюсь и не могу найти решение...
с пользовательским форматом у меня тоже не получилось, на d.org подсказали что можно временно выставить тип как список и прописать диапазон дат -100:+100. так заработало. тестировал на последней dev версии модуля
Благодарю. В принципе, этого будет достаточно. ;-) Ещё посмотрю, как можно "хакнуть" на предмет "больше 100". :-)
да там можно любые цифры вписать
Тем более здорово! Спасибо, я боялся эти цифры менять. :-)
Главное, наверное, теперь в формах этот реквизит не заполнять. ;-) Спасибо Вам большое, андэд.
Разве это верный выход, если у словаря не должно быть тегов и выбор должен быть единичным?
Столкнулся с такой проблемой. Поставил "стабильную" версию (rc4), и началось.
ну никто же не мешает после импорта вернуть всё на место
Спасибо автору! Давненько не видел таких полноценных и качественных статей. Очень полезно.
Приветствую всех.
Кто поможет разобраться с этим модулем. Проблема появляется на 7ом шаге "Вы должны закачать картинку". И ниже выводит код:
Картинку заливаю в sites/default/files/images/
Заранее спасибо за советы.
адрес картинки какой указываете?
в поле прописываю images/image.jpg
к сожалению не знаю
Не пойму одного. Откуда брать названия столбиков http://xandeadx.ru/sites/default/files/images/part-3/20101907052421.png
Делаю 1 сайт на Друпале. Помогите
названия могут быть любыми
А как Друпал определит какое значение соответствует какому полю, например, товара в магазине?
Я хочу загружать товары через csv.
Есть тип товара Мобильный телефон. Есть поля Изображение, Форм-фактор, Время работы в режиме ожидания, Время работы в режиме разговора.
Как мне озаглавить эти столбики в CSV?
прочитайте про 4-ый шаг
спасибо
В конце при импорте выдаёт такую ошибку: "Input error: is not allowed for Catalog (not a term or synonym in Catalog)"
Спасибо статья отличная, кто нить знает как импортировать атрибуты в ubercart с помощью этого модуля
У меня возникла проблема, почему то значения цены не импортируется из прайса, не подскажите в чем может быть проблема ?
Привет всем ! кто знает в чем проблема, возникает на 3 шаге.
Вот ошибка:
вот этот файл:
http://pastebin.com/f0GUCA4z
А как исключить некоторые поля, чтобы они оставались неизменными. А то делаю импорт из прайсов, затираются изображения и описания ?=(
У меня в body при импорте режется текст до 255 символов. Подскажите что делать?
А как исключить некоторые поля, чтобы они оставались неизменными. А то делаю импорт из прайсов, затираются изображения и описания ?=(
Очень актуально
Отличный обзор и отличный модуль, Но...
К моему типу материала прикручен Шедулер, и в заданную дату материал должен быть снят с публикации. При импорте ноды нет поля для заполнения даты снятия. Как решить эту проблему?
Да, у меня есть поле, где я указываю дату окончания акции, и оно совпвдает с датой снятия с публикации. Дату окончания акции я легко задаю, поскольку это простое ССК поле. Может есть возможность уже в шаблоне самой ноды прописать полю планировщику значение поля ССК с датой? Надеюсь понятно изложил идею. Заранее спасибо за ответ
в node import это сделать наверно не получится, пользуйтесь сниппетами
Понаглею немного )) А можно более подробно услышать от специалистов информацию, а то не силен в таких делах. Спасибо
Вот нашел один код, который мне, вроде подходит, с кодом разобрался что к чему.
Вот здесь эта тема обсуждалась. Но я не понял куда нужно вставить этот код. Вставил в шаблон своего типа материалов, вроде все выводит как нужно, но вот только сам планировщик не срабатывает - не снимает материал с публикации. Что не так?
А можно как-то добавить при импорте поле "товар на складе"?
А как русифицировать Модуль Node Import
так же как любой другой модуль — http://drupal.org/project/l10n_update
Подскажите пожалуйста если нужно чтобы при импорте создавались подкатегории, как правильно надо оформить в сsv колонку? Пробовал в одной колонке описать- категория<<подкатегория, но пока не получилось.
попробуйте по-другому категория>>подкатегория
Подскажите, что нужно исправить, чтобы, когда не выбираешь поле, оно не затиралось?
Выше был этот вопрос, но остался без ответа.
Использую модули node import и node import update для импорта материала в ubercart. Столкнулся с такой проблемой:
Одно из cck-полей отсутствует в импорте и должно заполнятся модератором. Но при импорте нод это поле затирается, т.к. из прайса оно не берется. Модуль node import получаеться затирает поля если вы их не выбрали при импорте материала, а это очень не удобно допустим при наполнениии интернет магазина товарами где просто нужно менять цену товара налицие на складе и так далее. Другими словами нужно чтоб импорт не затрагивал одно из полей при импорте материала. Может кто сталкивался с данной проблемой?
приветствую,
если связанные записи полей (node reference) отсутствуют в друпале, тогда новая запись не импортируется; выскакивает ошибка.
возможно ли изменить часть кода, чтобы отсутствующие записи в друпале игнорировались при импорте? если да, то где и как - возможно, сталкивались с подобным.
А как указать id автора имортируемой ноды?
Очень толковый материал! Давно не сталкивалась с такой подробной инструкцией!
Только присоединяюсь к вопросу, как можно с помощью этого модуля обновлять существующие ноды?
С этим сложно, нужна доработка модуля, пишите, возможно, смогу помочь forums.82@mail.ru
Т.е. сейчас модуль позволяет импортировать только от одного автора? причем не понятно от какого.
На третьем шагу выдает белый экран и ошибку
Fatal error: Call to undefined function filefield_data_info() in /modules/node_import/supported/filefield/filefield.inc on line 39
Подскажите куда смотреть?
смотреть нужно конечно же в поиск
xandeadx, Это я видел, но там ответов нет( только вопрос.
Помогло обновление модуля filefield
Как указывать дату и время в CSV-файле при импорте. Например, импортировать поле дата с данными: 14.01.2012 08:00
Preview import (step 7 of 8)
У меня проблема !
Термины не импортируются
пробовал так Тест||Тест2 и Тест>>Тест2 выдает:
Input error: is not allowed for Каталог товаров (not a term or synonym in Каталог товаров).
Input error: is not allowed for Каталог товаров (not a term or synonym in Каталог товаров).
Input error: is not allowed for Каталог товаров (not a term or synonym in Каталог товаров).
Как решить?
В настройках словаря стоит "множественный выбор" если поставить "теги" все работает но нет иерархии!
Что-то никак не пойму одну фишку.
У меня в csv есть поле date и поле period
При импорте я делаю настройки для этих полей
Для date - пользовательский d.m.Y так как даты там вида 05.06.2013,
разделитель указываю запятую ','. Даты там встречаются не по одной, бывает несколько..
В поле period у меня лежат даты от и до вида 11.05.2013-06.07.2013,
и также их может быть несколько, указываю разделитель - запятую, так как если их несколько то они идут через запятую.
В CCK это одно поле field_date типа Datetime. В настройках свойство "До даты"
установлено "необязательно".
Когда делаю настройки данного поля, то как указать, что присутствует вторая метка даты? При предпросмотре те даты, которые просто идут через запятую, одна за другой, отображаются корректно, но там, где даты установлены как "от и до" вида "12.05.2013-20.06.2013, 22.05.2013-15.06.2013" дата не отображается и не выдается ошибка. Настройки форматы даты для этого типа делаю как "d.m.Y-d.m.Y".
Помогите пожалуйста. Куда копать? В сторону парсера? Или такой возможности еще не заложено в модуль?
Можно ли использовать задачу повторно? Если да, то как?
Как импортировать большие куски текста с html разметкой (div, br, p и тд). Скажем новости. Никак не получается. Все настроил. Но сиэсви файл получается не корректным. там и запятых и точек с запятой куча, те разделителей.. Импрот идет, но ноды не добавляются.
Пробовал создать простой сиэсви файл в блокноте. 1 предложение название статьи, 1 предложение текст статьи. Все импортируется без проблем.
Азамат: используйте в качестве разделителей табуляцию. Конечно, предварительно из текста табуляции нужно вычистить.
Спасибо за отзыв. Все получилось!
Я делал файл в exel, а при сохранении exel выдает разделители только запятые (но на самом деле сохраняет с точкой запятой)
При импорте я ставил в параметрах программы разделители запятые, а нужно было точку с запятой.
Добавить комментарий