Submitted by nyl auster on
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ù :
<?php
function 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) :
<?php
print afficher_formulaire_node('page');
?>
pour afficher le formulaire d'ajout de notre type de contenu.
Commentaires
note : j’aurais du mettre un
Permalien Soumis par nyl auster le 7 Octobre, 2010 - 23:41
note : j'aurais du mettre un module_load_include() à la place du "include_once('modules/node/node.pages.inc')"...
note 2 : le fichier node.pages.inc est requis car il n'est pas inclus systématiquement sur toutes les pages du site (seulement sur les urls de nodes) et c'est lui qui contient les fonctions liées au fonctionnement du formulaire de node. Voilà voilà.