0251 / 590 837 15
info@a-coding-project.de
;

Globale Meta-Tags in der DB speichern – Code & Blog

Code & Blog Logo

Code & Blog Logo

Da in unserem CMS die Meta-Tags auch vom system und nicht nur vom Skin definiert werden sollen, werden diese in die DB gespeichert. Im Skin können dann bei Bedarf noch weitere ergänzt werden.

Die meisten Meta-Tags haben die Attribute name und content. Und auch nur dieser werden wir in der DB speichern. Die Tabelle hierfür heißt cms_meta_global. Sie besteht den 2 Spalten name und content. Der SQL-Query dafür sieht so aus:

CREATE TABLE `cms_meta_global` (
`name` VARCHAR( 100 ) NOT NULL ,
`content` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `name` )
) TYPE = MYISAM ;

Um das ganze nachher zu Testen, legen wir mal Testweise 2 Einträge an. Den Autor solltet ihr entsprechend anpassen 😉

INSERT INTO `cms_meta_global` ( `name` , `content` )
VALUES (
'author', 'Stefan Wienströer'
);
INSERT INTO `cms_meta_global` ( `name` , `content` )
VALUES (
'robots', 'all'
);

Das ganze wird jetzt mit den anderen Header-Informationen in der Klasse sys mit der Funktion includeHeader ausgelesen. Diese sieht jetzt so aus:

<?PHP
class sys{
  function includeContent(){
    include(filterfilename("../content/articles/".$_GET['include']));
  }
  function includeHeader(){
    global $dbpraefix;
    echo "<title>Kommt in einen sp&auml;teren Beitrag</title>
          <meta http-equiv="Content-Type" content="text/html; 
          charset=iso-8859-1" />";

    $res = mysql_query("SELECT name, content FROM ".$dbpraefix."meta_global");
    while($row = mysql_fetch_row($res)){
      echo "<meta name="".$row[0]."" content="".$row[1]."" />";
    }
  }
}
?>

Jetzt brauchen wir nur noch in der index.php unseres skins (also im Ordner system/skins/default) den Aufruf der Methode einfügen und den alten Header-Inhalt entfernen. Die Datei sieht so aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml/" xml:lang="de">
  <head>
    <?PHP
      sys::includeHeader();
    ?>
  </head>
  <body>
    <?PHP
      sys::includeContent();
    ?>
  </body>
</html>

Der Skin-Design kann jetzt den Head auch noch beliebig erweitern.

Wenn jetzt alles geklappt hat, solltet ihr nun beim Aufruf der Seite im Quelltext die Headerinformationen author und robots sehen.

Kommentare

Akini schrieb am 28.10.2009:

Hi, ich habe gerade gemerkt, das beim mir nur Test erfolgreich kommt. Es gibt eigenartiger weise keine html tag wie oder body?? Ich schau mal woran das liegt wenn du ein Tipp hast wäre ich hoch erfreut. mfg Akini

Akini schrieb am 28.10.2009:

mein Fehler hatte vergessen etwas in der inde.php zu verändern. Er hat anstatt index.php text.php includet^^ mfg Akini

Stefan Wienströer schrieb am 29.10.2009:

^^

Sirblacksoul schrieb am 08.06.2010:

3ter absatz: entspechend ------------&gt; <b>entsprechend </b>

Stefan Wienströer schrieb am 08.06.2010:

@Sirblacksoul: Du bist kein Deutschlehrer, oder?^^ Manche CMS Artikel sind schnell hingeschrieben, deswegen kommen solche Fehler zu Stande (was natürlich nicht sein sollte). Bei täglichen Posts und wenig Zeit ging es nicht anders. Aber neuere Artikel sind bestimmt besser ;-)

sirblacksoul schrieb am 09.06.2010:

Ähm, nein eigentlich ganz im Gegenteil ich bin ein Niete in Deutsch. Jedoch verfolgen sehr viele Leute dein Projekt/Blog und wollte dir daher die Arbeit nehmen das alles mal zu überprüfen und wenn ich mir das alles schon genau durchles, kann ich dir ja die gröbsten Fehler schicken ;) ist nicht böse gemeint oder so, ich habe mich auch wirklich nur auf Wöter konzentriert wo Buchstaben fehlen oder ganz Falsch sind, nur um die verständlichkeit zu gewährleisten.

jm schrieb am 11.05.2011:

Habe hier leider ein problem: Ich rufe die index.php vom skin default auf und folgende Meldung wird ausgegeben...: Fatal error: Class 'sys' not found in /meinewebseite/system/skins/default/index.php on line 12 Was kann ich tun?

FlozZn schrieb am 31.05.2011:

@jm: Hast du im Root-Verzeichnis in der index.php folgende Zeile stehen: include("system/sys.php"); Könnte daran liegen.

Cedric schrieb am 09.11.2011:

Ich habe in der Quelltextausgabe gleich zwei Doctype ausgaben. Soll das so sein?

Stefan Wienströer schrieb am 09.11.2011:

Dann nimm mal eine raus ;-)

Cedric schrieb am 10.11.2011:

Das ist ja eine gute Idee, nur kann ich mich nicht entscheiden welche von beiden. Der eine Doctype kommt aus der system/skins/default/index.php und der andere aus der index.php des Hauptverzeichnis, welche kann weg?