[gelöst]Kontextabhänigige Views
am 07.09.2010 - 10:22 Uhr in
Hallo
Ich habe meine Seite mit Hilfe von Taxonomy in Bereiche eingeteilt. Es gibt z.B. den Bereich "Auto" und dort dann alles Zeugs was mit Autos zu tun hat und somit diesen Begriff "Auto" oder einen Unterbegriff davon. Nun möchte ich auf der rechten Seite einen Werbeblock machen. Ich habe also einen Notetyp Werbung gemacht und davon eine View (als Block) welche dann auf der Rechten Seite als Block angezeigt wird.
Jetzt kommt das Problem: Die Werbung ist mit Taxonomy auch in (gleichen) Bereiche eingeteilt und ich möchte nun, dass auf einer Seite im Bereich Auto auch nur "Autowerbung", also Werbung welches ebenfalls im Bereich Autos ist, angezeigt wird. Natürlich kann ich nun für jeden Bereich eine View erstellen, aber da es viele Bereiche sind, ist das sehr mühsam!
Deshalb die Frage: Ist es möglich, dass die Block-View irgendwie mitbekommt, welcher Node angezeigt wird und somit den Taxonomy-Begriff des Nodes als Filterwert verwenden kann, so dass alle Nicht Autowerbungen nicht angezeigt werden? Also ich wähle bei der Werbungs View einen Filter auf den Taxonomiebegriff der Werbenodes (die erscheinen ja dann als Block auf der rechten Seite) und als Vergleichsargument setze ich nicht einen statischen Wert (z.B. Auto) sondern eine Variable mit dem "Taxonomiebegriff des aktuellen Node". Versteht ihr was ich meine?
Besten Dank
Benks
PS: Ich verwende Views der Version 2
- Anmelden oder Registrieren um Kommentare zu schreiben
Hierfür gibt es Views
am 07.09.2010 - 11:29 Uhr
Hierfür gibt es Views Argumente - ein Argument wird im einfachsten Fall aus der URL "gezogen", um die Inhalte des Views zu filtern. In deinem Falle würdest du als Argument die Taxonomie des Beitrags verwenden.
Mehr zu Views und Argumenten gibt es hier:
http://www.thoor.de/drupal/video-tutorial/argumente-nutzen-im-views-modul
http://www.drupalcenter.de/handbuch/6675
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Danke für diesen Hinweis. Ich
am 08.09.2010 - 06:54 Uhr
Danke für diesen Hinweis. Ich habe mir die Infos angeschaut. Aber was mir noch nicht klar ist: Wie mache ich das mit Blocks und Taxonomie. Mir ist klar wie es bei einer Page geht, aber beim Block funktioniert es irgendwie nicht so einfach. Gibt es eine Funktion um den Taxonomie Term (und alle Unterterms) auszulesen und unten bei den Argumenten zu übergeben? Oder wie bringe ich sonst die Argumente in den Block-View rein?
Verschachtelungstiefe funktioniert nicht
am 13.09.2010 - 08:20 Uhr
Also, ich habe rausgefunden was das Problem ist:
Ich habe es nach dieser Anleitung gemacht und es funktioniert eigentlich, das einzige Problem ist, dass es nicht für Unterterms funktioniert. Ich habe die Terms in Ebenen gegliedert, also "Räder" und "Autoradio" ist eine Unterkategorie von "Auto". Die Werbung hat nun den Term "Auto" und deshalb auch nur bei den Node mit dem Term Auto angezeigt, nicht aber bei den Terms "Räder" und "Autoradio". (Ich hatte es einfach so erwartet, deshalb das Post oben). Nun, wie kann ich erreichen, dass wenn eine Werbung "Auto" hat, sie dann auch bei allen Unterterms ("Räder" und "Autoradio") angezeigt wird? Hier ist mein Php-Code, welchen ich unter "Stanarttyp für Argumente" eingefügt habe:
<?php
$node = node_load(arg(1));
if($node){
foreach($node->taxonomy as $term){
$terms[] = $term->tid;
}
return implode('+', $terms);
} else {
return; }
?>
Ich habe das Feld "Taxonomie: Begriffs-ID (mit Verschachtelungstiefe) " ausgewählt.
Danke für eure Hilfe
Und hast du auch irgendwo
am 13.09.2010 - 09:47 Uhr
Und hast du auch irgendwo einen Wert eingetragen für die Verschachtelungstiefe?
Du möchtest ja für die View die übergeordneten Terms haben. In der node die du lädst stehen nur die Terms Räder und Autoradio drin aber nicht Auto.
Wenn ich mich recht erinnere muss man in der Tiefe dann einen negativen Wert angeben also -1 für die nächsthöhere Ebene.
Oder im PHP dir auch noch den parent ausgeben lassen.
-----------
Luca Curella
Kooperative Netze - Berlin
Ja hab ich, aber einen
am 14.09.2010 - 09:57 Uhr
Ja hab ich, aber einen falschen. Das mit dem negativen oder positiven habe ich nicht kapiert. Jetzt funktionierts. Danke vielmal.