Где то тут же нашел пару-тройку постов на эту тему и там таксономию к ноде добавляли следующим образом:
<?php
$node->taxonomy[] = 1; //$tid, термин с таким id существует
$node = node_submit($node);
node_save($node);
?>
и никто не "жаловался".
Что я делаю не так? потому что после создания хоть одной ноды выползает варнинг:
User warning: Duplicate entry '48-3360' for key 'PRIMARY' query: INSERT INTO term_node (nid, vid, tid) VALUES (3360, 3360, 48) in _db_query() (line 147 of /home/u4649/domains/ultra43.ru/includes/database.mysqli.inc).
Комментарии
Я точно не знаю, поэтому это только предположение - возможно данный код используется только для разового добавления? А при повторном использовании уже сообщает, что запись в базе не может быть продублирована. То есть повторно задана.
т.е. добавляю я правильно?
Как тогда поступать при обновлении ноды?
прощу прощения, не вдавался в подробности... но мне кажется что
<?php
$node = node_submit($node);
node_save($node);
?>
эти функции делают одно и тоже...
только первая имитирует сабмит формы с валидацией и т.д. и сохраняет ноду в базу.
а вторая просто сохраняет объект НОДА в базу.
если правильно в ручную сформировать $node , то достаточно будет только node_save
Примеры (рабочие) кода программного сохранения-добавления ноды в сети есть, где-то находил.
<?php
taxonomy_node_delete($node);
?>
не решило проблем, ошибка всеравно появляется (хотя поидее должно все заработать).
Спецы, может подскажите в какую сторону рыть?
Поищите в коде ,наверное, модуля taxonomy строку -"INSERT INTO {term_node}"
или что-то подобное... и выясните, в случае чего происходит INSERT - в базу а вслучае чего UPDATE... может станет понятнее, почему друпал пытается добавить запись более 1-го раза..
А каким образом вы запускаете свой код? Какой-то хук?