Próbuję ponownie owinąć głowę filtrami kontekstowymi! Użyłem go jakiś czas temu, ale znów byłem kompletnie zakłopotany. Oto, co próbuję zrobić:
- Wygeneruj stronę sklonowanego węzła treści z terminami taksonomii wstawionymi do tej sklonowanej strony.
np .: EXAMPLE.com/white-shoes/blue
Gdy użytkownik przejdzie do strony / white-shoes, wyświetli oryginalną stronę węzła zorientowaną na biały kolor. Teraz, jeśli użytkownik wyląduje na / white-shoes / blue, wyświetli tę samą stronę węzła, ale tym razem cała treść zostanie przepisana, zastępując biały kolor kolorem niebieskim.
W widokach musiałbym utworzyć wyświetlanie strony ze ścieżką:% /%
Teraz utworzę filtr kontekstowy, aby pobrać identyfikator NID. Dodaję Content: nid jako filtr kontekstowy. Wybieram PODAJ DOMYŚLNĄ WARTOŚĆ i umieszczam ten kod PHP:
$ x = drupal_lookup_path ('source', arg (0));
$ y = eksplodować ('/', $ x);
powrotu $ y 1 ;
Ten kod PHP zasadniczo konwertuje część adresu URL / white-shoes na NID. Ale to nie działa. Przetestowałem kod za pośrednictwem drush ev przez terminal i rzeczywiście otrzymałem zwrócony wynik, więc wiem, że działa.
Robię to samo dla nazwy terminu taksonomia i dodam do tego filtr kontekstowy. Tym razem wybieram PODAJ DOMYŚLNĄ WARTOŚĆ, wybieram SUROWĄ WARTOŚĆ Z URL i wybieram drugi argument.
Jak widać, gdy wprowadzę WARTOŚĆ PODGLĄDU dla filtru kontekstowego: AAA / BBB / CCC. Moja wartość domyślna jest ignorowana. To ma być drugi argument, ale tylko pierwszy. Spójrz na instrukcję SQL GDZIE, a zobaczysz, że dostaje AAA, kiedy powinna być BBB.
Pytanie brzmi: co robię źle, czy jest lepsze rozwiązanie tego, co chcę osiągnąć?
Odpowiedzi:
Oto wideo i powiązany z nim artykuł, który wyjaśni ci, jak z nich korzystać, w tym przykładzie wykorzystano zwierzęta domowe (psy, koty), co może być na tyle prostym przykładem, aby pomóc zrozumieć, jak korzystać z filtrów kontekstowych wyświetleń.
WIDEO: https://www.youtube.com/watch?v=lJFMTDuaxy8 (krótki film na YouTube: lJFMTDuaxy8)
ARTYKUŁ: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views
źródło
Filtr kontekstowy służy do filtrowania, generowanie widoku przez argumenty URL, również możesz przekazać argumenty ręcznie w tym formacie:
gdzie „$ nazwa” to nazwa twojego widoku (np. „przykład_widoku”), a „$ display_id” to typ wyświetlania twojego widoku (np. „default”), a „$ arg1, $ arg2, $ arg3” to argumenty tak jak w adresie URL.
Argumenty adresów URL mają następującą strukturę:
http://example.com/arg_1/arg_2/arg_3 (arg_2 ma komponent ścieżki 2 (w widoku ustawień strony)).
Gdy wartość filtru nie jest dostępna:
oznacza to, że Drupal nie może znaleźć żadnego filtra.
Podaj wartość domyślną:
gdy wartość filtru nie jest dostępna, możesz użyć tej opcji, aby utworzyć filtr dla danych wyjściowych widoków, tym filtrem może być kod PHP (jeśli moduł filtru PHP jest włączony) lub można uzyskać jego wartość z argumentów URL -> (wartość surowa z adresu URL). Pole tekstowe Wyjątek pozwala oszukiwać wartość i wyświetlać wszystkie wyniki.
Gdy dostępna jest wartość filtru
w tym przypadku przeprowadzasz walidację zgodnie ze swoimi potrzebami i innymi opcjami, gdy drupal może znaleźć wartość filtru.
źródło
VALIDATION (type: PHP Code)
. Dzięki tej opcji możesz użyć widoku obiektu i zrobić wszystko, czego potrzebujesz. W twoim przypadku/blue
ścieżka wygenerowana przez widoki byłaby również wykorzystana do pobrania identyfikatora węzła tego aliasu.