Masquer une étiquette de champ

22

Existe-t-il un moyen de masquer l'étiquette de champ lors du rendu d'un champ personnalisé dans Drupal 7?

Dans mon modèle de nœud, j'ai:

<?php print render($content['field_image']); ?>

Ce qui me donne:

<div class="field field-name-field-image field-type-image field-label-above">
  <div class="field-label">Image:&nbsp;</div>
  <div class="field-items">
    <div class="field-item even">
      <img typeof="foaf:Image" src="http://site.com/sites/default/files/image.jpg" alt="">
    </div>
  </div>
</div>

J'aimerais ne pas l'avoir <div class="field-label">Image:&nbsp;</div>.

Existe-t-il un moyen de s'en débarrasser autrement que dans le CSS ou en créant manuellement le balisage?

J'ai essayé unset($content['field_image']['#title']), mais ça me donne <div class="field-label">:&nbsp;</div>.

Ben
la source
7
Peu importe, je l'ai compris, vous avez défini #label_display sur caché: <?php $content['field_image']['#label_display'] = 'hidden'; ?>
Ben
1
Vous pouvez ajouter cela comme réponse et l'accepter, afin qu'il soit clair que la réponse est résolue.
Berdir
j'ai eu le même problème mais je veux faire un modèle de champ pour mon nœud. comment puis-je ? au lieu de retirer l'étiquette
+1 sur votre question, Ben, mais votre réponse acceptée devrait être la réponse de @ Marta ci-dessous. PAS besoin d'écrire AUCUN CODE pour ce problème! Accédez à: admin / structure / types / manage / VOTRE TYPE DE CONTENU / affichez pour afficher votre liste de champs et sous l'étiquette, sélectionnez <Caché> dans le menu déroulant. Cliquez sur le bouton Enregistrer. Cette réponse devrait s'appliquer aux types de champs, peut-être à tous, pas seulement aux fichiers.
therobyouknow

Réponses:

24

Au lieu de coder en dur le paramètre des étiquettes de champ dans le modèle, vous devez plutôt utiliser le paramètre sous l' Manage displayonglet dans lequel vous ajoutez et supprimez des champs pour votre entité.

googletorp
la source
Googletorp, comment cachez-vous alors l'étiquette du titre?
1
Si vous modifiez le type de contenu, vous pouvez modifier la valeur dans Title field label. C'est un peu ennuyeux que le titre soit toujours obligatoire, mais c'est la vie je suppose.
Malks
1
Est-il possible d'afficher les étiquettes de champ différemment lors de la création de contenu et lors de son affichage public?
Jay
@Jay, ce serait possible, mais il faudrait du code, personnalisé ou via un module. Je ne connais aucun module qui le fasse pour vous en ce moment.
googletorp
1
Ben, votre réponse acceptée devrait être la réponse de @ Marta ci-dessous. Pas besoin d'écrire de code! Accédez à: admin / structure / types / manage / VOTRE TYPE DE CONTENU / affichez pour afficher votre liste de champs et sous l'étiquette, sélectionnez <Caché> dans le menu déroulant. Cliquez sur le bouton Enregistrer. Cette réponse devrait s'appliquer aux types de champs, peut-être à tous, pas seulement aux fichiers.
therobyouknow
11

Pour masquer le nom d'un champ personnalisé (champ de fichier dans ce cas avec le nom "fichier") afin d'afficher uniquement une liste de fichiers téléchargeables et non le nom du champ, procédez comme suit:

  • Choisissez le type de contenu qui contient le champ de fichier (j'ai créé un nouveau type appelé "Liste de fichiers")
  • Accédez à l'onglet "Gérer les champs"
  • Sous Label, choisissez "Hidden" et pour Format, "Generic File"
  • Enregistrez et créez un nouveau nœud de ce type de contenu et le nom "fichier" ne devrait plus être affiché
Marta
la source
2
La réponse +1 @ Marta ci-dessus devrait être la réponse acceptée - admin / structure / types / manage / VOTRE TYPE DE CONTENU / affichage pour afficher votre liste de champs et sous l'étiquette, sélectionnez <Caché> dans le menu déroulant. Cliquez sur le bouton Enregistrer. Cette réponse devrait s'appliquer aux types de champs, peut-être à tous, pas seulement aux fichiers.
therobyouknow
Je suis d'accord! Moins vous faites de codage ou de CSS dans Drupal, mieux c'est :)
jasonflaherty
7

Oui, en utilisant la propriété #title_display de l'API Form.

drupaljoe
la source
N'est-ce pas '#label_display'?
Shoaib Nawaz
7
$content['field_image']['#label_display']='hidden';
Mike
la source
Meilleure réponse pour mon cas d'utilisation.
Kiee
4

en utilisant le modèle, field.tpl.phpvous pouvez supprimer ou personnaliser l'étiquette ( $labeldans le modèle) de votre champ. pour l'utiliser, vous devez ajouter le champ modèle field.tpl.phpà votre thème:

<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
    <?php endforeach; ?>
  </div>
</div>
cigotete
la source