Пакетные операции с узлами в Drupal 5

#drupal

Вопрос:

Каков наиболее эффективный способ просмотреть и обновить каждый отдельный узел на сайте drupal, например, для механического добавления тегов? В Drupal 6 есть блестящий новый пакетный API, но что делать в Drupal 5?

Я начал писать сценарий, который сохраняет указатель, а затем обходит все узлы в cron, загружает их, а затем сохраняет, но мне интересно, что еще можно сделать.

Ответ №1:

Я не предлагаю работать непосредственно на уровне базы данных, так как некоторым модулям может потребоваться обновить некоторые другие связанные таблицы. Самый надежный и гибкий способ-написать сценарий для загрузки, изменения и сохранения узлов в цикле. Вы также можете попробовать использовать дополнительные специальные модули для Drupal 5:

Ответ №2:

Рассмотрим модуль очереди заданий. Вот цитата об этом (со страницы проекта модуля):

… используется модулями для постановки вызовов функций в очередь для выполнения в cron. Функция job_queue_add() используется модулями для добавления задания в очередь

Этот модуль подходит к концу срока службы для Drupal 7, в ядре есть очередь.

Ответ №3:

хм, я не знаком со структурой базы данных drupal 5, но если она достаточно похожа на drupal 6, вы могли бы довольно легко изменить все это, просто работая за term_node столом. это сопоставление идентификаторов узлов с идентификаторами терминов:

 term_node
- nid
- vid
- tid
 

nid-это идентификатор узла, конечно, vid-идентификатор версии, если вы используете версии, а tid-идентификатор термина. все термины хранятся в term_data

 term_data
- tid
- name
 

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

Комментарии:

1. делать что — то на уровне бд-это не то, что я хочу делать-гораздо больше риска испортить все тонким способом, а затем не заметить, пока не станет слишком поздно.