1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

2 verschiedene header für wp (Seiten)

Dieses Thema im Forum "Design" wurde erstellt von eltorte, 15. Juni 2010.

  1. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0
    Hi Forum,

    ich benutze das Kubrick- Theme und würde gerne 2 verschiedene Header benutzen. Je nachdem, welche der Seiten man anklickt sollte jeweils der eine oder der andere angezeigt werden.

    Ich habe 8 Seiten + die main- page. 3 Seiten + die main- page sollen Header A bekommen, die anderen 5 Seiten Header B.


    Ich hoffe, dass ich mich verständlich ausgedrückt habe ... :grin:

    Vorab vielen Dank

    eltorte
     
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Das kannst Du mit einer kleinen Modifikation am Theme recht leicht umsetzen. Kennst Du Dich denn ein wenig mit PHP aus?

    Grundsätzlich würde ich sagen gibst Du den Seiten, die Header A kriegen sollen, ein benutzerdefiniertes Feld, meinetwegen "headerA=true" oder so. In der header.php prüfst Du dann auf is_page und wenn ja, dann prüfst Du, ob das Feld gesetzt ist. Falls ja, kriegt die Seite eine andere Header-Klasse, welche dann per CSS ein anderes Bild oder sonstiges Aussehen kriegt. Für die Startseite kann das fest im Theme umgesetzt werden: In der header.php prüfen auf is_home (hm, es gab verschiedene, mindestens is_home und is_start_page, Du müsstest mal im Codex nachschlagen welches davon für Dich die richtige Abfrage ist).
     
  3. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0

    danke für die Antwort. :)

    Es war leider etwas zu schnell und zu komprimiertes Wissen.

    Ich habe jetzt allen Seiten, die A als Header benutzen sollen ein Benutzerdefiniertes Feld zugewiesen. Ab da wird es etwas undurchsichtig für mich.

    Könntest du da etwas ausfürhlicher werden.
     
  4. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Gerne. Hatte gestern nicht so die Zeit, das ausführlicher aufzuschreiben.

    Ok, also folgendes kommt oben in die header.php des Themes, in einen PHP-Block. Hm... Was hast Du denn als Feldwert gesetzt? Wenn es ein Feld ist, das nur per true/false anzeigt, dass die Seite den anderen Header kriegen soll, dann müsste das so aussehen (korrekten Feldnamen ersetzen und CSS-Klassenname!):

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn Du da direkt den Klassennamen reingeschrieben hast (um z.B. auch verschiedene Header zu ermöglichen), dann so (ebenfalls Feldname ersetzen!):

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Was Du mit dem Klassennamen jetzt anstellst, kommt drauf an, wie genau der aktuelle Header aufgebaut ist. Im Default-Theme könnte man das z.B. so einbauen:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und dann muss das in der style.css natürlich noch eingetragen werden. Auch das kommt drauf an, wie es aktuell umgesetzt ist, sollte sich aber finden lassen. Wenn z.B. aktuell eine Angabe für "#header ..." im Stylesheet steht, schreibst Du einfach darunter "#header.CSS-KLASSENNAME ..." und kannst darin dann ändern, ergänzen und überschreiben was Du magst (ohne die Anführungsstriche natürlich und mit dem oben vergebenen Klassennamen).
     
  5. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    ganz anders, nur als idee, ohne extra felder, aber braucht die IDs der seiten:

    in header.php aendern (default theme):
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    '2','119','403','174' sind durch die IDs der seiten mit anderem headerbild zu ersetzen (die gruppe ohne die index.php).

    style (nach dem normalen style von #header einfuegen):
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    vorteil:
    keine benutzer definierten felder;
    nachteil:
    bei neuen seiten mit anderem header muss eine templatedatei geaendert werden.

    ------------------------------
    oder noch anders:
    body_class() im <body> tag verwenden; und die verschiedenen classes (zB .page-slug) dann fuer den style von header verwenden:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    was nach 'page-' kommt ist die 'page slug' des seitentitels; benoetigt eine aenderung in der style.css fuer jede neue seite mit dem anderen headerbild.
     
  6. gericoach

    gericoach Well-Known Member

    Registriert seit:
    12. August 2008
    Beiträge:
    7.193
    Zustimmungen:
    0
    finde das extrem aufwändig, was ihr da macht. Habe die page.php kopiert, ihr einen neuen namen gegeben, oben zusätzlich
    z.B. für die leistung.php eingegeben und wähle dann nur noch entsprechend rechts das template aus. Also statt "Standardtemplate". und hier vergebe ich das bild, das ich möchte.
     
  7. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    @gericoach:
    im prinzip ist das ein machbarer weg, einige seiten gezielt und verschieden anzusprechen.

    das bild hier ist aber ein hintergrundbild im div #header, das im header.php geoeffnet wird.
    (ist ja fuer das default theme)

    wie waere denn zB der code in deiner methode, das bild da zu vergeben?
     
  8. gericoach

    gericoach Well-Known Member

    Registriert seit:
    12. August 2008
    Beiträge:
    7.193
    Zustimmungen:
    0
    Hmm, da habe ich wohl das Kubrik Theme nicht richtig analysiert...
    Bei mir ist das simpel gelöst, Beispiel für die Seite "wohnungen":
     
  9. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    In dem Fall führen viele Wege nach Rom. Sorry wenn ich da schon gleich wieder zu kompliziert gedacht habe. ;)

    Seitentemplate geht natürlich genauso und dann da oben eine Variable setzen und die in der header.php auswerten statt des benutzerdefinierten Feldes. Oder wie alchymyth vorschlägt einfach immer Klassen passend zum Slug vergeben und die in den Stylesheets ansprechen. Kommt immer etwas auf den Einsatzzweck an, aber letzteres ist vielleicht mit die schönste Lösung. Mit IDs würde ich eher nicht rumhantieren. Macht sich schlecht wenn man parallel ein Testsystem hat, dann muss man da die IDs immer noch synchron halten.
     
  10. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0

    erst mal vielen Dank an euch alle, für die Antworten.

    wenn ich das richtig verstanden habe, scheint die dritte Lösung die einfachste zu sein.

    Also kopiere ich die page.php x-mal (soviel seiten wie ich habe), benenne sie um und sage ihnen, welches header- bild sie nehmen sollen.

    das werd ich gleich mal versuchen ...


    vielen Dank :grin:
     
    #10 eltorte, 17. Juni 2010
    Zuletzt bearbeitet: 17. Juni 2010
  11. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0

    ich hab das jetzt mal getestet, sobald ich aber bei den bestimmten Seiten die neue page.php einstelle, gibt er die Seite gar nicht mehr aus. Das Browserfenster bleibt weis.

    Ich habe jetzt eine zweite header.php angelegt und die page2.php soll dann header2.php laden.


    wie sag ich das auf php?

    so steht es ja in der page.php,

    aber wo wird definiert, welche php datei er bei diesem Befehl aufruft, bzw wie ändere ich den Befehl, das er die zweite header.php aufruft?
     
    #11 eltorte, 7. Juli 2010
    Zuletzt bearbeitet: 7. Juli 2010
  12. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
  13. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0
    super, vielen, vielen Dank :razz:

    hab es jetzt kapiert. Nur stellt sich jetzt noch eine weitere Frage:

    im Kubrick- Theme wird das Bild des headers in der datei header-img.php definiert.

    also habe ich jetzt eine header-img2.php erstellt und dort den 2ten header (kubrickheader2.php) definiert.

    wo und wie wird die header-img.php mit eingebaut ..????

    vorab schon mal vielen Dank
     
  14. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    soweit ich es verstehe, wird header-img.php nur verwendet, wenn man im backend die custom-header einstellung vornimmt (aendert die farben und gradienten).

    ein alternatives headerbild muss im css style festgelegt werden (das standard-headerbild ist in der style.css als hintergrund in #header definiert (zeile 38 )
    um in einem anderen template (header2.php) ein anderes headerbild festzulegen, muss diese datei im <head> bereich einen style embedden: zB:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und das muss dann in jedem header3.php, header4.php, usw fuer jede spezielle seite gemacht werden.

    ---------------
    meiner meinung nach viel zu kompliziert, um nur das headerbild fuer eine oder mehrere spezielle seiten anders zu haben; ich komme wieder auf die 'body_class()'-methode zurueck;
    eine vereinfachte variante, die nur den page-slug als eine body class zufuegt;
    anstelle des body tags <body> das folgende im header.php einsetzen:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    das gibt dann seitenabhaengig einen body tag wie zB (fuer eine seite mit dem namen: 'Diese Seite 2'):
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    fuer das spezifischen headerbild in der style.css dann das hier einsetzen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  15. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    um auf den startartikel zurueckzukommen:
    das wuerde mit wenig code im header.php im <head> bereich funktionieren:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    einfach die 5 page-IDs, page-slugs oder page_titels fuer header B eingeben.
    beliebig erweiterbar.
     
  16. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0

    ich hab mich jetzt mal deiner ursprünglichen Methode zugewandt, die page-IDs eingetragen und bekomme folgende Fehlermeldung:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  17. bego

    bego Well-Known Member

    Registriert seit:
    30. November 2005
    Beiträge:
    579
    Zustimmungen:
    4
    Ich würde mich nicht unbedingt als PHP-Experten bezeichnen, aber müsste am Ende der dritten Zeile (im Foren-Posting) nicht die geschweifte Klammer durch ein Semikolon ersetzt werden?

    Bego
     
  18. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    mein fehler:
    da hab ich doch mal wieder eine schliessende klammer in der zeile mit dem 'if' vergessen :roll::

    soll so aussehen:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  19. eltorte

    eltorte Well-Known Member

    Registriert seit:
    19. Dezember 2008
    Beiträge:
    52
    Zustimmungen:
    0


    super geil, hat sofort geklappt.

    da hab ich ja wieder mal 10 Stunden meines Lebens unnötig verschleudert, nur weil ich nicht gleich auf dich gehört hab. ;)

    danke nochmal
     
  20. alchymyth

    alchymyth Well-Known Member

    Registriert seit:
    7. Juni 2009
    Beiträge:
    3.959
    Zustimmungen:
    1
    es sind diese stunden, in denen wir das meiste lernen ... :lol:
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden