'>

Appeler en php le formulaire d'un node dans n'importe quelle partie de votre site

J'ai trouvé différentes versions sur internet pour appeler un formulaire de création de node sur drupal 6, beaucoup ne marchant pas toujours. J'ai donc opté pour le code suivant, avec succès, sur un site. Je n'ai pas testé ce code dans toutes les configurations possibles je ne sais donc pas si il fonctionne dans toutes les conditions.
<?php
 
global $user;
 
// quel type de node souhaitez vous ajouter ? mettre le nom machine
 
$type = 'page';
 
// sans cette inclusion, j'obtiens un message d'erreur. Quelqu'un sait pourquoi ?
 
include_once('modules/node/node.pages.inc');
 
// Il faut certaines informations de base pour afficher un formulaire d'ajout
 
$node = array(
   
'uid' => $user->uid,
   
'name' => (isset($user->name) ? $user->name : ''),
   
'type' => $type,
   
'language' => ''
 
);
  print
drupal_get_form($type .'_node_form', $node);?>
Pour plus de facilité on pourrait packager tout ça dans une petite fonction dans un module que l'on pourrait appeler facilement de n'importe où :
<?phpfunction afficher_formulaire_node($type){
  include_once(
'modules/node/node.pages.inc');
  global
$user;
 
$node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => $type, 'language' => '');
  return
drupal_get_form($type .'_node_form', $node);
}
?>
Ensuite il suffira de marquer par exemple dans un bloc (format d'entrée php) :
<?phpprint afficher_formulaire_node('page');?>
pour afficher le formulaire d'ajout de notre type de contenu.