Synliga kategorier

Events happening in the community are now at Drupal community events on www.drupal.org.
adamevertsson's picture

Hej hopp!

Hur skulle ni lösa följande scenario: Jag har sex stycken kategorier som jag kan tagga mina artiklar med. Jag vill att alla kategorier ska synas på varje sida, i anslutning till artikeln och de kategorier som har förknippats med artikeln ska ha en speciell class så jag kan stajla den med CSS.

Kategorierna ska i sin tur vara klickbara för att lista fler artiklar av samma artiklar.

Jag tycker att Views passar in på vissa av pusselbitarna, men får inte riktigt hela bilden att passa in där. Men jag kan ha fel...

/Adam

Comments

Vad jag vet finns ingen sådan

pontus_nilsson's picture

Vad jag vet finns ingen sådan funktion tillgänglig i standard views

Ta en titt på template_preprocess_views_view_unformatted(). Där sätts klasserna för varje rad i vyn resultat. Där kan du själv lägga på klasser för varje rad ($vars['classes'][$id][] = 'term-active-in-node';). Hämta alla termer med taxonomy_node_get_terms(). Sedan i implementationen av [[http://drupalcontrib.org/api/drupal/contributions--views--theme--theme.inc/function/template_preprocess_views_view_unformatted/7|template_preprocess_views_view_unformatted()]] och i foreachen får du ha en check för att se om radens aktuella resultat matchar ett term id i din array med nodens termer.

Hoppas det hjälper till.

/**
* Implementation of template_preprocess_views_view_unformatted().
*/
function MYTHEME_preprocess_views_view_unformatted__MYVIEW(&$vars) {
  $view = $vars['view'];
  $rows = $vars['rows'];

  $vars['classes_array'] = array();
  $vars['classes'] = array();
  // Set up striping values.
  $count = 0;
  $max = count($rows);
  if ($view->name == 'MYVIEW') { $small_promo = 0; }
  foreach ($rows as $id => $row) {
    $count++;
    $vars['classes'][$id][] = 'views-row';
    $vars['classes'][$id][] = 'views-row-' . $count;
    $vars['classes'][$id][] = 'views-row-' . ($count % 2 ? 'odd' : 'even');
    if ($count == 1) {
      $vars['classes'][$id][] = 'views-row-first';
    }
    if ($count == $max) {
      $vars['classes'][$id][] = 'views-row-last';
    }

    if ($row_class = $view->style_plugin->get_row_class($id)) {
      $vars['classes'][$id][] = $row_class;
    }

    // Flatten the classes to a string for each row for the template file.
    $vars['classes_array'][$id] = implode(' ', $vars['classes'][$id]);
  }
}

//Pontus Nilsson, Digitalist

Hygglo!

adamevertsson's picture

Det verkar vara en lösning, ska kolla på det under semstern. Stort tack Pontus!

/Adam




✄-----------------------------------------------------
Adam Evertsson - Came for the code, stayed for the community!

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week