Проблема с пунктом таксономии

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

Аватар пользователя rrron rrron 19 марта 2010 в 14:40

День добрый, по поиску ничего не нашел или плохо искал, в общем имеем такую ситуацию, был пункт в словаре таксономии:
"пункт" с адресом /taxonomy/term/226 (но точно не помню) и синонимом к нему "punkt", балуясь в таксономии случайно его из словаря грохнул, теперь при повторном создании его выходит путь типа /taxonomy/term/907 и при назначении синонима "punkt" он становится новым пунктом таксономии и пропал из всех нодов (около 200) к которым он был подвязан, что делать?

P.S. уже готовлюсь вручную перебивать, но может есть какой-то другой вариант?

Комментарии

Аватар пользователя wolfXXXL wolfXXXL 19 марта 2010 в 14:53

Не гарантирую результат, но чисто философски:
Если допустить что при удалении термина он не удаляется в таблице term_node и связи остались, то Вы можете просто в базе данных в таблице term_data новый термин 907 поменять на старый 226 (сохранив тот же словарь).

P.S. Метод не проверен и может чего-то не предусмотрел, нужно посмотреть процесс как создается и привязывается термин.

Аватар пользователя wolfXXXL wolfXXXL 19 марта 2010 в 15:22

"rrron" wrote:
что я точно не помню название удаленного

Если помните ноду где он был - в той же таблице term_node посмотрите все термины, исключением найдёте.
Важно! Если ноду после этого пере сохраняли - старого там точно нет!

Аватар пользователя graker graker 19 марта 2010 в 15:36

Собственно, что может быть проще, чем посмотреть, как оно сделано в движке? Из функции taxonomy_del_term():

db_query('DELETE FROM {term_data} WHERE tid = %d', $tid);
db_query('DELETE FROM {term_hierarchy} WHERE tid = %d', $tid);
db_query('DELETE FROM {term_relation} WHERE tid1 = %d OR tid2 = %d', $tid, $tid);
db_query('DELETE FROM {term_synonym} WHERE tid = %d', $tid);
db_query('DELETE FROM {term_node} WHERE tid = %d', $tid);

То есть все, что надо - удаляется (чего и следует ожидать от одного из главных модулей Друпала).

В общем, нельзя восстановить. Надо бэкапить, прежде чем баловаться.