Views flexible Filter
am 26.02.2012 - 23:44 Uhr in
Moin!
Ich verwzeifel gerade an den Filtereinstellungen für mein View. Habe gefühlt jeden deutsch- und englischsprachigen Text über die Filter in Views gelesen bzw. Tutorials angeschaut. Mir schwirrt der Kopf und trotzdem gab es keine Erleuchtung. Ich benutze Durpal 7.12 DE und Views 3.
Im Moment möchte ich, daß User im View Bestand nur die Nodes angezeigt bekommen in denen der Inhalt des Felds "Standort" mit dem Inhalt des Felds im Benutzerprofil "Standort" übereinstimmt. Also habe ich einen Kontextfilter für das Feld: Standort angelegt. Der funktioniert in der Vorschau auch wie gewünscht. Wenn ich dort z.B. Hamburg eingebe und die Vorschau aktualisiere wird mir eine Tabelle mit den Nodes des Standortes Hamburg angezeigt.
Aber wenn der User jetzt auf den Menüpunkt "Bestand" klickt wird ja nicht automatisch der Inhalt aus dem Feld "Standort" angehängt. Für die gewünschte Anzeige bräuchte ich ja in dem Beispiel einen link auf /bestand/Hamburg. Und das halt dynamisch für jeden Nutzer mit den entsprechendem Werten aus dem Feld "Standort" des Benutzerprofils.
Ich habe gerade keine Idee, wie ich das erreichen kann. Irgendwie fehlt mir da was für das Verständnis der zahlreichen Tutorials. Wäre sehr nett, wenn mir jemand eine Richtung aufzeigen könnte.
LG, Sven
- Anmelden oder Registrieren um Kommentare zu schreiben
Da mußt Du in Views mit
am 27.02.2012 - 10:22 Uhr
Da mußt Du in Views mit Contextual Filters (= Argumente) arbeiten. Außerdem brauchst Du noch eine Relationship (= Beziehung) zum User. Beides findest Du in der rechten Spalte bei Views unter Extras. Hier kommt dann ein kleiner "Trick" ins Spiel. Normalerweise gibt man die Argumente über die URL an den View. Hier mußt Du über den Punkt gehen "Was tun, wenn kein Argument gegeben ist" => Default Argument bereitstellen. Jetzt ergeben sich weitere Möglichkeiten, wie man den gewünschten Wert bekommt. Notfalls über wenige Zeilen PHP-Code, aber oft findet man bereits die passende Auswahl.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Relationship
am 27.02.2012 - 14:20 Uhr
Erst einmal danke für Deine Hinweise. Der Teil mit dem "Trick" hat das ganze schon einmal etwas aufhellen können. Leider fehlt aber immer noch etwas für mein Begreifen.
Genau bei der Relationship zum User scheiter ich zur Zeit. Da fehlt es in den Tutorials und vor allem bei mir an den Grundlagen. In den Tutorials sind die benötigten Werte für das Beispiel unter den Relationships wie von Geisterhand immer vorhanden. Nur wie sie da hinkommen wird irgendwie nicht gezeigt oder ich kapier es einfach nicht. Ich habe z.B. nur folgendens zur Auswahl:
Ich bräuchte jedoch so etwas in der Form "CurrentUser". Muss ich da mit node- bzw. userreference arbeiten oder kann ich das z.B. mit dem Modul Relation erreichen? Ich würde es ja austesten, doch beim speichern versagt das Modul (Beta-3) bei mir den Dienst und zeigt nur einen blankscreen ohne die Relation abzuspeichern. Lohnt es sich hier auf Fehlersuche zu gehen und es mit dem Modul zu lösen oder ist das eh der falsche Weg?
LG, Sven
Edit: Ich habe das Problem mit dem Modul Relation gelöst bekommen, indem ich die letzte dev der ctools installiert habe. Doch leider komme ich auch durch eine angelegt Relation zwischen dem Node Eingabe der die Felder beinhaltet, die mit dem View "Bestand" angezeigt werden sollen und dem Benutzer meinem Ziel bei dem View etwas näher.
PHP
am 28.02.2012 - 20:27 Uhr
Ich habe es jetzt einmal so probiert, dass ich einen Kontextfilter für Inhalt:Feld:field_standort erstellt habe und "Vorgabewerte" bereitstellen ausgewählt habe. Typ "PHP Code". Doch selbst die einfachste Abfrage bringt mir schon eine Fehlermeldung. Hier der Code, der ja genau einen Datensatz liefern sollte. Eigentlich brauche ich für meinen Fall eine kompliziertere Abfrage, da sich die benötigten Werte über verschiedene Tabellen verteilen. Doch ich wollte mal die Fehlerquellen minimieren.
$nids = array();
$my_result = db_query("SELECT nid from node WHERE vid=18");
while ($my_row = db_fetch_array($my_result))
{
$nids[] = $my_row['nid'];
}
return $nids;
Dies bringt mir folgende Fehlermeldung:
Ein AJAX-HTTP-Fehler ist aufgetreten
HTTP-Rückgabe-Code: 500
Im Folgenden finden Sie Debugging-Informationen.
Pfad: /admin/structure/views/view/bestand/preview/page/ajax
Statustext: Internal Server Error
Antworttext:
Statt der Lösung näherzukommen nehmen die Fragezeichen über meinem Kopf mehr und mehr zu. Ich wäre für jeden noch so kleinen Hinweis dankbar.
LG, Sven
Hi, hast du denn mittlerweile
am 09.03.2012 - 17:19 Uhr
Hi,
hast du denn mittlerweile ne Lösung gefunden?
Daniel