Views Theming und verfügbare Variablen
am 12.05.2011 - 17:19 Uhr in
Stolpere bei Views immer wieder über ähnliche Probleme wenn es um detailiertere Anpassung der Ausgabe geht. Problem ist eigentlich immer, dass ich in bestimmten Templates keinen Zugriff mehr auf die Daten früherer Ebenen habe.
Diesbezüglich akut: Ich benutze das Views-Accordion Modul, habe dort entsprechend pro accordion-element Anpassungen vorgenommen in der Datei views-view-accordion--Meinview.tpl.php
Nun würde ich aber gern noch gewisse Dinge anders anzeigen lassen in Abhängigkeit eines Wertes von einem der Felder die ich im View lade.
Meine verfügbaren Variablen in diesem Template File sind aber nur noch die $rows, welche schon den komplett formatierten Inhalt enthalten. Was ich bräuchte wäre aber das Array $fields wie ich es in views-view-fields.tpl.php habe, wo ich die Werte einzelner Felder auslesen kann.
Beim Accordion gruppiere ich mehrere Datensätze und will ein bestimmtes Feld der Datensätze überprüfen. Ist dieses Feld mit "x" gesetzt soll IM Accordion unter allen gruppierten Datensätzen etwas angezeigt werden, also nicht unter dem betroffenen Datensatz und auch nicht unter jedem Datensatz innerhalb des Accordions.
Hoffe ich konnte das verständlich ausdrücken. Kern der Frage ist jedenfalls wie ich mir die $fields-Informationen auf der Ebene von views-view-accordion--Meinview.tpl.php nutzbar machen kann bzw logischerweise $rows um weitere Daten erweitere.
Wie bewerkstellige ich das bzw generell die "Übergabe" von Werten in höhere Template-Ebenen? Geht das nur mit entsprechenden Hooks?
- Anmelden oder Registrieren um Kommentare zu schreiben
hast du mehrere verschiedene
am 13.05.2011 - 10:05 Uhr
hast du mehrere verschiedene block- bzw page-views innerhalb einer view und möchtest diese unabhängig voneinander themen? ansonsten kannst du deinen wert im theme in die globals bzw sessions variable setzen und damot innerhalb verschiedener template dateien etwas machen. diese lösung ist allerdings hacky. vielleicht schaust du dir auch mal hook_views_prebuild() bzw die views api an.
- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn
Danke für den Tipp,
am 18.05.2011 - 14:42 Uhr
Danke für den Tipp, weitergekommen bin ich zumindest mit dem hook_views_prebuild noch nicht so recht. Coding in Views ist mir da stellenweise gerade ein ziemliches Rätsel.
Bin jetzt auf folgende preprocess-Lösung in der template.php gekommen nach einigen Stunden Rumprobieren, Grübeln und Gebastel:
function phptemplate_preprocess_views_view_accordion(&$vars) {
$view = $vars['view'];
$result = $view ->result;
//dprint_r($result);
global $ccount;
if(!$ccount) {
$ccount='0';
}
$vars['info'][$ccount]['nid']=$result[$ccount]->nid;
$vars['info'][$ccount]['status']=$result[$ccount]->node_data_field_status_field_status_value;
$ccount++;
}
Ich befülle mir also mit der Funktion ein zusätzliches Array in dem ich die Elemente pro Aufruf der Funktion durchnummeriere ($ccount), später gehe ich im views-view-accordion.tpl.php mit einem dort verwendeten globalen Zähler das $info-array wieder durch und hole mir dort den passenden Wert für die Node-ID und das Statusfeld für jedes $row Element...
So wirklich gefallen mag mir diese Lösung nicht, ist doch ein ziemliches Gebastel von hinten durch die Brust ins Auge. Vielleicht kennt doch noch jemand eine bessere Lösung.
Kann mir nicht vorstellen der erste zu sein, der z.B. die nid auf dieser Template-Ebene nutzen will, oder?
dein problem ist
am 18.05.2011 - 20:23 Uhr
dein problem ist modulspezifisch. schreibe dein problem in die views-issues liste unter d.o.
- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn