HTML Verschiede <title> auf Seiten

qhil

Captain
Dabei seit
Apr. 2011
Beiträge
3.116
Moin zusammen,

ich habe eine recht knappe Frage. Man soll ja im Idealfall für jede Seite einen Title-Tag haben, so dass die Seiten in der Suchmaschiene besser unterschieden werden können.
Ich habe meine Seite aktuell so aufgebaut, dass ich verschiedene (Unter)Seiten in die index.php include. In der index.php steht natürlich schon ein Head-Tag mit dem Titel und Teile des Body-Tags (incl. Menü), wodurch ich in die Unterseiten keine weiteren Titel einbauen kann. Wie geht man damit am besten um? Mir fällt dabei leider nur ein, die ganzen Seite neu zu strukturieren.


Grüße,
qhil
 

Drexel

Lt. Commander
Dabei seit
Jan. 2012
Beiträge
1.192
Ich gehe davon aus, Du nutzt kein CMS, was aber evtl. sinnvoll wäre.

Aber zwischen den Title Tags kannst Du doch dynamisch Text ausgeben lassen, je nachdem auf welcher Seite Du dich befindest. Die Seiteninformations musst Du ja irgendwo haben. Z.B. so:

Code:
<Title>
<?php
switch ($site) {
    case 0:
        echo "Titel1";
        break;
    case 1:
        echo "Titel2";
        break;
    default:
        echo "Default Titel";
        break;
}
?>
</Title>
 
Zuletzt bearbeitet:

qhil

Captain
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3.116
Doch, ich benutze ein (selbstgebautes) CMS, aber das ist ja eigentlich auch nicht weiter relevant.
Man stelle sich vor, man befindet sich auf der Startseite, wo ein Menü und ein paar News angezeigt werden.
Klickt man nun auf den fiktiven Menüpunkt "Betriebssysteme" dann wird die Variable "$categorie" mit beispielsweise "os" befüllt. Dadruch wäre es mir möglich, dass ich die Variable nutze, auswerte und den Titel, noch vor dem Menü und dem Include, befülle. Soweit so gut.

Wird nun auf das Betriebssystem "Windows 7" geklickt, dann wird in der index.php nicht mehr die "os.php" included sondern die "w7.php". Die Variable "$categorie" verändert sich nun aber nicht mehr, sondern es wird eine weitere Variable ("&select=w7") angehängt. Das bedeutet letztlich für mich, dass ich extrem viele verschiedene Variablen(kombinationen) in die index.php aufnehmen und auswerten (via if/case-Anweisung) müsste, was irgendwie nicht Sinn der Sache sein kann. Hoffe, das war einigermaßen verständlich.

Edit: Super wäre natürlich, wenn der Title-Tag in jedem PHP-File stecken würde, so dass ich im Prinzip nur einen Wert aus der Datenbank dort reinhängen müsste. Das würde aber den genannten Umbau der Struktur bedeuten, was aktuell sehr viel Aufwand darstellt. Habe das leider im Vorfeld, aus SEO-Sicht, nicht gewusst bzw. bedacht.
 
Zuletzt bearbeitet:

Drexel

Lt. Commander
Dabei seit
Jan. 2012
Beiträge
1.192
Und was sagt Dir das? Dass Deine Programlogik Deines CMS nicht ganz optimal für Dein Ziel ist. :) Entweder wirst Du in den sauren Apfel beißen müssen und die Kombinationen berücksichtigen. Oder Du legst Dir die Seiteninformation in einer Datenbank an inkl. Titel wie es andere CMS auch machen.

Aber so umfangreich ist die Auswertung ehrlich gesagt nicht. Überpüfe ob die Variable select gesetzt und nicht leer bzw. Whitespace ist, wenn das so ist mach nen Switch auf die select Variable für den Titel, wenn nein mach den Switch auf die categorie Variable. Wenn select gesetzt ist hast Du ja eine eindeutige Seite, dann musst Du die categorie nicht noch zusätzlich auswerten...

Edit: Und ich hoffe Du checkst die Url Variablen vor Benutzung ab, nicht dass man darüber noch andere Dateien als Deine gewünschten PHP Dateien inkludieren kann...
 
Zuletzt bearbeitet:

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Du wirst nicht drum herum kommen, dein CMS von Grund auf neu zu gestalten, um das mit anständiger Dynamik zu lösen. Und genau deshalb ist die goldene Regel: "Schreibe nichts selbst, das fähigere Leute in jahrelangem Entwicklungsprozess bereits perfektioniert haben."
Es gibt drölfzillionen quelloffene PHP-basierte CMS. Warum also so etwas selbst schreiben und all die Fehler, von Sicherheitsproblemen über Performancefehlern bis hin zu SEO-Gekasper, noch einmal selbst machen?

Was bei dir falsch läuft:
1.) Du hast keine Datenbanktabelle aller Seiten inklusive deren Baumstruktur, oder? Wenn du eine hättest, dann könntest du deinen Title ja daraus laden.
2.) Du hast keine sauberen URLs. Eine saubere URL ohne Parameter ist SEO-technisch IMMER besser als "index.php?category=os&select=w7". Außerdem wäre es auch für deine menschlichen Nutzer deutlich besser, wenn sie domain.tld/os/w7.html aufrufen würden... Und genau sowas löst man über gute Redirects und gute Seitenaliase aus einer Datenbank.

Ich kann dir echt nur raten: Erfinde das Rad nicht neu. Abreißen und durch Contao, Joomla oder Drupal ersetzen sollte deutlich schneller zum Erfolg führen als all deine systemischen Fehler Stück für Stück zu beseitigen. Mit selbstgebauten Lösungen verschwendest du nicht nur deine Zeit, oftmals sidn da auch Frickel-Ansätze drin, die als Angriffsvektor für Hacker (z.B. SQL Injection Lücken) dienen können und somit die Sicherheit deiner USER gefährden.
 

qhil

Captain
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3.116
Bezugnehmen auf das CMS reden wir, so glaube ich, aneinander vorbei. :) Die Änderung müsste nicht am CMS erfolgen, sondern in der Struktur des Codes. Selbst wenn ich den Titel in der DB speichere, bringt es mir ja nichts, weil beim Aufruf der "Windows 7"-Seite der Head- und der Title-Tag schon wieder geschlossen sind. Aber sei es drum.

Den zweite Punkt, den du angesprochen hast, werde ich mal testen. Klingt aber definitiv einleuchtend - das könnte klappen, muss dann nur die DB-Abfrage vor den Title-Tag ziehen. Danke dir :)

Edit @Daaron:
Eine solche Tabelle habe ich nicht. Das ist korrekt. Ich habe allerdings "saubere URLs". Das Beispiel war nur zur Veranschaulichung. Die Adresse wäre in diesem Fall dann natürlich www.domain.de/betriebssysteme/windows-7/.

Beim letzten Punkt hast du natürlich auch ein Stück weit recht. Nur programmiere ich gern und wieso sollte ich mich nicht an Dingen probieren, die ein wenig umfangreicher sind; zumal ich ja nur dazu lernen kann und will. Und "User" als solches habe ich nicht - sprich es gibt keine Logins. Klingt vermutlich wie eine Ausrede oder naiv, aber so ist es eben :)
 
Zuletzt bearbeitet:

siconize

Ensign
Dabei seit
Apr. 2012
Beiträge
137
Hast du deine "Seiten" nicht in PHP als Klasse mit gemeinsamer Oberklasse angelegt? Und wie viele Seiten hast du?

Sonst wie du glaube ich auch schon überlegt hast, einfach den die Seiten repräsentierenden Klassen eine öffentliche Variable für den Titel hinzufügen, die du dann von der index.php auswerten lassen kannst für den Titel-Tag.
 

Drexel

Lt. Commander
Dabei seit
Jan. 2012
Beiträge
1.192
Ich kann verstehen, dass man sowas auch mal selbst basteln will, um Erfahrungen zu sammeln. Aber für ein richtiges Projekt würde ich auch ein CMS nehmen und lernen wie das intern tickt (lernt man auch ne Menge bei) und wie man Plugins, Anpassungen etc. dafür entwicklet, da bleibt immer noch genung selbst zu machen. Und alles was schon da ist ist wahrscheinlich lang genug in Benutzung, damit es gut funktioniert. Klar die Einarbeitung dauert vielleeicht etwas, aber das Wissen um eins der bekannten CMS kann nicht schaden.
 

qhil

Captain
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3.116
Hast du deine "Seiten" nicht in PHP als Klasse mit gemeinsamer Oberklasse angelegt? Und wie viele Seiten hast du?
Die erste Frage verstehe ich nicht, tut mir leid. An Seiten (also tatsächliche PHP-Files) habe ich eine Index-Seite und 12 Unterseiten, wenn man das so nennen mag. Dazu kommen noch ein paar Seiten für den administrativen Bereich, die aber nicht frei zugänglich sind plus 2 Fehlerseiten.

Egal welcher Menüpunkt angesteuert wird, es wird immer die index.php aufgerufen und anhand der mitgelieferten Variablen entschieden, welche Unterseite included wird.
 

Drexel

Lt. Commander
Dabei seit
Jan. 2012
Beiträge
1.192
Die eigentlich Frage war: Entwickelst Du objektorientiert? Wenn Du nicht weißt was das ist würde ich die Frage mal spontan mit Nein beantworten. :)
 

siconize

Ensign
Dabei seit
Apr. 2012
Beiträge
137
Ja genau, so kann man die Frage auch stellen :D

Das hatte ich irgendwie schon vorweg gegriffen, sorry.
 

qhil

Captain
Ersteller dieses Themas
Dabei seit
Apr. 2011
Beiträge
3.116
So, habe es jetzt hinbekommen. War zum Glück auch kein großer Aufwand, auch wenn ich vorher nicht drauf gekommen bin.
Danke an alle :)
 
Top