it-swarm-eu.dev

Zobrazit seznam taxonomických termínů oddělených čárkami?

Drupal 7.

V mém uzlu.tpl.php chci vytisknout seznam taxonomických pojmů (taxonomie se nazývá „kanály“). Pokud použiji:

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

Funguje to samozřejmě, ale nejlepší, co mohu udělat, abych je vložil, je použití CSS k jejich plavení vlevo. Chtěl bych, aby byly odděleny čárkami. Nějaké nápady?

Díky.

10
Mike

Můžete zkusit téma pomocí pole field.tpl.php nebo theme_field() .

Jako příklad (pomocí field.tpl.php):

  1. Zkopírujte field.tpl.php Do adresáře s tématem z "modulů/pole/motivu"
  2. Vytvořte kopii tohoto souboru a přejmenujte jej na field--field-channel.tpl.php
  3. Soubor však upravte.

Jako rychlý/špinavý příklad by to mohlo fungovat, field--field-channel.tpl.php Může vypadat takto:

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

Pravděpodobně existuje několik způsobů, jak toho dosáhnout pomocí souboru .tpl, ale toto je pouze jedna možnost. Doporučuji přidat třídu do DIV namísto stylu a provést změny v šabloně stylů namísto použití inline stylů.

11
Laxman13

Modul Text Formatter je nyní k dispozici pro Drupal 7) a umožňuje to bez vlastní práce s motivem.

12
jhedstrom

Zde je jeden způsob, jak použít theme_field přístup (přidejte jej do svého template.php soubor):

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

Můžete to snadno udělat jen v CSS:

. typ pole-taxonomie-termín-reference .field-items .field-item {
 display: inline-block; 
 * display: inline; 
 * zvětšení: 1; 
} 
. pole-typ-taxonomie-termín-reference .field-items .field-item: po obsahu {
: ","; 
} 
. pole-typ-taxonomie-termín-reference .field-items .field-item: last-child: po {
 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

Ještě jednodušší pro oddělovače a obálky používáte modul Taxonomy Formatter: http://drupal.org/project/taxonomy_formatter

Více informací ze stránky projektu:

Toto je malý modul vytvořený pro poskytnutí vlastního formátovače pro položky taxonomie. Výchozí formátovače vydávají oba termíny zabalené do divs. Tento modul přidává nový formátovací modul, který umožňuje určit typ prvku, typ obálky, třídy pro oba použité oddělovače a pokud odkazují na stránky termínů nebo ne. To poskytuje mnohem více přizpůsobitelné možnosti rozvržení.

0
Greta