• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mit php html-tags ersetzen

Shrax

Mitglied
Hallo,

ich betreibe eine Seite mit Wordpress.

Auf der Startseite ist der Name der ganzen Webseite als h1 ausgezeichnet.
Ruft man eine Seite mit einem einzelnen Titel auf, ist der Artikelname als h1 ausgezeichnet und der Name der ganzen Webseite nur als Text.

Hier ein konkretes Beispiel:
Auf der Startseite wird der Blogtitel als <h1> ausgegeben, auf einer Einzelseite des Artikels der Artikelname als <h1>.
PHP:
                             <?php if(is_home() and !is_paged()) { ?>                        <h1><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?> </a></h1>                             <?php } else { ?>                        <a class="blogtitle" href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a>                            <?php }                            ?>

Dies konnte ich mit Wordpress Funktionen noch relativ leicht realisieren.

Jetzt stehe ich leider vor einem kniffligeren Problem.

Auf der Startseite sind die einzelnen Artikelüberschriften mit <h2> ausgezeichnet.
Auf den einzelnen Artikelseiten (single.php) als <h1.
Schreibe ich nun einen Artikel weiß ich nicht welche Überschriften ich verwenden soll.
Nutze ich h3 für die nächste Überschrift in der Hierarchie (was auf der Startseite sinnvoll wäre) fehlt auf der Einzelseite (single.php) das <h2> tag.

Nun die Frage von einem php-noob.
Ist es möglich auf der Startseite (und zwar nur auf dieser) sämtliche <h2> innerhalb eines <div>'s mit spezieller id=““ durch <h3> zu ersetzen?
Ich würde dann in den Artikel <h2> für die 2te Überschrift nutzen, und auf der Startseite würde automatisch <h3> innerhalb des Artikels kommen.

Also der Ablauf wäre denke ich so

WENN Startseite
dann {
Suche <div id="artikel">
ersetze alle <h2> in <div id="artikel"> durch <h3>
}

Ein weiteres Problem ist, dass auf der Startseite dann außerdem
<h2> zu <h3>
<h3> zu <h4>
<h4> zu <h5>
und
<h5> zu <h6>
werden muss.

Das Ganze soll ohne viele Performanceeinbußen geschehen.

Ist das möglich?


mfg shrax
 
Zuletzt bearbeitet:
Werbung:
Sofern die Beiträge aus einer Datenbank eingelesen werden, könntest du für Start- und Unterseiten unterschiedliche HTML/CSS-Dateien anlegen. Eine andere Möglichkeit wäre, statt Überschriften CSS-Klassen zu verwenden und diese dynamisch zu ersetzen.

PHP:
if(Startseite) {
    $class = 'class1';
} else {
    $class = 'class2'
}

<span class="<?php echo $class; ?>">Das ist eine Überschrift</span>
 
Werbung:
Warum nutzt du es dann nicht? Das was du beschreibst läßt sich leicht ändern, in dem du das Template anpaßt. Irgendwelche seltsamen Hacks sind völlig unnötig.
Wenn du mir einen Denkanstoß geben könntest? Ich schreib das ganze Theme ja selber. Auf der Startseite ist die höchste Überschrift innerhalb eines Artikels, nach der Überschrift, h3.

Das die Überschrift die die Hauptüberschrift des Artikels ist, auf der Hauptseite h2 und auf den Einzelzeiten h1 ist, habe ich schon gelöst.

Aber wenn ich nun einen Artikel schreibe, wie gliedere ich die Überschriften die ich innerhalb des Postings schreibe? Schreibe ich <h3> ist es auf der Startseite richtig, auf den Einzelzeiten allerdings falsch da dann nach <h1>, <h3> kommen würde. Benutze ich allerdings <h2> als nächste Überschrift nach den Titel, würden auf der Startseite unter den Einzelseiten die mit <h2> ausgezeichnet sind nochmal <h2> kommen.


Sofern die Beiträge aus einer Datenbank eingelesen werden, könntest du für Start- und Unterseiten unterschiedliche HTML/CSS-Dateien anlegen. Eine andere Möglichkeit wäre, statt Überschriften CSS-Klassen zu verwenden und diese dynamisch zu ersetzen.
Wenn mir es reichen würde die Überschriften wie Überschriften aussehen zu lassen wäre das okay. Tut es in diesem Falle jedoch nicht.
Ich möchte dass die Reihenfolge h1-h6 eingehalten wird.

Oder habe ich dich falsch verstanden?
 
Zuletzt bearbeitet:
Ich hatte dein 1.Posting nicht richtig gelesen, daher war mein Einwurf nicht korrekt.

Ich würde eher die Ordnung der Überschriften überall beibehalten. Warum ist auf den Artikelseiten die Artikelüberschrift H1 und auf der Übersicht H2?

Ich hatte das Problem am Anfang auch, bis ich irgendwann eine klare Linie beschlossen habe. H1 ist nur für den Titel des Blog, H2 für den Titel der aktuellen Seite/Artikel und H3-H6 benutze ich in den Artikeln.

An den Inhalten mit PHP rumzudoktorn, finde ich zu umständlich.
 
Ich mache das, weil <h1> die Seite beschreiben soll. Nach html Grundlagen ist <h1> die Überschrift EINER konkreten html Seite. Auf der Startseite ist der Titel des Blogs also okay. Suchmaschienentechnisch ist es allerdings besser auf den Artikelseiten als höchste Überschrift den Artikel Namen zu nutzen. Das h1, wenn für den Webseitennamen benutzt, fürdie Suchmaschienenoptimierung gut ist, ist meinem Wissen nach ein weit verbreitetes Gerücht dem ich bis vor kurzem noch glauben schenkte.


Würde mein Vorhaben mit php denn viele Performanceeinbußen mit sich bringen? Es müssten auf der Startseite immer ca. 10 <hx> </hx> tags ausgetauscht werden.
 
Zuletzt bearbeitet:
Werbung:
Ich weiß zwar nicht ob du auf einen Holzweg bist - schließlich nutzen Millionen von Blogs Wordpress ohne solche Änderungen - aber was spricht denn so gegen H1 -> H3? Gestalten kannst du es mit CSS identisch und ob die Suchmaschinen wirklich so einen Unterschied machen würden bezweifle ich auch.

EDIT: Was die Performance an geht, würde das in Anbetracht, dass WP eh ein Monster ist, vermutlich den Kohl nicht fett machen. Die Frage wäre, ob ein einfacher regulärer Ausdruck ausreicht? Das Parsen von HTML ist nicht so leicht. Aber du willst ja nur einen Auschnitt verändern.
 
Ich mache das deswegen, da h1 die Seite beschreiben soll. Weil es eben der titel ist. Auf der Startseite ist der titel des Blogs also okay. Suchmaschienentechnisch ist es allerdings besser auf den Artikelseiten als höchste überschrift den artikelnamen zu nehmen. Das h1, wenn für den Webseitennamen benuzt, für bezüglich Suchmaschienenoptimierung gut ist ist ein mehr oder weniger weit verbreitetes gerücht.


Würde mein vorhaben mit php denn viele performance einbußen haben? Es müssten auf der Startseite immer ca 10 <hx> </hx> tags ausgetauscht werden.
1. h1 sollte immer für das Logo bzw. den Website-Namen benutzt werden.

2. Es stimmt nicht, dass h1 von Suchmaschinen besser gewertet wird als h2.
SloMo schrieb:
1.) H1 wird vor allem für Seitentitel (Logo, Website-Name) verwendet und hat daher keine besondere Keyword-Relevanz, die nicht im Rahmen des TITLE-Tags bereits gegeben wäre.

2.) Wenn H1 wichtige Keywords enthält, dann vor allem deshalb, weil es von suchmaschinenbewussten Webmastern vorrangig zur Ranking-Manipulation eingesetzt wird.

H1 wird also vor allem entweder redundant oder hochgradig manipulativ eingesetzt, weshalb Google dieses Tag nicht besonders hoch gewichtet. H2 und H3 werden ganz anders eingesetzt. Sie markieren so gut wie immer Abschnitte des Dokumentes und kommen damit wohl dem am nächsten, was man heute im Sinne von SEO unter Semantik verstehen kann.
h1 h2 tag unterschied? - ABAKUS

Irgendwelche PHP-Hacks zu benutzen macht also keinen Sinn.
 
Zuletzt bearbeitet:
Ich weiß zwar nicht ob du auf einen Holzweg bist - schließlich nutzen Millionen von Blogs Wordpress ohne solche Änderungen - aber was spricht denn so gegen H1 -> H3? Gestalten kannst du es mit CSS identisch und ob die Suchmaschinen wirklich so einen Unterschied machen würden bezweifle ich auch.

Okay vielleicht bin ich das wirklich. Ich lasse mich auch gerne überzeugen. Aber mir fällt keine logische Erklärung ein warum <h1> immer der Webseitenname sein sollte.
Nehmen wir an es gibt eine Seite die heißt „Ich bin Tom“. Tom schreibt dann auf seiner Seite immer schön privates. Aber einmal schreibt er einen echt sinnvollen Text der sehr lang ist und Leuten helfen kann. Für mich ist es unlogisch diesen Text als Überschrift der ersten Ordnung "ich bin tom" zu geben.

Der einzige Anwendungsfall wo h1 der Seitename auf JEDER Seite ist, ist für mich nur in dem falle, wenn der Blogname gleichzeitig die Hauptüberschrift der einzelnen Artikel sein kann. Nicht "Ich bin Tom", oder "Toms Blog", oder "Toms spielwiese", sondern "ElektroTom - die Elektro Fachseite für Experten und die die es werden wollen". Hier wäre es sicherlich Sinvoll.

1. h1 sollte immer für das Logo bzw. den Website-Namen benutzt werden.

2. Es stimmt nicht, dass h1 von Suchmaschinen besser gewertet wird als h2.

Gut, du magst recht haben mit Punkt 2.

Zu punkt 1, hast du Quellen dafür?

Weil zu deinem Link hab ich auch was Passendes. Eine Diskussion die ich selber anfing:

h1 wirklich als Blogtitel sinnvoll? - ABAKUS

Weitere Links die ich auf die Schnelle fand:


http://auch.ok-en.de/chaos/pmwiki.php?n=Blog/Was-schon-alles-schiefgelaufen-ist-01-SEO
http://s-alexander.appspot.com/www.onkelseo.de/onpage-seo/blogtitel-oder-beitragstitel-als-h1-uberschrift/





Ich kann zwar nicht wirklich php, aber wäre diese Lösung nicht vielleicht realisierbar?
Ich kann in Wordpress sagen
WENN Startseite
dann
<h1>Titel</h1>
sonst
<h2>Titel</h2>

Aber nur in jedem konkreten Fall.


Ist es nicht möglich per php einfach das für einen ganzen div-container festzulegen?

Wenn Startseite
DANN
{
ersetze im
div mit der id ="entry"{
die variable %hx1% (kann ich ja im editor tippen)
durch h1}
}
WENN
einzelseite
{
ersetze im
div mit der id ="entry" {
die variable %hx1%
durch h2 }
}
 
Zuletzt bearbeitet:
Werbung:
Okay vielleicht bin ich das wirklich. Ich lasse mich auch gerne überzeugen. Aber mir fällt keine logische Erklärung ein warum <h1> immer der Webseitenname sein sollte.
Weil das der Titel der Seite ist. Der Artikel ist der Inhalt oder ein Kapitel und gehört meiner Meinung nach eher in ein H2 Element. Ich halte diese Diskussion und die z.T. verlinkten Artikel für esoterisch. Man kann dran glauben oder nicht, aber Belege gibt es nicht. So ist das meiste nur "ich glaube".
 
Weil das der Titel der Seite ist. Der Artikel ist der Inhalt oder ein Kapitel und gehört meiner Meinung nach eher in ein H2 Element. Ich halte diese Diskussion und die z.T. verlinkten Artikel für esoterisch. Man kann dran glauben oder nicht, aber Belege gibt es nicht. So ist das meiste nur "ich glaube".
War bei deinem Link ja auch so.
Ich denke nur das eine Webseite ja dafür da ist content bereit zu stellen. Und die überschrift des Contents ist ja damit auch die überschrift der Seite. Aber ich gehe ja soweit mit das bei Seiten wie z. B. eine Seite einer Software kann den Softwarenamen auf jeder Seite in <h1> stehen haben. Aber bei einem Blog der sich um mehrere Themen dreht...
Auch aus deinen Link kann man das Zitat eines posters ziehen
"
H1 als Headline /Überschrift erster Ordnung der ganz konkreten Seite beschreibt also mit einem bis wenigen Stichworten das Thema dieser Seite.
Und das konkrete Thema einer Seite auf Toms Webseite (beispiel) die, anders als seine anderen privaten einträgen, sich um eine komplizierte Software dreht und diese besser als andere Texte dazu erklärt, ist nicht "Toms Webseite"...

Naja da kann man lang darüber Diskutieren und das ist ja nicht der zweck dieses Themas. Ich wollte eher auf eine Lösung mit php hinaus. Dann lern ich gleich nebst etwas php. Ob ich das dann einsetze lass ich mir nochmal durchgehen, in meinen Anwendungsfall finde ich es allerdings sinnvoll.
 
es gibt nach html5 eine schicke logik, wie überschriften einzuordnen sind. so gibt es eine logik für das element <h>, bei dem in einem korrekten html5 dokument die hierarchie automatisch beachtet wird.
seo-technisch würd ich noch weiterhin auf hx setzen.
 
Werbung:
Alles viel zu kompliziert. Warum nicht den Inhalt anstatt der Tags dynamisieren? Das ist einfacher und verursacht auch keine Performance-Probleme. Schreibe zwei unterschiedliche HTML-Gerüste für Haupt- und Artikelseite. Was auf der einen in <h1> ausgegeben wird, steht auf der anderen in <h2>.
 
War bei deinem Link ja auch so.
Ich hab keinen Link

Ich finde schon das "Tom's Webseite" der Titel ist, alles andere sind entweder Artikel, rubriken oder Kapitel, je nachdem wie man es nennen möchte. H1 ist für mich das was bei einem Buch oder Zeitschrift auf dem Cover steht. Auf einer Webseite gehört das auf jede Seite.
 
Ach so und die Lösung mit PHP ist ein regulärer Ausdruck, der deinen Content filtert. Dafür gibt es in Wordpress entsprechende Filter und auch Funktionen, um festzustellen ob die Startseite angezeigt wird.
 
Werbung:
Ich hab keinen Link
Ich möchte mich entschuldigen, ich verlas mich im Namen.
Ich finde schon das “Tom’s Webseite” der Titel ist,
Aber den Titel definiere ich doch mit <title> oder?Der steht vorne auf den Buch oder eben in Google vor der Beschreibung oder auf der Webseite auf der ich bin oben auf den Browsertab.
Und als erste Überschrift die der User dann sieht, sieht er den Titel dessen er lesen will. Tom schreibt ein Buch. Der Titel ist “Toms Tagebuch”.
In einem neuen Eintrag möchte Tom zeigen wie er Essen zubereitet.
Der Leser der das Tagebuch sieht kann auf den einband Toms Tagebuch lesen.
Der Leser der jedoch nur Wissen möchte wie Tom kocht fragt ihn (googlet) ob er schon etwas darüber geschrieben hat.
Er interessiert sich nicht ob das in Toms Tagebuch steht. Er sucht nur die Information wie Tom kocht. Egal ob es auf einen Zettel oder in seinen Tagebuch steht.
Da sieht er also den Eintrag “Tom erklärt wie er sein Essen zubereitet”.

Tom möchte auf der Seite tomstagebuch.tld/tom-bereitet-essen-zu/ zeigen wie er essen zubereitet.
Ein User Googlet “Wie wird euer Essen zubereitet?”. Ihm ist egal ob der der das Essen zubereitet Timmy, Tom, Heinrich oder Willhelm heißt.
Er findet einen Eintrag in Google. “Toms Tagebuch – Zubereitung seines Essens”. Und als Beschreibung darunter steht “In diesem Artikel erklärt euch Tom wie er sein Essen zubereitet”.
Er ruft die Seite auf. Und das was ihn interessiert ist nicht “Toms Tagebuch”. Das ist nur die selbstdarstellung von Tom, weil er zeigen will das das Buch (nein, die Seite) von ihm ist.
Das wichtigste (<h1>) ist dem User also nicht “Toms Tagebuch”. Das wichtigste ist ihm also “Wie wird euer Essen zubereitet”. Und darauf hin bekommt die wichtigste Überschrift, und damit den Überblick über den Inhalt in einem Satz “Tom erklärt euch wie er sein Essen zubereitet”.<title>Toms Tagebuch – Zubereitung seines Essens</title>
<h1>Tom erklärt euch wie er sein Essen zubereitet</h1>





<h2>Gesundes</h2>
<h3>Rezept 1</h3>
<h3>Rezept 2</h3>
<h2>Zum genießen</h2>
<h3>Rezept 1</h3>
<h3>Rezept 2</h3>ABER:Du hast recht wenn das Buch folgenden titel hat:“Wie werde ich Koch”Der Leser will wissen wie er Koch werden kann, und nimmt deswegen das Buch “Wie werde ich Koch”.Aber du hast sicherlich auch Recht, ich kann dir schon folgen und es klingt auch logisch. Ich denke das muss jeder selbst entscheiden. Die meisten machen es wie du sagst, ja.
Ach so und die Lösung mit PHP ist ein regulärer Ausdruck, der deinen Content filtert. Dafür gibt es in WordPress entsprechende Filter und auch Funktionen, um festzustellen ob die Startseite angezeigt wird.
Genau, wie ich im ersten post schrieb. Mit if_home kann man das abfragen. Ich möchte nur das dies für den ganzen div-container “entry” gemacht wird damit ich im Editor nicht bei jeder Überschrift in jedem Beitrag mit php manuell abfragen muss if_home…. Das ist mein Problem.
Aber vielen dank für die Antwort, ich bastle gerade an einer anderen Lösung die vielleicht sogar besser ist. Mal schauen wie das hinhaut.

Auch was W3C macht es auf seinen Webseiten so.

<h1 class="title">Standards</h1>

Standards - W3C
 
Das Problem ist ja, dein Problem. Du musst nach deiner Definition die Ordnung der Überschriften dynamisieren. In den Artikeln haben die Überschriften mal die Ordnung H2 mal H3, das ist nicht konsistent.

Aber um die von dir gewünschte Funktionalität einzubauen, ist es am sinnvollsten in der functions.php einen Filter einzubauen:
PHP:
add_filter( 'the_content', 'change_header' );

function change_header( $content ) {
	return is_home() ? str_replace('h2>', 'h1>', $content) : $content;
}
 
Ach so, was mir noch einfällt, die W3C Seiten arbeiten wohl nach dem folgenden Konzept. Auf den Übersichtseiten werden die Titel als H2 angezeigt und das was in Wordpress als the_excerpt() bezeichnet wird. Sinnvollerweise sind darin keine Überschriften enthalten und dein Problem ist hinfällig.
 
Werbung:
Ach so, was mir noch einfällt, die W3C Seiten arbeiten wohl nach dem folgenden Konzept. Auf den Übersichtseiten werden die Titel als H2 angezeigt und das was in Wordpress als the_excerpt() bezeichnet wird. Sinnvollerweise sind darin keine Überschriften enthalten und dein Problem ist hinfällig.

Das stimmt. Bei mir ist es nur so das der neuste Artikel auf der Startseite länger als die anderen (im normalfall komplett, außer wenn sehr lange), bei denen ich auch mit the_excerpt() arbeite. Nur beim ersten post auf der Startseite gibt es diese posts wovon ich rede.


PHP:
add_filter( 'the_content', 'change_header' ); 

function change_header( $content ) { 
    return is_home() ? str_replace('h2>', 'h1>', $content) : $content; 
}

Damit bastle ich gleich mal rum, danke! Ich geb ne Rückmeldung wies hinhaut!
 
Zurück
Oben