Contenu de champ personnalisé

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.

Bonjour,
j'ai créé un champ (texte) dans un contenu "article", et je souhaiterai afficher sa valeur dans un Javascript placé en bas de page. L'interface de Drupal est (bien) pensé pour insérer cette valeur dans le corps de la contribution mais je ne vois pas comment aller chercher cette valeur pour la placer hors de ce périmètre.

Avez-vous des infos à me transmettre ?

merci

Version de Drupal : 

Drupal 7 n'offre pas trop de doc sur le theming des champs (field) ce qui est malheureux,

Donc je t'offre ce que je sais en espérant que ca t'aidera

Dans le fichier node.tpl.php

tu met ca

<?php print render($content['field_texte']); ?>
// field_texte est le nom du champ :)

ici le problème c'est que si par exemple ce champ n'existe que pour un type de contenu tu peut faire un petit test avant:

<?php if ($node->type=='TON_TYPE_DE_CONTENU'): ?>
...
...
<?php print render($content['nom_du_champ_dans_ce_type_de_contenu']); ?>
...
...

Sinon j'me suis arraché la gueule a voir comment faire ca en accédant directement à la base de donnée (si ca t'intéresse)
A mettre dans le fichier page.tpl.php (et tous les autres d'ailleurs)

imagine que tu as fait un contenu nommé article2
et que par exemple ton champ s'appelle field_ordo (pour les ordonnée)
donc voila comment faire
1 - on prend le node id (nid)
2 - on accede à la base de donné en cherchant les node de type article2 et dont le status est à 1 (publié)
3 - puis une petite jointure avec la table qui contient ton champ
généralement drupal créer une table "field_data_field_ordo"
si ton champ s'appelle tarzan tu auras donc une table qui se nomme "field_data_tarzan" (en principe :)
4 - on prend la valeur et on l'affiche

// print arg(1) ;    <-- si tu veut afficher le node id
$nodeid = (arg(0) == 'node' && is_numeric(arg(1)))?arg(1):FALSE;
['#form_builder_token'];
               
              
$type="article2"; /* nom du contenu pour la requete /
$status=1;   /
les noeuds publiés /
               
$query = db_select('node', 'n');
$query->addField('n', 'nid');
$query->addField('n', 'title');
$query->condition('n.type', $type, 'LIKE');
               $query->condition('n.status', $status);
$query->condition('n.nid', $nodeid); /
la on insère le nid /
               $query->leftjoin('field_data_field_ordo', 'o', 'n.nid = o.entity_id'); /
la tu change avec le nom de la table /
$query->addField('o', 'field_ordo_value'); /
pareil /

$result = $query->execute();
foreach ($result as $row) { /
on récupère la valeur /
print $row->field_ordo_value; /
et la je l'affiche toi tu le mettra dans ton javascript */
             }

et si tu prend un plaisir fou a te plonger dans les données du genre dump de drupal
essai donc ca

$nodeid = (arg(0) == 'node' && is_numeric(arg(1)))?arg(1):FALSE;
foreach ($page['content']['system_main']['nodes'][$nodeid]['field_ordo'] as $key => $val) echo $key .'>>'.$val.'
';

et la c'est un tableau multidimensionnel tu peut faire des retour en arrière ou en avant (en avant il faut que ce soit un array
exemple: foreach ($page['content']['system_main']['nodes'][$nodeid]['field_ordo'] as $key => $val) echo $key .'>>'.$val.'
';
en arrière tu enleve juste le dernier crocher
par exemple

foreach ($page['content']['system_main']['nodes'] as $key => $val) echo $key .'>>'.$val.'
';

voili voilou :) merci à toi et j'espère que ca t'aidera

Cordialement
______________________________________ Benfarhat Elyes

merci pour cette longue et intéressante réponse. Je comprends mieux l'articulation de la BDD, j'ai pu récupérer ma valeur !

Effectivement le theming est peu documenté, en tout cas en français.

merci encore
++