it-swarm.com.de

Rendern einer Views-Zeilen-ID mit NID (Node ID)

Ich kann NID (Node ID) einfach als Feld in meine Ansicht einfügen und es dann als Klasse für die Ansichtszeile mithilfe von Ersatzmustern für die Zeilenklasse einer unformatierten typischen Ansicht rendern. (Siehe Bildschirmaufnahme).

enter image description here

Ich möchte die NID jedoch als ID für jede Zeile rendern, um sie für ein spezielles Thema zu verwenden, das ich gerade mache. Wenn ich devel themer verwende, sehe ich, dass meine Vorlage views-view-unformatted.tpl.php Ist, sodass ich diese Vorlage natürlich mit einem für meine Ansicht spezifischen benutzerdefinierten Namen in den Vorlagenordner meines Themas kopieren und dann thematisieren kann.

Die relevante Codezeile in der Vorlage, die die Zeilenklasse rendert, lautet:

  <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>

Wenn ich es ändere zu:

<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?> 
    id="<?php print $fields['nid']->content ?>">

... Dies funktioniert jedoch nicht, da meiner Meinung nach keine Felder auf dieser Ebene in der Ansichtszeile verfügbar sind.

Im Wesentlichen lautet meine gerenderte Ausgabe im Moment:

<div class="views-row views-row-1 views-row-odd views-row-first mynid-63">
<div class="views-row views-row-2 views-row-even mynid-64">

... wenn ich es gerne hätte

<div class="views-row views-row-1 views-row-odd views-row-first" id="mynid-63">
<div class="views-row views-row-3 views-row-even" id="mynid-64">

Meine Frage, gibt es eine Möglichkeit, die zugehörige NID dort zu rendern, wo ich sie als ID haben möchte, außer der Methode, die ich verwenden möchte?

5
Danny Englander

In den meisten Views-Vorlagen ist das gesamte $view - Objekt verfügbar. Angenommen, Sie haben ein nid -Feld in der Zeile, sollten Sie mit folgendem Zugriff darauf zugreifen können:

$view->result[$id]->nid

also gib

id="my-nid-is-<?php print $view->result[$id]->nid; ?>">

ein Versuch in Ihrer Vorlage.

Wenn dies nicht genau funktioniert, gibt Ihnen ein print_r($view->result); oben in der Vorlage einen Einblick in das, womit Sie arbeiten müssen.

9
Jimajamma

Die NID wird über die Formateinstellungen als letzte in der Klassenzeichenfolge hinzugefügt. '$ classes_array [$ id]

Holen Sie sich die letzte Klasse in der Klassenzeichenfolge (die über Ansichten hinzugefügte Nid). Fügen Sie dann einfach die $ last als richtige ID zur Zeile nach den Klassen hinzu

ändern Sie dies in:

<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>

zu:

<div<?php if ($classes_array[$id]) { 
    $class_string = explode(' ', $classes_array[$id]);
    $last = end($class_string); 
    print ' class="' . $classes_array[$id] .'"' . ' id="' . $last . '"';  
 } ?>>
1
jorisx