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.


