Die Metadaten des CMS-Tutorials werden heute ausgelesen und gespeichert. Im letzten Beitrag haben wir bereits die Klasse Meta erstellt und ein Formular für die Meta Daten beim Seite Bearbeiten angezeigt.
Mit der system/classes/meta.php geht es auch direkt weiter. Wir haben dort bereits die Methoden load und save erstellt, die nun mit Leben befüllt werden:
public function load(){ global $dbpraefix; $res = mysql_query("SELECT name, content FROM ".$dbpraefix."meta_local WHERE page = '".$this->pageid."'"); while($row = mysql_fetch_row($res)){ if(strtolower($row['name'] == 'description')){ $this->description = $row['content']; } else if(strtolower($row['name'] == 'keywords')){ $this->keywords = $row['content']; } else if(strtolower($row['name'] == 'robots')){ $this->robots = $row['content']; } } } public function save(){ global $dbpraefix; mysql_query("DELETE FROM ".$dbpraefix."meta_local WHERE page = '".$this->pageid."'"); if(trim($this->keywords) != ""){ mysql_query("INSERT INTO ".$dbpraefix."meta_local (page, name , content) VALUES('".$this->pageid."','keywords','".$this->keywords."')"); } if(trim($this->description) != ""){ mysql_query("insert into ".$dbpraefix."meta_local (page, name , content) VALUES('".$this->pageid."','description','".$this->description."')"); } if(trim(strtolower($this->robots)) != 'index, follow'){ mysql_query("insert into ".$dbpraefix."meta_local (page, name , content) VALUES('".$this->pageid."','robots','".$this->robots."')"); } }
Das ist glaub ich nicht weiter zu erklären. Die Funktion save muss noch in der Klasse /system/classes/page.php aufgerufen werden. Dies geschieht auch in einer Funktion namens save:
function save(){ global $dbpraefix; $res = mysql_query("UPDATE ".$dbpraefix."pages SET title = '".$this->title."', alias = '".$this->alias."', menu = '".$this->menu."' WHERE id = '".$this->id."'"); $this->meta->save(); if($res){ $args['title'] = $this->title; $args['alias'] = $this->alias; $args['menu'] = $this->menu; $args['id'] = $this->id; EventManager::raiseEvent("page_saved","../",$args); } return $res; }
Zu guter letzt müssen in der Datei /admin/includes/site-edit.php noch die eingebenen Daten in die Meta-Klasse geschreiben werden. Das geht so:
<?php if($_POST['save']){ $page->deleteContent("../"); $page->meta->description = $_POST['meta-description']; $page->meta->keywords = $_POST['meta-keywords']; $page->meta->robots = $_POST['meta-robots']; $page->save(); $page->writeContent("../",$_POST['content']); $content = $_POST['content']; } ?>
Jetzt könnt ihr für eine Seite Meta-Daten erstellen und testen, ob sie auf der Seite richtig eingefügt werden.




