Das PostModel greift auf die physikalischen Daten des Beitrags und des Content zu und gibt sie an den Aufrufer.
HTML und CSS (Demo) - Moderne Web-Technologien für moderne Websites! In diesem Standardwerk gibt Ihnen Jürgen Wolf alle Werkzeuge an die Hand, die sie für einen starken Auftritt im Web benötigen. Lernen Sie alle Grundlagen von HTML, CSS und JavaScript kennen und erweitern Sie Ihr Wissen mit diesem umfassenden Lern- und Nachschlagewerk.
Wichtiger Hinweis: Je nach verwendetem Werbenetzwerk, musst du hier einen geeigneten Hinweis anbringen, der dem Leser anzeigt, das du mit Affiliate-Marketing Geld verdienst (ggf. in den Teilnahmenbedingungen des betreffenden Werbepartners nachlesen).
Inhalt
Das PagesModell greift auf Seitendaten zu
Das PagesModel kümmert sich um die Daten, die von einzelnen Beiträgen bereitgestellt werden, es liefert eine Liste verfügbarer Beiträge innerhalb einer konkreten Struktur bzw. einer Kategorie. Beiträge können wahlweise Auf- oder Absteigend für die Anzeige sortiert an den Aufrufer zurückgegeben werden.
class PagesModel
{
private $pages;
function __construct($dir)
{
// === Start: Sorting ===
$unsorted_file_list = array();
$sorted_file_list = array();
foreach (glob($dir.'/*'.CONTENT_EXT) as $file_name)
{
if (!stripos($file_name, 'index'.CONTENT_EXT) && !preg_match('{_}', $file_name))
{
$file_content = file_get_contents($file_name);
$date = Dipper::parse($file_content)['Date'];
$unsorted_file_list[]=$date.';'.$file_name;
}
}
if(SORTING == 'ASC') sort($unsorted_file_list);
if(SORTING == 'DESC') rsort($unsorted_file_list);
foreach($unsorted_file_list as $value)
{
$sorted_file_list[] = explode(';', $value)[1];
}
// === End: Sorting ===
// === Start: Process Meta ===
//foreach (glob($dir.'/*'.CONTENT_EXT) as $file_name) // use this without sorting
foreach ($sorted_file_list as $file_name) // use sorted List
{
$file_content = file_get_contents($file_name);
foreach (Dipper::parse(Page::meta($file_content)) as $key=>$value)
{
if($value)
{
$page[strtolower($key)] = $value;
$this->pages[$file_name] = $page;
}
}
$page['url'] = str_replace(array(CONTENT_DIR,CONTENT_EXT),'',$file_name);
$this->pages[$file_name] = $page;
}
// === End: Process Meta ===
}
function __get($value)
{
return $this->$value;
}
}
Version 2.4.01
Die Klasse PagesModel
legt eine interne Variable $pages
an, in der alle gefundenen Beiträge als Array gespeichert werden. Mit Hilfe von glob
iteriert foreach()
über das Array welches glob
liefert. Ausgenommen davon sind allerdings die Datei index.md
und _*.md
(Deteien die mit Unterstrich beginnen).
Um die Sortierung der Beiträge zu realisieren, werden die Dateinamen, in der Form Datum;Dateiname
, in das Array $unsorted_file_list
eingetragen. Anschließend wird das Array sortiert und der Datums-Prefix mit $sorted_file_list[] = explode(';', $value)[1];
entfernt und in das Array $sorted_file_list
eingetragen. In der zweiten foreach(...
kann die reguläre Verarbeitung der Meta-Attribute erfolgen.
Die magische Methode __get()
liefert die Beitragsliste an den Controller zurück, der diese in eine Templatevariable kopiert, damit im Template die Beitragsvorschau aufgebaut werden kann.