[Résolu] Création de node sans l'interface graphique

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Salut salut :)

Je viens vous demander un petit coup de main svp.

Je suis entrain de créer un module, et mon problème est lors de la création de node directement dans le code.
je m'explique, j'utilise le module aggregator pour récupérer des données venant de flux RSS, ensuite je doit créer des nodes d'un type défini par moi même. Pour le moment j'ai choisi de créer un hook_cron dans mon module et de créer mes nodes en utilisant les données de la table aggregator_item au moment où le cron est appelé.

Mais, il y a tjs un mais ^^, pour créer mes nodes je n'ai pas trouvé de fonction ou de méthode dans le module node, donc j'insère directement dans la table node, node_revision et dans les tables correspondant à mon type de node.

Ça fonctionne mais pose des problèmes au niveau des commentaires, si je post un commentaire sur des nodes ça les enregistrement tout le temps sur le nod numéro 1 peut importe le numéro de celui sur lequel je souhaité laisser le commentaire.

Donc j'aimerai savoir si il y a la possibilité de créer un node proprement avec le module node mais sans passer par le formulaire, j'aimerai le faire dans le code !

Et est-il possible de détecter la récupération d'un nouvelle article enregistré par aggragator pour directement créer mon node en question ?

merci de votre aide !

Forum : 
Version de Drupal : 

salut
tu as regardé du côté de node_save ou drupal_execute?
exemple de node_save que j'utilise
EDIT : désolé y'a beaucoup de champs car c'est le code que j'utilise pour générer un produit de boutique en ligne ubercart mais le principe est là.
ATTENTION, CET EXEMPLE EST POUR DRUPAL 5

<?php
$ebook
= new stdClass();
 
$ebook->type                = 'ebook';
   
$ebook->title               = $node_livre->title;
   
$ebook->body                = $resume;
 
$ebook->teaser              = $resume;
 
$ebook->format              = 1;
   
$ebook->sell_price          = 0; //prix de vente. 0 car en fonction de l'attrivbut choisi
 
$ebook->taxonomy[3]         = $genre;
  
$ebook->uid                 = $node_livre->uid;
 
$ebook->comment             = 2//possibilité de commenter  
 
   // champs CCK
 
$ebook->field_type_de_publication[0]['value'] = check_type_de_publication($type_de_publication, 'node_save, champ CCK type de publication');
  
$ebook->field_livre_origine[0]['nid']         = $node_livre->nid;
 
$ebook->field_membres_autorises               = $tableau_uids; //les membres qui pourront accèéder à ce fichier
 
$ebook->field_chemin_pdf[0]['value']          = $nom_pdf;
 
$ebook->field_retirer_de_la_vente[0]['value'] = 0//par défaut le livre est publié
 
   // champs ubercart
 
$reference_pdf = $node_livre->nid.'pdf' ;
 
$reference_flash = $node_livre->nid.'flash' ;
 
$ebook->model               = $reference_pdf;
 
$ebook->shippable           = 1;     
 
$ebook->default_qty         = 1;   
   
$ebook->pkg_qty             = 1;         
 
$ebook->weight_units        ='kg'
 
$ebook->length_units        ='cm'
 
$ebook->weight              = 0;       
   
$ebook->length              = 0;      
 
$ebook->width               = 0;       
   
$ebook->height              = 0;        

 
node_save($ebook); // SAUVER LE NODE
?>