Ich versuche wieder, mich mit Kontextfiltern zu beschäftigen! Ich habe es vor einiger Zeit benutzt, aber ich war gerade wieder total ratlos. Folgendes versuche ich zu tun:
- Generieren Sie eine geklonte Inhaltsknotenseite mit Taxonomiebegriffen, die in diese geklonte Seite eingefügt werden.
Beispiel: BEISPIEL.com/white-shoes/blue
Wenn ein Benutzer die Seite / white-shoes erreicht, wird die ursprüngliche Knotenseite angezeigt, die auf die weiße Farbe ausgerichtet ist. Wenn der Benutzer nun auf / white-shoes / blue landet, wird dieselbe Knotenseite angezeigt, aber diesmal wird der gesamte Körperinhalt neu geschrieben, wobei die weiße Farbe durch die blaue Farbe ersetzt wird.
In Ansichten müsste ich eine Seitenanzeige mit dem Pfad% /% erstellen
Jetzt würde ich einen Kontextfilter erstellen, um die NID abzurufen. Ich füge Content: nid als Kontextfilter hinzu. Ich wähle PROVIDE A DEFAULT VALUE und gebe diesen PHP-Code ein:
$ x = drupal_lookup_path ('source', arg (0));
$ y = explodieren ('/', $ x);
return $ y 1 ;
Dieser PHP-Code konvertiert im Grunde den / white-shoes-Teil der URL in eine NID. Aber es funktioniert nicht. Ich habe den Code über drush ev über das Terminal getestet und erhalte tatsächlich ein zurückgegebenes Ergebnis, also weiß ich, dass es funktioniert.
Ich mache dasselbe für den Taxonomiebegriffsnamen und füge auch dafür einen Kontextfilter hinzu. Dieses Mal wähle ich PROVIDE A DEFAULT VALUE und wähle RAW VALUE FROM URL und wähle das 2. Argument.
Wie Sie sehen können, wenn ich einen VORSCHAUWERT für den Kontextfilter eingebe: AAA / BBB / CCC. Mein Standardwert wird ignoriert. Es soll das zweite Argument aufgreifen, aber es wird nur das erste. Schauen Sie sich die SQL-Anweisung WHERE an und Sie werden sehen, dass sie AAA erhält, wenn es BBB sein sollte.
Die Frage ist also, was mache ich falsch oder gibt es eine bessere Lösung für das, was ich erreichen möchte?
Antworten:
In diesem Video und dem zugehörigen Artikel wird erläutert, wie Sie sie verwenden. In diesem Beispiel werden Haustiere (Hunde, Katzen) verwendet. Dies ist möglicherweise ein einfaches Beispiel, um die Verwendung von Kontextfiltern für Ansichten zu verstehen.
VIDEO: https://www.youtube.com/watch?v=lJFMTDuaxy8 (YouTube-Video-Kurz-URL: lJFMTDuaxy8)
ARTIKEL: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views
quelle
Der Kontextfilter wird verwendet, um die Ausgabe der Ansicht nach URL-Argumenten zu filtern. Außerdem können Sie die Argumente manuell in diesem Format übergeben:
Dabei ist "$ name" der Name Ihrer Ansicht (z. B. 'example_view') und '$ display_id' der Anzeigetyp Ihrer Ansicht (z. B. 'default') und "$ arg1, $ arg2, $ arg3" Argumente genau wie in URL.
URL-Argumente haben die folgende Struktur:
http://example.com/arg_1/arg_2/arg_3 (arg_2 hat die Pfadkomponente 2 (in der Ansichtseinstellungsseite)).
Wenn der Filterwert nicht verfügbar ist:
es bedeutet, dass drupal keinen Filter finden kann.
Standardwert angeben:
Wenn der Filterwert nicht verfügbar ist, können Sie mit dieser Option einen Filter für die Ausgabe von Ansichten erstellen. Dieser Filter kann PHP-Code sein (wenn das PHP-Filtermodul aktiviert ist) oder seinen Wert aus den URL-Argumenten abrufen -> (Rohwert) von url). Im Textfeld Ausnahme können Sie den Wert betrügen und alle Ergebnisse anzeigen.
Wenn der Filterwert verfügbar ist
In diesem Fall führen Sie eine Validierung nach Ihren Wünschen und einigen anderen Optionen durch, wenn Drupal den Filterwert finden kann.
quelle
VALIDATION (type: PHP Code)
. Mit dieser Option können Sie das Ansichtsobjekt verwenden und alles tun, was Sie benötigen. In Ihrem Fall/blue
wird der von Ansichten generierte Pfad auch zum Abrufen der Knoten-ID dieses Alias verwendet.