J'ai des nœuds non publiés, pour lesquels j'ai leurs ID de nœud. Comment puis-je les publier par programme? Est-il correct de le réaliser dans un module personnalisé en utilisant une requête comme la suivante?
db_query("UPDATE {node} SET status = 1 WHERE nid = %d", $nid)
node_revision
, ce qui entraînera une incohérence.Réponses:
L'utilisation
db_query()
est une méthode Drupal 6, qui n'est pas utilisée dans Drupal 7. Pour réaliser votre travail, je suggère ce code (sans aucune requête manuelle).Si vous avez plus d'ID de nœud et que vous souhaitez publier tous ces nœuds, vous pouvez utiliser le code suivant.
la source
db_query
est également une méthode Drupal 7. Prend simplement différents arguments.submit
gestionnaire personnalisé à partir de là dans le gestionnaire de soumission personnalisé, vous pouvez utiliser quelque chose comme ça.lorsque vous utilisez node_load (), node_load_multiple () pour charger un (plusieurs) noad (s), il existe de nombreux hooks qui seraient invoqués par des modules, tels que hook_node_load , hook_node_operations , hook_node_prepare , hook_node_accesse . Mais en effectuant une requête directement sur le schéma drupal, ces crochets seront ignorés et entraîneront de nombreux problèmes.
Les requêtes sont:
Utilisez simplement le code ci-dessus si node_load () ou node_load_multiple () ne fonctionne pas en raison de la saturation de la mémoire disponible.
la source