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

Имеются в виду термины таксономии в Drupal'е. Возникла недавно подобная необходимость. И я, к сожалению, нашёл простое решение лишь после прохождения точки невозврата. Оставлю здесь, авось кому пригодится.

Напрямую через админку, как можно догадаться, термины перетаскивать нельзя. Можно только создать новый термин в новом словаре и затем прикрепить к нему материалы. А потом переадресацию настроить. Займёт это очень много времени. Способ простой - действовать через базу данных. Итак:

  1. Создаём на сайте словари таксономии (в которые термины будут перекинуты). Термины могут перекидываться и в действующие словари, это не важно.
  2. Далее нужно определить машинный номер словаря. Я определял так - создал в каждом словаре по контрольному термину с оригинальным названием, например, "котлета-мотлета" и пр. Далее, в таблице taxonomy_term_data, о которой речь чуть ниже, с помощью ctrl+f находил эти термины и в поле "vid" узнавал номер словаря. Вообще, словари нумеруются по времени создания - 1, 2, 3 и т.д. Но лучше на всякий случай проверить.
  3. Заходим в phpmyadmin. На локальном хостинге адрес - http://localhost/tools/phpmyadmin/. Открываем нужную базу данных. Находим таблицу taxonomy_term_data. Здесь перечислены все термины таксономии с сайта.
  4. Теперь находим термин, который нужно перенести в новый словарь. Щёлкаем по кнопке изменить рядом с ним. В поле "vid" меняем вписанное значение на номер нужного нам словаря. Внизу нажимаем на ok.
  5. Повторяем то же с другими терминами.

Вот так просто.

Главное преимущество этого способа - все прикреплённые к термину материалы так и остаются вместе с ним. Второе преимущество вырастает из недостатка. А недостаток таков - при переносе чпу-синоним (вы же используете модуль pathauto, не так ли?) не меняется. И если у вас шаблоны синонимов для словарей различаются, придётся запустить массовое обновление синонимов или дополнительно заходить в каждый термин и ставить галку в поле "Создать синоним URL автоматически". А преимущество в том, что при включённом модуле redirect бонусом параллельно с синонимами будут создаваться и правильные переадресации с прошлого url'а на новый.

И ещё одно, о чём я узнал случайно. Вдруг вы всё же, как и я поначалу, пошли сложным путём, ну и вообще для информации. Если через админку Друпала удалить какой либо термин, исчезнут все переадресации не только на него, но и с него. Поэтому ручные переадресации нужно делать либо после удаления термина (причём, как минимум, и с короткого адреса, типа taxonomy/term/883, и с чпу-синонима), либо удалять термины не через админку Друпала, а непосредственно из базы - из той же таблицы taxonomy_term_data - тут достаточно будет одного перенаправления.

Комментарии