делаю некий конвертер, не могу понять принцип создания ноды.

Главные вкладки

Аватар пользователя shtrlz shtrlz 25 марта 2009 в 16:25

делаю некий конвертер с phpnuke на drupal. перенести нужно более 1500 статей и каментов к ним. так как я чайник, появляются некие сложности.
необходимо чтоб ID ноды соответствовало номеру старой статьи. многие статьи со временем были удалены и поэтому id идет не подряд а с дырками. 1-2-3-9-11...

что делаю сейчас:
считываю старые данные phpnuke и распихиваю по новым таблицам drupal

node - сюда всякие nid vid заголовки и счетчики времени
node_revisions - сюда nid и сами статьи
node_counter - nid и счетчики

далее - все скриптом перетаскивается.

вручную устанавливаю счетчик nid на последнее значение (чтоб autoincrement дальше правильно работал)
но при создании новой ноды обычным методом "node/add/story" возникает конфликтная ситуация

drupal пытается запостить в середину таблицы node новую статью. а такая nid уже есть.

[user warning: Duplicate entry '40-40' for key 1 query: UPDATE dr_node SET nid = 40, vid = 40, title = 'Полирование металлов электролитическим способом', type = 'story', uid = 6, status = 1, created = 1013087750, changed = 1237984336, comment = 0, promote = 1, sticky = 0 WHERE nid = 40 in /storage/home/shtrlz1s/otvseh/includes/database.mysql.inc on line 172.]

в чем собственно вопрос? может кто-то на пальцах показать в какой последовательности и в какие таблицы заносить полученные данные? ну или намекните где почитать?

Комментарии

Аватар пользователя elia elia 25 марта 2009 в 16:40

"shtrlz" wrote:
в чем собственно вопрос? может кто-то на пальцах показать в какой последовательности и в какие таблицы заносить полученные данные? ну или намекните где почитать?

что бы счетчик щелкал надо вносить записи с пустым id.
В своих тестах сделай по-другому:
- перенеси статьи
- установи значение счетчика равным максимальному id статьи + 1.

Аватар пользователя penexe penexe 25 марта 2009 в 16:43

"shtrlz" wrote:
необходимо чтоб ID ноды соответствовало номеру старой статьи.

зачем?
"shtrlz" wrote:
может кто-то на пальцах показать в какой последовательности и в какие таблицы заносить полученные данные? ну или намекните где почитать?

функция node_save поишите на этом сайте

Аватар пользователя shtrlz shtrlz 25 марта 2009 в 17:01

'необходимо чтоб ID ноды соответствовало номеру старой статьи.'

дело в том что потом проще будет привести все в порядок. так как много статей пересекается по ссылкам Smile да адреса потом перевести из node/1258 в article1258.html (так уж они давно проиндексированны)

за "node_save" спасибо. покопаюсь.

Аватар пользователя penexe penexe 25 марта 2009 в 17:54

"shtrlz" wrote:
необходимо чтоб ID ноды соответствовало номеру старой статьи.'

дело в том что потом проще будет привести все в порядок. так как много статей пересекается по ссылкам Smile да адреса потом перевести из node/1258 в article1258.html (так уж они давно проиндексированны)


ясно, ну тгда можно сделать так
в цикле от 1 и пока не приспичит создаем ноды через node_save (он сразу все создат так как надо друпалу)
перед импортом создать тип материала "трэш"
на каждой итерации смотреть тот ли номер будет присвоен ноде ( db_next_id('{node}_nid');)если нет то создавать пустой материал типа "трэш" а если нужный то создавать то что следует.
потом через админку отфильтровать трэш и удалить

Аватар пользователя elia elia 25 марта 2009 в 18:22

"penexe" wrote:
ясно, ну тгда можно сделать так
в цикле от 1 и пока не приспичит создаем ноды через node_save (он сразу все создат так как надо друпалу)
перед импортом создать тип материала "трэш"
на каждой итерации смотреть тот ли номер будет присвоен ноде ( db_next_id('{node}_nid');)если нет то создавать пустой материал типа "трэш" а если нужный то создавать то что следует.
потом через админку отфильтровать трэш и удалить

Мы сами себе создаем проблемы, а потом героически их преодолеваем! )))))))))))))))))))))))))))))))))))))))))))))))))))))))

Автору ветки: сравни объем работы по этому предложению и моему.

Аватар пользователя elia elia 25 марта 2009 в 19:20

кстати!
А какая версия Drupal? Если 5-ка, то однозначно надо помимо установки генератора в правильное значение править еще и два строчка в таблице sequences (перменные node_nid и node_revisions_vid) - я писал об этом на drupal.org В ответ они там заявляют, что в 6-ке таких проблем нет

Аватар пользователя shtrlz shtrlz 3 августа 2009 в 19:03

все-таки я тупой. ну вот создал я в своем независимом конвертере некий массив $node
при выводе его на экран — все видно, но как его записать с помощью node_save ?