erste H1 Überschrift im Header auf Unterseiten ändern?

  • Guten Tag,

    ich habe leider keine PHP Kenntnisse darum wollt ich mal ein paar erfahrene Wordpress Nutzer fragen.

    Meine Theme: http://wordpress.org/extend/themes/water

    Folgendes, ich will auf Unterseiten von meinem Blog die erste H1 Überschrift und die Kurzbeschreibung darunter ändern.

    das meine ich:

    <h1 id="title"><a href="http://www.meinedomain.de">Blog Titel</a></h1>
    <div id="headerimage"><div id="tagline">Hier die Kurzbeschreibung</div>


    Die Theme gibt allen Unterseiten automatisch die Überschrift des gesamten Blogs, also den Blognamen und Kurzbeschreibung. Dies ist sicherlich auch Sinnvoll, aber für einige Unterseiten brauch ich es anders.

    Nun meine Fragen:

    Ist es möglich über ein Seiten Template eine Unterseite mit anderem Blog Titel und einer anderen Kurzbeschreibung einzurichten? Ich hab ein Seitentemplate, mit dem ich auf den Unterseiten die Widgets komplett ausblenden kann, dann ist sowas vielleicht auch möglich? Falls ja, ist es schwer?

    Danke für die Hilfe

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Das kannst Du auf verschiedene Weise umsetzen, sollte auf jeden Fall nicht zu schwierig sein. Der Header wird ja sicher in der header.php des Themes definiert. Du könntest nun z.B. oben im Seitentemplate eine Variable definieren, z.B.:

    PHP
    $my_other_title = 'Anderer Seitentitel';
    $my_other_description = 'Anderer Untertitel';
    $my_other_link = 'http://anderer-link.de';

    Dort kommen die altrnativen Daten rein. Alle anderen Themedateien haben diese Variablen nicht definiert und kriegen deswegen in der header.php die Default-Werte. Dann baust Du oben in der header.php das so ein:

    PHP
    $my_title = (isset($my_other_title) && !empty($my_other_title)) ? $my_other_title : get_bloginfo('name');
    $my_description = (isset($my_other_description) && !empty($my_other_description)) ?  $my_other_description : get_bloginfo('description');
    $my_link = (isset($my_other_link) &&  !empty($my_other_link)) ?  $my_other_link : get_bloginfo('url');

    An den entsprechenden Stellen gibst Du dann einfach diese Variablen aus anstatt direkt die per bloginfo geholten Einstellungswerte. Zum Beispiel so:

    PHP
    <h1><a href="<?php echo $my_link; ?>/"><?php echo $my_title; ?></a></h1>
  • Danke für die schnelle Antwort :)

    ich will ja bei mehreren Seiten die Überschrift ändern, kann ich dann die Codestelle "other" erstetzen durch einen anderen Namen oder hat der eine Bedeutung in PHP (ich keine Ahnung PHP), falls das geht müsste ich dann pro Unterseite in der ich das ändern will jeweils ein Seitentemplate erstellen wo die Alternativen Titel, Untertitel und Link benannt werden oder eine Seitentemplate mit allen Alternativen drin.

    PHP
    $my_other_title = 'Anderer Seitentitel';
    $my_other_description = 'Anderer Untertitel';
    $my_other_link = 'http://anderer-link.de';

    In die Header PHP müsste ich dann den Code mehrmals mit den verschiedenen Benennungen für die jeweilige Seite einfügen?

    PHP
    $my_title = (isset($my_other_title) && !empty($my_other_title)) ? $my_other_title : get_bloginfo('name');
    $my_description = (isset($my_other_description) && !empty($my_other_description)) ?  $my_other_description : get_bloginfo('description');
    $my_link = (isset($my_other_link) &&  !empty($my_other_link)) ?  $my_other_link : get_bloginfo('url');

    Zum augeben müsste ich dann zusätzlich im Header pro alternativen Titel und Untertitel usw. weiteren Code einfügen, seh ich das richtg? Die Header.php könnte dadurch ja bei 40 Unterseiten ganz schön unübersichtlich und groß werden.

    Hab ich das so richtig verstanden oder nicht?

    Danke für die Hilfe

  • Hm, ne, also bei den Variablen würde ich schon bei dem einen Namen bleiben. Aus Sicht der header.php ist my_other_* definiert oder eben nicht. Diese Variante mit den Variablen bietet sich an, wenn eine Reihe von Seiten oder nur eine einzelne Seite alle den gleichen abweichenden Titel bekommen sollen.

    Wenn Du jetzt viele Seiten hast, die alle individuelle Titel kriegen sollen, mach das gleiche besser über Benutzerdefinierte Felder. Gib den statischen Seiten oder Beiträgen einfach drei Felder mit bei Bedarf (title, description + link -- kannst Du nennen, wie Du willst, solange Du sie mit dem gleichen Namen wieder ausliest und sie nicht mit Feldern von Plugins Namensgleichheiten auftreten). In der header.php liest Du dann statt der Variablen diese Felder aus. Ich vermute, dass das eher das ist, was Du brauchst.

    Also nichts im Seitentemplate (falls vorhanden) ergänzen und das hier in der header.php:

  • So ich bräuchte bitte eine genauere Beschreibung, es sind noch viele Fragen offen :???:

    Also Benutzerdefinierte Felder auf der Unterseite erstellen, drei Stück für die jeweiligen Änderungen.

    Wo vermerke ich aber den Neuen Blog Titel für die Unterseite? Mach ich das im Feld "Wert" von den Benutzerdefinierten Feldern?

    Muss ich den PHP Code zum auslesen jeweils pro Unterseite die ich verändern will im Header einfügen oder lädt er selbstständig die Benutzerdefinierten Felder? Also wie stelle ich den Bezug zu den verschiedenen Benutzerdefinierten Feldern her und wo vermerk ich die im Code?

    Danke für die Hilfe

  • Zitat

    Wo vermerke ich aber den Neuen Blog Titel für die Unterseite? Mach ich das im Feld "Wert" von den Benutzerdefinierten Feldern?

    Ja. Die Benutzerdefinierten Felder sind einfach Schlüssel-Wert-Paare, die Du nach Belieben an die Artikel kleben kannst. Der Schlüssel ist das, worunter Du den Wert speicherst und womit Du das später auch wieder ausliest. Kann wie gesagt beliebig sein, sollte aber eindeutig sein und Du musst an beiden Stellen das gleiche nehmen. Also etwa "my_title" als Feldname und dann den Titel als Wert eintragen und für Link und Description genauso.


    Zitat

    Muss ich den PHP Code zum auslesen jeweils pro Unterseite die ich verändern will im Header einfügen oder lädt er selbstständig die Benutzerdefinierten Felder? Also wie stelle ich den Bezug zu den verschiedenen Benutzerdefinierten Feldern her und wo vermerk ich die im Code?

    Der zuletzt gepostete Code schaut an der aktuellen Seite nach, ob das Feld vorhanden ist oder nicht. Wenn ja, liest er den Wert aus, wenn nicht nimmt er den Default-Wert. Der Code reicht also so wie er ist.

    Wenn ich mir das recht überlege fällt mir aber noch eine Verbesserung ein:

  • Jaaa, wir kommen dem Ziel immer näher, Danke. Ich habe Benutzerdefinierte Felder erstellt und diese wie in deinem Code benannt: my_title usw. Wen ich jetzt eine anderen Blogtitel auslesen will, dann schreibe ich beim Wert: <h1>anderer Titel</h1> oder muss da auch php rein? Der Code in meiner Theme ist allerdings leicht anders:

    Also ich dachte ich könnte deinen Code hier einfügen aber irgendwie schaff ich es nicht ganz. Ich hab erstmal nur die Blogtitel probiert:

    PHP
    </head>
    <body>
    <div id="wrapper">
        <h1 id="title"><a href="<?php bloginfo('home'); ?>"><?php
            if (is_single() || is_page()) {
             $my_title = get_post_meta($post->ID, 'my_title', true); }
            if (empty($my_title)) {
            $my_title = get_bloginfo('name'); }?></a></h1>

    Aber so wird mir garkein Blogtitel mehr angezeigt und wenn ich das <?php ... ?> weglasse , sehe ich den Code selber als Blogtitel. Was mache ich falsch?

  • Ok, also erstmal: In die benutzerdefinierten Felder wenn irgend möglich kein HTML eintragen. Wenn Du Dich später mal entscheidest den HTML-Code zu ändern hast Du viel Arbeit wenn es direkt in den Werten steht. Schreib da nur den reinen Text bzw. die reine URL rein.

    Zur Einbindung: Das kommt irgendwo weiter oben in einen PHP-Block und dann an die entsprechende Stelle einfach:

    PHP
    <?php echo $my_title; ?>

    Der Code selber holt die Infos ja nur, er gibt nichts aus, deswegen siehst Du da auch nichts so wie Du es gemacht hattest. ;-)

  • Ja das musst du mir doch sagen, ich hab doch keine Ahnung von PHP. Allerdings hilft mir irgendwo oben im Code leider auch nicht weiter :???:
    Also wo muss das hier jetzt hin und muss da noch: <?php ... ?> davor und dahinter?

    Hier der komplette Header Code:

    und den Teil zum Auslesen schreibe ich genau hinter die Auslesung vom Blogtitel?:

    PHP
    <h1 id="title"><a href="<?php bloginfo('home'); ?>"><?php bloginfo('name'); ?></a></h1>

    +

    [LEFT]

    PHP
    <?php echo $my_title; ?>

    =

    PHP
    <h1 id="title"><a href="<?php bloginfo('home'); ?>"><?php bloginfo('name'); ?><?php echo $my_title; ?></a></h1>

    Richtig?
    [/LEFT]

  • Den ersten Code-Block z.B. hier einfügen:

    Und die Ausgabe von Titel und Link müsste dann so aussehen:

    PHP
    <h1 id="title"><a href="<?php echo $my_link; ?>"><?php echo $my_title; ?></a></h1>

    Und analog für die Description, in der Zeile darunter vermutlich. Also einfach die vorhandene Ausgabe durch das echo der Variablen ersetzen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!