Dynamische Lösung -> bestimmter Header bei bestimmter URL
Eingetragen von inst (300)
am 16.03.2012 - 08:13 Uhr in
am 16.03.2012 - 08:13 Uhr in
Hallo,
ich habe 40 Bilder, die jeweils in Abhhängigkeit von der URL angezeigt werden sollen.
Also bei:
/2010/... -> Header für 2010
/2011/... -> Header für 2011
Ich möchte dies aber nicht in den Block-Einstellungen (/2010/*) lösen und dann 40 Blöcke für den Headerbereich bauen, sondern dynamisch.
Das heißt: falls Jahreszahl j1 in der URL vorkommt,dann verwende Headerbild h1.
Geht sowas über Views oder muss ich das mit PHP lösen?
Danke für einenTipp.
vg, frank
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn du die Bilder als
am 16.03.2012 - 09:12 Uhr
Wenn du die Bilder als Inhalte in dein Drupal einfügst und das Jahr mit als Feld im Inhaltstypen speicherst, kannst du das Ganze über Views lösen. Für die Auswahl des entsprechenden Bildes müsstest du dann nur das Argument ( Contextual Filter in Drupal 7 ) an den View übergeben und das Sort-Criteria auf Random und die Anzahl der anzuzeigenden Beiträge auf "1" setzen. Die Ausgabe würde dann in einem Block erfolgen.
SteffenR
Mehere Inhaltstypen
am 16.03.2012 - 09:23 Uhr
Hallo Steffen,
danke für den Tipp.
Es ist so, dass ich einen InhaltstypA habe mit einem Bild-Feld in dem das Header-Bild gespeichert ist.
Dieses Header-Bild soll aber nicht nur bei diesem InhaltstypA, sondern auch noch bei InhaltstypB und InhaltstypC aufscheinen.
Das, was die 3 Inhaltstypen verbindet ist die Jahreszahl (z.B. ...2010) in der URL. Funktioniert das auch mit Views?
vg, frank
inst schrieb Hallo
am 16.03.2012 - 10:59 Uhr
Hallo Steffen,
danke für den Tipp.
Es ist so, dass ich einen InhaltstypA habe mit einem Bild-Feld in dem das Header-Bild gespeichert ist.
Dieses Header-Bild soll aber nicht nur bei diesem InhaltstypA, sondern auch noch bei InhaltstypB und InhaltstypC aufscheinen.
Das, was die 3 Inhaltstypen verbindet ist die Jahreszahl (z.B. ...2010) in der URL. Funktioniert das auch mit Views?
vg, frank
Das funktioniert auch mit Views - dabei ist es unabhängig vom Inhaltstypen auf welcher Seite die Bilder angezeigt werden. Wichtig für die Anzeige ist - wie ich oben schon schrieben - nur das Argument in der URL, dass du als Contextual Filter an den View weiterreichst.
SteffenR
Filter
am 16.03.2012 - 12:20 Uhr
Ich hab das jetzt ausprobiert. Wenn ich im Preview in Views das Jahr eingebe, dann erscheint auch der korrekte Block.-
Falls ich aber jetzt eine Node mit der URL 2010/... müsste ja auch der dazugehörige Block aufscheinen. Das funktioniert aber leider nicht.
Gibt noch eine Einstellung, die im Contextual Filter zu berücksichtigen ist?
vg,frank
Blöcke können keine Argumente
am 16.03.2012 - 12:33 Uhr
Blöcke können keine Argumente (= Contextual Filters) aus der URL übernehmen, das gilt auch für Views-Blöcke. Deshalb muß man da über das Konstrukt "Was tun wenn kein Argument vorhanden ist?" => "Standard Argument zur Verfügung stellen" gehen. Hier gibt es einige Möglichkeiten bereits vordefiniert und wenn das nicht reicht, kann man sich mit PHP-Code und der arg()-Funktion behelfen.
Beste Grüße
Werner
Contextual Filter
am 16.03.2012 - 13:06 Uhr
Ja aber wie ist der Contextual Filter dann zu setzen? - Eingesetzt im Contextual Filter habe ich jetzt mein Datumfeld mit der Jahreszahl.
Und hier:
When the filter value is NOT available -> Display all results for the specified field
Das hab ich auch probiert:
When the filter value is NOT available -> Provide default value -> Contetn ID from URL
Und da hab ich erwartet, dass ich bei Aufruf von : http://www.seite.at/de/2011/text1 dann auch der Block mit dem 2011-Header im Kopfbereich aufscheint.
danke.-
vg,frank
Also die Content ID ist die
am 16.03.2012 - 14:35 Uhr
Also die Content ID ist die Node-ID und die trifft ja in Deinem Fall nicht zu. Also mußt Du, wie ich angesprochen habe, mit PHP-Code und der arg()-Funktion arbeiten. Die Teile nach der der Domain werden dabei enfach durchnummeriert arg(1), ..... Du mußt also das zu Deiner URL-Struktur passende Argument zurückgeben. Mal ein bißchen experimentieren hilft oft.
Beste Grüße
Werner
mit PHP-Code und der arg()-Funktion
am 16.03.2012 - 18:42 Uhr
Puh, schade - das werd ich nicht schaffen.- Ich hab nur sehr geringe PHP Kenntnisse.-
Dann werd ich das Unterfangen an dieser Stelle aufgeben und die 40 Blöcke mit den 40 Bildern mit der Hand basteln.
Und dann mit Context - da anscheinend recourcenschonender - für jede Jahreszahl, die in den Nodes vorkommt einen Block zuweisen.
Dank dir trotzdem fürs Mitdenken !
vg, frank
Headerimage
am 30.03.2012 - 08:03 Uhr
Hy, da ich vor kurzem eine ähnliche Lösung gesucht habe hier ein Modul Tipp:
Header Image MODUL
Port to Drupal7 --> http://drupal.org/node/1259580
Und ich muss sagen es ist sogut wie einsetzbar :-) - auch für produktive Seiten...
lg
Danke
am 19.04.2012 - 20:01 Uhr
Hey,
ein spätes Danke für diesen Tipp.-
vg,fr