У меня есть несколько неопубликованных узлов, для которых у меня есть идентификаторы их узлов. Как я могу их программно опубликовать? Правильно ли добиться этого в пользовательском модуле с помощью запроса, подобного следующему?
db_query("UPDATE {node} SET status = 1 WHERE nid = %d", $nid)
node_revision
, поэтому он вызывает несогласованность.Ответы:
Используется
db_query()
метод Drupal 6, который не используется в Drupal 7. Чтобы добиться своей работы, я предлагаю этот код (без каких-либо ручных запросов).Если у вас есть больше идентификатора узла, и вы хотите опубликовать все эти узлы, вы можете использовать следующий код.
источник
db_query
это метод Drupal 7 тоже. Просто принимает разные аргументы.submit
обработчик, затем в пользовательском обработчике отправки вы можете использовать что-то вроде этого.когда вы используете node_load (), node_load_multiple () для загрузки (нескольких) узлов, существует много ловушек, вызываемых модулями, такими как hook_node_load , hook_node_operations , hook_node_prepare , hook_node_accesse . Но при выполнении запроса непосредственно к схеме drupal эти хуки будут игнорироваться и приводят ко многим проблемам.
Запросы:
Просто используйте приведенный выше код, если node_load () или node_load_multiple () не работают из-за нехватки доступной памяти.
источник