Posted by adamevertsson on June 28, 2011 at 9:35pm
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
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!
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!