Custom formatter display_suithez vesszővel elválasztott content_taxonomy listához

Kategória: 
Snippet

Valahogy érzem, hogy jól fog ez még jönni.. Ha node_displays által szeretnél content taxonomy mezőt listázni, akkor kb az alábbi gyári megoldásokból választhatsz: Linkkel, vagy anélkül. Ezeknek valami ilyesmi lesz a kimenete:

Label: term1
       term2
       term3

Én ilyet akartam:

Label: term1, term2, term3

Erre viszont nincsen alapértelmezetten formatter (vagy legalábbis én nem találtam..)
Megoldás: Letölteni a custom_formatters modult, az admin/settings/formatters/add oldalon egy 'advanced' típusú új formattert létrehozni, elkeresztelni embernek és gépnek egyaránt, majd bepöttyinteni a következő kódot a phpkód mezőbe:

$output = '';
$count = 0;
foreach (element_children($element) as $key) {
  $output .= theme_content_taxonomy_formatter_link($element[$key]);
  $count++;
  if (isset($element[$count])) {
    $output .= ', ';
  }
}
return $output;

És update via boobaa && hosszukalman + megjegyzés. Tényleg eszembe juthatott volna az implode.. Az alapot a theme_views_content_multiple_field() szolgáltatta, abból is egy általam felülírt verzió. Úgyhogy kvázi ennek a lebutítása történt, az eredti függvényben nem mehet imploda a sok extra class miatt, ám itt tényleg ez az ötös.
Kálmántól meg azt tudtam meg, hogy a theme_content_taxonomy_formatter_link() és a theme('content_taxonomy_formatter_link') közötti az, hogy csak a másodikat lehet felülírni sminkben - és ez is teljesen jogos, ezt sem vettem észre, amíg jobban bele nem néztem a theme() függvénybe.

Szóval így a tisztább, szárazabb, boldogabb érzés:

$output = array();
foreach (element_children($element) as $key) {
  $output[] = theme('content_taxonomy_formatter_link', $element[$key]);
}
return implode(', ', $output);

Hozzászólások

Köszi fijjúk! :D

Köszi fijjúk! :D

Ez egyszerűbbnek

Ez egyszerűbbnek tűnik:

$output = array();
foreach (element_children($element) as $key) {
  $output[] = theme_content_taxonomy_formatter_link($element[$key]);
}
return implode(', ', $output);

És akkor már le lehetne

És akkor már le lehetne cserélni ezt:
<?php
$output[] = theme_content_taxonomy_formatter_link($element[$key]);
?>
erre:
<?php
$output[] = theme('content_taxonomy_formatter_link', $element[$key]);
?>

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.
By submitting this form, you accept the Mollom privacy policy.