[Résolu] rendre visible les champs vides des nodes en mode "vue"

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,

en mode "vue" on peut voir le libellé et la valeur des champ.
Quand un champ est vide , rien n'est affiché même pas le libellé.
Je suis allé dans le fichier \modules\field\field.api.php

et modifier la fonction "hook_field_attach_view_alter" comme ca:

//-----------------------------------------------------------------

function hook_field_attach_view_alter(&$output, $context) {
// We proceed only on nodes.
if ($context['entity_type'] != 'node' || $context['view_mode'] != 'full') {
return;
}

$node = $context['entity'];
// Load all instances of the fields for the node.
$instances = _field_invoke_get_instances('node', $node->type, array('default' => TRUE, 'deleted' => FALSE));

foreach ($instances as $field_name => $instance) {
// Set content for fields they are empty.
if (empty($node->{$field_name})) {
$display = field_get_display($instance, 'full', $node);
// Do not add field that is hidden in current display.
if ($display['type'] == 'hidden') {
continue;
}
// Load field settings.
$field = field_info_field($field_name);
// Set output for field.
$output[$field_name] = array(
'#theme' => 'field',
'#title' => $instance['label'],
'#label_display' => 'above',
'#field_type' => $field['type'],
'#field_name' => $field_name,
'#bundle' => $node->type,
'#object' => $node,
'#items' => array(),
'#entity_type' => 'node',
'#weight' => $display['weight'],
0 => array('#markup' => ' '),
);
}
}
}

//-----------------------------------------------------------------

mais ca ne change pas le comportement par défaut...

Avez-vous une autre solution?

Merci d'avance

Forum : 
Version de Drupal : 

Bonjour,

http://api.drupal.org/api/drupal/modules!node!node.tpl.php/7

Je te déconseille de faire des modifications directement sur \modules\field\field.api.php afin que ton site reste fonctionnel après les mises à jour du core.
Il faut que tu regardes du côté des variables qui sont exploitables au niveau du tpl.

Tu peux utiliser le module devel afin de faire un dpm($node) ou dpm($content) pour voir les variables disponibles dans ton tpl.

Peut-être que tu peux forcer l'affichage du label avec $content['field_example']... A tester
"$content: An array of node items. Use render($content) to print them all, or print a subset such as render($content['field_example']). Use hide($content['field_example']) to temporarily suppress the printing of a given element."

Cordialement,