Создание родительских узлов из дочерних узлов при импорте из CSV в Drupal6 - PullRequest
0 голосов
/ 21 января 2011

Я работаю над проектом Drupal, где у меня есть два типа узлов, построенных с типами контента CCK - «места проведения» (родительские узлы) и «концерты» (дочерние узлы).

У меня естьимпортировал несколько известных мест из CSV через модуль node_import, и теперь нужно импортировать еще один CSV, заполненный шоу.

Как мне:

a.Ссылка на места проведения концертов CSV - мне нужно создать ссылку на узел на основе адреса location.module (но не типа CCK из-за того, как я импортировал места), но я не знаю, как импортироватьтаким образом, особенно когда один и тот же адрес может несколько отличаться между двумя листами (с точки зрения пунктуации и т. д.).

b.Для некоторых списков концертов, скорее всего, мои данные о месте проведения будут неполными.Как при создании импорта создавать родительские узлы, когда импортер не может найти адрес, на который ссылается дочерний узел?Обратите внимание, что CSV концертов содержит большую часть информации о местах проведения CSV в каждом ряду.

Я упоминаю, что использую node_import, но думаю, что для этого мне может понадобиться API данных.У меня нет опыта работы с последним (или, на самом деле, я предпочитаю какой-то конкретный метод импорта), и буду благодарен за любую помощь, какую бы вы мне ни оказали.

1 Ответ

1 голос
/ 21 января 2011
Я думаю, что

фидов будет хорошим решением для вас. Вам нужно будет настроить импортеров для двух разных типов контента, и в зависимости от структуры ваших файлов вам может потребоваться запустить один и тот же файл, хотя оба импортера.

Для ссылки на узел вам нужно либо использовать преобразователь node_reference, который может существовать только в качестве патча в данный момент, либо написать свой собственный (что мы и сделали во второй половине дня).

В настоящее время мы делаем что-то симулирующее, импортируя списки аукционов по 60 000 и распределяя их по 30-40 событиям. Работает как шарм.

преобразователь ссылок на узлы: http://drupal.org/node/724536

каналы: http://drupal.org/project/feeds

Относительно того, почему вам может потребоваться импортировать один и тот же файл более одного раза, ниже приведен упрощенный пример того, как мы импортируем файл CSV, содержащий информацию об элементах и ​​событиях в одном файле. если у вас есть файл, имеющий следующую структуру:

|item_id|event_id|item_body  |event_body  |

|12231  | 123    | 'price $1'| 'on friday'|

|12232  | 123    | 'price $5'| 'on friday'|

мы запускаем это как для импортера типа содержимого события, так как для столбца * _id указан GUID, а тело импортируется как тело. Импортер событий запускается первым. Для элемента event_id используется, чтобы найти узел, который был создан для события, и ссылка на узел создана. Информация о типе контента, который не импортируется, игнорируется.

Только первый экземпляр event_id нуждается в теле или других полях, но некоторые из наших провайдеров дублируют данные, которые на самом деле не тормозят, насколько я помню. У нас также есть провайдеры, которые отправляют 2 отдельных файла 1 для событий и один для элементов, с элементами, содержащими столбец для идентификатора события.

...