Impossible de créer un node avec node_save.

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,

J'ai installé un Drupal Open Atrium basé sur un Drupal 7. J'ai aussi développé un module qui doit créer des noeuds avec le code suivant.

<?php
$node
= new stdClass(); // We create a new node object
       
$node->type = "page"; // Or any other content type you want
       
       
node_object_prepare($node); // Set some default values.
       
$node->title = "Your title goes jere";
       
       
$node->language = LANGUAGE_NONE; // Or any language code if Locale module is enabled. More on this below *
       
$node->path = array('alias' => 'content/Pedro2'); // Setting a node path
       
$node->uid = 1; // Or any id you wish

        $node->body[$node->language][0]['value'] = 'This is a body text';
       
$node->body[$node->language][0]['summary'] = 'Here goes a summary';
       
$node->body[$node->language][0]['format'] = 'filtered_html';

        $node = node_submit($node);
       
node_save($node);
?>

Quand j’exécute le module contenant l'algorithme précédent, ça marche je vois bien mon nœuds dans la liste des noeuds (/admin/content). Quand je clique dessus, cela me redirige bien vers la page du nœud en question. Le problème est que cette page m'affiche bien le titre du nœuds, l'auteur du nœud la date de création et même le formulaire d'ajout de commentaire. Mais pas le contenu ! En effet, le "body" n'apparait pas.
Plus étrange encore, quand je clique sur EDIT, j'ai bien le contenu qui apparait dans le textarea -_-' ...

Pourquoi ?
J'ai essayé ce module sur une drupal 7 classique et j'ai toujours le même problème.

Cordialement.

Fichier attachéTaille
Icône image sans_titre.png77.53 Ko
Icône image sans_titre2.png86.39 Ko
Icône image sans_titre3.png66.26 Ko

Est-ce que ce ne serait pas le format "filtered_html" qui ne serait pas bon ? inexistant ?

dans les copies d'écran je vois Wysiwyg, il faudrait valider que le format filtered_html existe et qu'il est utilisable par l'utilisateur

J'ai trouvé ce qui n'allait pas.

Le problème était que je n'utilisais pas la bonne valeur pour le format du texte.
En effet, je n'ai pas utilisé le "nom machine" ( machine name ).
Pour ceux qui auraient le même problème et qui passeraient par ici, voici la bonne syntaxe:

Pour wysiwyg => panopoly_wysiwyg_text
Pour HTML => panopoly_html_text
Pour FULL HTML => full_html
Pour Plain text => plain_text

<?php
$node
->body[$node->language][0]['format'] = 'full_html';
?>

Pour obtenir le nom machine => /admin/config/content/formats . Puis cliquez sur "configure".

Voilà, et merci à vincent59 pour m'avoir orienté dans la bonne direction !

Cordialement.