it-swarm.it

Visualizza un elenco separato da virgole di termini di tassonomia?

Drupal 7.

Nel mio node.tpl.php, voglio stampare un elenco di termini di tassonomia (la tassonomia si chiama "canali"). Se uso:

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

Funziona, ovviamente, ma il meglio che posso fare per metterli in linea è usare i CSS per spostarli a sinistra. Vorrei che fossero separati da virgole. Qualche idea?

Grazie.

10
Mike

Puoi provare a utilizzare il campo usando field.tpl.php o theme_field() .

Ad esempio (usando field.tpl.php):

  1. Copia field.tpl.php Nella directory del tuo tema da "moduli/campo/tema"
  2. Crea una copia di quel file e rinominalo in field--field-channel.tpl.php
  3. Modifica il file come preferisci.

Come esempio rapido/sporco per far funzionare tutto ciò, field--field-channel.tpl.php Potrebbe apparire come:

<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>

Probabilmente ci sono molti modi per farlo usando il file .tpl, ma questa è solo un'opzione. Consiglio di aggiungere una classe al DIV invece di uno stile e di apportare le modifiche al foglio di stile invece di utilizzare gli stili incorporati.

11
Laxman13

Il modulo Text Formatter è ora disponibile per Drupal 7, e ti consente di farlo senza un tema personalizzato.

11
jhedstrom

Ecco un modo per usare theme_field approccio (aggiungilo al tuo template.php file):

/**
 * 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

Puoi farlo facilmente solo nei CSS:

. field-type-taxonomy-term-reference .field-items .field-item {
 display: inline-block; 
 * display: inline; 
 * zoom: 1; 
} 
. field-type-taxonomy-term-reference .field-items .field-item: after {
 content: ","; 
} 
. field-type-taxonomy-term-reference .field-items .field-item: last-child: after {
 content: ""; 
} 
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

Ancora più semplice per il delimitatore e il wrapper, si utilizza il modulo Formattore tassonomia: http://drupal.org/project/taxonomy_formatter

Maggiori dettagli dalla pagina del progetto:

Questo è un piccolo modulo scritto per fornire un formattatore personalizzato per gli articoli di tassonomia. I formattatori predefiniti producono entrambi i termini racchiusi in div. Questo modulo aggiunge un nuovo formattatore che consente di specificare il tipo di elemento, il tipo di wrapper, le classi per entrambi, il separatore utilizzato e se si collegano o meno ai termini pagine. Ciò offre opzioni di layout molto più personalizzabili.

0
Greta