web-dev-qa-db-fra.com

Afficher la liste des termes de taxonomie séparés par des virgules?

Drupal 7.

Dans mon node.tpl.php, je veux imprimer une liste de termes de taxonomie (la taxonomie est appelée "canaux"). Si j'utilise:

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

Cela fonctionne, bien sûr, mais le mieux que je puisse faire pour les aligner est d'utiliser CSS pour les laisser flotter à gauche. Je voudrais qu'ils soient séparés par des virgules. Des idées?

THX.

10
Mike

Vous pouvez essayer de thématiser le champ en utilisant field.tpl.php ou theme_field() .

À titre d'exemple (en utilisant field.tpl.php):

  1. Copiez field.tpl.php Dans votre répertoire de thème à partir de "modules/field/theme"
  2. Faites une copie de ce fichier et renommez-le en field--field-channel.tpl.php
  3. Modifiez le fichier comme vous le souhaitez.

Comme exemple rapide/sale pour que cela fonctionne, field--field-channel.tpl.php Pourrait ressembler à:

<div class="<?php print $classes; ?> clearfix"<?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 style="display:inline;" class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>>
        <?php 
          print render($item);
          // Add comma if not last item
          if ($delta < (count($items) - 1)) {
            print ','; 
          }
        ?>
      </div>
    <?php endforeach; ?>
  </div>
</div>

Il existe probablement plusieurs façons d'accomplir cela en utilisant le fichier .tpl, mais ce n'est qu'une option. Je recommande d'ajouter une classe au DIV au lieu d'un style et d'apporter les modifications dans votre feuille de style au lieu d'utiliser des styles en ligne.

11
Laxman13

Le module Text Formatter est maintenant disponible pour Drupal 7, et vous permet de le faire sans travail de thème personnalisé.

11
jhedstrom

Voici une façon d'utiliser le theme_field approche (ajoutez-le à votre template.php fichier):

/**
 * Implements theme_field()
 *
 * Make field items a comma separated unordered list
 */
function THEMENAME_field__NAME_OF_FIELD__NAME_OF_CONTENT_TYPE($variables) {
  $output = '';

  // Render the label, if it's not hidden.
  if (!$variables['label_hidden']) {
    $output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ':&nbsp;</div>';
  }

  // Render the items as a comma separated inline list
  $output .= '<ul class="field-items"' . $variables['content_attributes'] . '>';
  for ($i=0; $i < count($variables['items']); $i++) {
    $output .= '<li>'. drupal_render($variables['items'][$i]);
    $output .= ($i == count($variables['items'])-1) ? '</li>' : ', </li>';
  }
  $output .= '</ul>';

  return $output;
}
7
cdmo

Vous pouvez le faire facilement simplement en CSS:

. champ-type-taxonomie-référence-terme. éléments-champ. élément-champ {
 affichage: bloc en ligne; 
 * affichage: en ligne; 
 * zoom: 1; 
} 
. champ-type-taxonomie-terme-référence. éléments-champ. élément-champ: après {
 contenu: ","; 
} 
. champ-type-taxonomie-terme-référence. éléments-champ. élément-champ: dernier enfant: après {
 contenu: ""; 
} 
4
Steven Wright
2
ipwa
<?php
if ($node->taxonomy) {
    foreach($node->taxonomy as $term) {
        if ($term->vid == 3) { // the id of the vocabulary
            $my_terms[] = l(
                t($term->name),
                'taxonomy/term/' . $term->tid
            );
        }
    }
}

if ($my_terms) { ?>
    <div class="clear-block">
        <div class="terms">
            <?php print implode(", ", $my_terms); ?>
        </div>
    </div>
<?php } ?>
0
brunorios1

Encore plus facile pour le délimiteur et le wrapper, vous utilisez le module Taxonomy Formatter: http://drupal.org/project/taxonomy_formatter

Plus de détails sur la page du projet:

Il s'agit d'un petit module écrit pour fournir un formateur personnalisé pour les éléments de taxonomie. Les formateurs par défaut génèrent tous deux les termes enveloppés dans des divs. Ce module ajoute un nouveau formateur qui vous permet de spécifier le type d'élément, le type d'encapsuleur, les classes pour les deux, le séparateur utilisé et s'ils sont liés ou non aux pages de termes. Cela donne des options de mise en page beaucoup plus personnalisables.

0
Greta