API

API für Entwickler. Wir Entwickler.

Hallo Welt

Installiere das Entwickler-Kit. Das Entwickler-Kit für Datenstrom Yellow enthält Plugins, Themes und Beispiele. Du kannst ausprobieren wie man kleine Webseite, Blogs und Wikis macht. Du kannst lernen wie man eine statische Webseite erstellt. Es ist eine grossartige Art um loszulegen.

Dateien

Die folgenden Dateien sind vorhanden:

├── content               = Inhaltsdateien
├── media                 = Mediendateien
└── system                = Systemdateien
    ├── config            = Konfigurationsdateien
    ├── plugins           = Funktionen der Webseite
    ├── themes            = Aussehen der Webseite
    │   ├── assets        = CSS, Schriftarten und Dateien für Themes
    │   ├── snippets      = Bausteine für Templates
    │   └── templates     = Template-Dateien
    └── trash             = gelöschte Dateien

system/config/config.ini = Systemeinstellungen
system/config/text.ini = Texteinstellungen
system/config/user.ini = Benutzerkonten
system/themes/snippets/navigation.php = Navigation
system/themes/snippets/footer.php = Fußzeile

Objekte

Die folgenden Objekte sind vorhanden:

$yellow->page = Zugang zur aktuellen Seite
$yellow->pages = Zugang zu Seiten vom Dateisystem
$yellow->files = Zugang zu Dateien vom Dateisystem
$yellow->plugins = Zugang zu Plugins
$yellow->themes = Zugang zu Themes
$yellow->config = Zugang zu Einstellungen
$yellow->text = Zugang zu Text
$yellow->toolbox = Zugang zur Werkzeugkiste mit Helfern

Yellow-Page

Yellow-Page gibt Zugang zur aktuellen Seite:

$yellow->page->get($key)
Hole die Metadaten der Seite

$yellow->page->getHtml($key)
Hole die Metadaten der Seite, HTML-kodiert

$yellow->page->getDate($key, $format = "")
Hole die Metadaten der Seite als sprachspezifisches Datum

$yellow->page->getDateHtml($key, $format = "")
Hole die Metadaten der Seite als sprachspezifisches Datum, HTML-kodiert

$yellow->page->getDateRelative($key, $format = "", $daysLimit = 0)
Hole die Metadaten der Seite als sprachspezifisches Datum und relativ zu heute

$yellow->page->getDateRelativeHtml($key, $format = "", $daysLimit = 0)
Hole die Metadaten der Seite als sprachspezifisches Datum und relativ zu heute, HTML-kodiert

$yellow->page->getDateFormatted($key, $format)
Hole die Metadaten der Seite mit maßgeschneidertem Datumsformat

$yellow->page->getDateFormattedHtml($key, $format)
Hole die Metadaten der Seite mit maßgeschneidertem Datumsformat, HTML-kodiert

$yellow->page->getContent($rawFormat = false, $sizeMax = 0)
Hole den Seitenhalt, HTML-kodiert oder Rohformat

$yellow->page->getParent()
Hole die Elternseite, null falls nicht vorhanden

$yellow->page->getParentTop($homeFallback = false)
Hole die oberste Elternseite, null falls nicht vorhanden

$yellow->page->getSiblings($showInvisible = false)
Hole eine Page-Collection mit Seiten auf dem selben Level

$yellow->page->getChildren($showInvisible = false)
Hole eine Page-Collection mit Kinderseiten

$yellow->page->getPages()
Hole eine Page-Collection mit zusätzlichen Seiten

$yellow->page->getPage($key)
Hole eine zugehörige Seite

$yellow->page->getBase($multiLanguage = false)
Hole die Basis der Seite

$yellow->page->getLocation($absoluteLocation = false)
Hole den Ort der Seite

$yellow->page->getUrl()
Hole die URL der Seite

$yellow->page->getExtra($name)
Hole Extradaten der Seite

$yellow->page->getHeader($key)
Hole den Responseheader der Seite

$yellow->page->getModified($httpFormat = false)
Hole das Änderungsdatum der Seite, Unix-Zeit oder HTTP-Format

$yellow->page->getLastModified($httpFormat = false)
Hole das letzte Änderungsdatum der Seite, Unix-Zeit oder HTTP-Format

$yellow->page->getStatusCode($httpFormat = false)
Hole den Statuscode der Seite, Zahl oder HTTP-Format

$yellow->page->error($statusCode, $pageError = "")
Antworte mit Fehlerseite

$yellow->page->clean($statusCode, location = "")
Antworte mit Statuscode, ohne Seiteninhalt

$yellow->page->isAvailable()
Teste ob die Seite vorhanden ist

$yellow->page->isVisible()
Teste ob die Seite sichtbar ist

$yellow->page->isActive()
Teste ob die Seite innerhalb der aktuellen HTTP-Anfrage ist

$yellow->page->isCacheable()
Teste ob die Seite cachebar ist

$yellow->page->isError()
Teste ob die Seite einen Fehler hat

$yellow->page->isHeader($key)
Teste ob der Responseheader existiert

$yellow->page->isExisting($key)
Teste ob die Metadaten der Seite existiert

$yellow->page->isPage($key)
Teste ob die zugehörige Seite existiert

Hier ist ein Beispiel-Snippet um den Seiteninhalt anzuzeigen:

<div class="content">
<div class="main" role="main">
<h1><?php echo $yellow->page->getHtml("titleContent") ?></h1>
<?php echo $yellow->page->getContent() ?>
</div>
</div>

Hier ist ein Beispiel-Snippet um den Seiteninhalt und zusätzliche Metadaten anzuzeigen:

<div class="content">
<div class="main" role="main">
<h1><?php echo $yellow->page->getHtml("titleContent") ?></h1>
<p><?php echo $yellow->page->getHtml("author") ?></p>
<?php echo $yellow->page->getContent() ?>
</div>
</div>

Hier ist ein Beispiel-Snippet um den Seiteninhalt und zusätzliche Tags anzuzeigen:

<div class="content">
<div class="main" role="main">
<h1><?php echo $yellow->page->getHtml("titleContent") ?></h1>
<?php echo $yellow->page->getContent() ?>
<?php if($yellow->page->isExisting("tag")): ?>
<p>
<?php foreach(preg_split("/\s*,\s*/", $yellow->page->get("tag")) as $tag): ?>
<?php if(++$tagCounter>1) echo ", "; echo htmlspecialchars($tag) ?>
<?php endforeach ?>
</p>
<?php endif ?>
</div>
</div>

Yellow-Page-Collection

Yellow-Page-Collection gibt Zugang zu diesen Funktionen:

$pages->filter($key, $value, $exactMatch = true)
Filtere eine Page-Collection nach Metadaten

$pages->match($regex = "/.*/")
Filtere eine Page-Collection nach Dateinamen

$pages->sort($key, $ascendingOrder = true)
Sortiere eine Page-Collection nach Metadaten

$pages->similar($page, $ascendingOrder = false)
Sortiere eine Page-Collection nach Metadatenähnlichkeit

$pages->merge($input)
Vereinige eine Page-Collection

$pages->append($page)
Hänge an das Ende der Page-Collection

$pages->prepend($page)
Stelle an den Anfang der Page-Collection

$pages->limit($pagesMax)
Begrenze die Anzahl der Seiten in der Page-Collection

$pages->reverse()
Drehe die Page-Collection um

$pages->shuffle()
Mach die Page-Collection zufällig

$pages->pagination($limit, $reverse = true)
Erstelle eine Pagination für die Page-Collection

$pages->getPaginationNumber()
Hole die aktuelle Seitennummer in der Pagination

$pages->getPaginationCount()
Hole die höchste Seitennummer in der Pagination

$pages->getPaginationLocation($absoluteLocation = true, $pageNumber = 1)
Hole den Ort einer Seite in der Pagination

$pages->getPaginationPrevious($absoluteLocation = true)
Hole den Ort der vorherigen Seite in der Pagination

$pages->getPaginationNext($absoluteLocation = true)
Hole den Ort der nächsten Seite in der Pagination

$pages->getPagePrevious($page)
Hole die vorherige Seite in der Page-Collection, null falls nicht vorhanden

$pages->getPageNext($page)
Hole die nächste Seite in der Page-Collection, null falls nicht vorhanden

$pages->getFilter()
Hole den aktuellen Seitenfilter

$pages->getModified($httpFormat = false)
Hole das Änderungsdatum der Page-Collection, Unix-Zeit oder HTTP-Format

$pages->isPagination()
Teste ob eine Pagination vorhanden ist

Hier ist ein Beispiel-Snippet um drei zufällige Seiten anzuzeigen:

<?php $pages = $yellow->pages->index() ?>
<ul>
<?php foreach($pages->shuffle()->limit(3) as $page): ?>
<li><?php echo $page->getHtml("title") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um die neusten Seiten anzuzeigen:

<?php $pages = $yellow->pages->index() ?>
<ul>
<?php foreach($pages->sort("modified", false) as $page): ?>
<li><?php echo $page->getHtml("title") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um Entwurfseiten anzuzeigen:

<?php $pages = $yellow->pages->index(true, true) ?>
<ul>
<?php foreach($pages->filter("status", "draft") as $page): ?>
<li><?php echo $page->getHtml("title") ?></li>
<?php endforeach ?>
</ul>

Yellow-Pages

Yellow-Pages gibt Zugang zu Seiten vom Dateisystem:

$yellow->pages->find($location, $absoluteLocation = false)
Hole eine Page vom Dateisystem, null falls nicht vorhanden

$yellow->pages->index($showInvisible = false, $multiLanguage = false, $levelMax = 0)
Hole eine Page-Collection mit allen Seiten

$yellow->pages->top($showInvisible = false)
Hole eine Page-Collection mit Hauptseiten der Navigation

$yellow->pages->path($location, $absoluteLocation = false)
Hole eine Page-Collection mit Pfad in der Navigation

$yellow->pages->multi($location, $absoluteLocation = false, $showInvisible = false)
Hole eine Page-Collection mit mehreren Sprachen

$yellow->pages->clean()
Hole eine Page-Collection die leer ist

Hier ist ein Beispiel-Snippet um alle Seiten anzuzeigen:

<?php $pages = $yellow->pages->index(true, true) ?>
<?php $yellow->page->setLastModified($pages->getModified()) ?>
<ul>
<?php foreach($pages as $page): ?>
<li><?php echo $page->getHtml("title") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um Seiten unterhalb einer bestimmten Orts anzuzeigen:

<?php $pages = $yellow->pages->find("/help/")->getChildren(true) ?>
<?php $yellow->page->setLastModified($pages->getModified()) ?>
<ul>
<?php foreach($pages as $page): ?>
<li><?php echo $page->getHtml("title") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um die Hauptseiten der Navigation anzuzeigen:

<?php $pages = $yellow->pages->top() ?>
<?php $yellow->page->setLastModified($pages->getModified()) ?>
<ul>
<?php foreach($pages as $page): ?>
<li><?php echo $page->getHtml("titleNavigation") ?></li>
<?php endforeach ?>
</ul>

Yellow-Files

Yellow-Files gibt Zugang zu Dateien vom Dateisystem:

$yellow->files->find($location, $absoluteLocation = false)
Hole eine Page mit Informationen über Mediendatei, null falls nicht vorhanden

$yellow->files->index($showInvisible = false, $multiPass = false, $levelMax = 0)
Hole eine Page-Collection mit allen Mediendateien

$yellow->files->clean()
Hole eine Page-Collection die leer ist

Hier ist ein Beispiel-Snippet um alle Mediendateien anzuzeigen:

<?php $files = $yellow->files->index(true) ?>
<?php $yellow->page->setLastModified($files->getModified()) ?>
<ul>
<?php foreach($files as $file): ?>
<li><?php echo $file->getLocation(true) ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um die neusten Mediendateien anzuzeigen:

<?php $files = $yellow->files->index(true)->sort("modified", false) ?>
<?php $yellow->page->setLastModified($files->getModified()) ?>
<ul>
<?php foreach($files as $file): ?>
<li><?php echo $file->getLocation(true) ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um Mediendateien eines bestimmten Types anzuzeigen:

<?php $files = $yellow->files->index(true)->filter("type", "pdf") ?>
<?php $yellow->page->setLastModified($files->getModified()) ?>
<ul>
<?php foreach($files as $file): ?>
<li><?php echo $file->getLocation(true) ?></li>
<?php endforeach ?>
</ul>

Yellow-Plugins

Yellow-Plugins gibt Zugang zu Plugins:

$yellow->plugins->get($name)
Hole ein Plugin

$yellow->plugins->getData()
Hole die Versionsinformationen von Plugins

$yellow->plugins->getModified($httpFormat = false)
Hole das Änderungsdatum von Plugins, Unix-Zeit oder HTTP-Format

$yellow->plugins->isExisting($name)
Teste ob ein Plugin existiert

Hier ist ein Beispiel-Snippet um Informationen über Plugins anzuzeigen:

<ul>
<?php foreach($yellow->plugins->getData() as $key=>$value): ?>
<li><?php echo htmlspecialchars("$key $value") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um zu testen ob ein Plugin existiert:

<div class="plugins">
<?php $blog = $yellow->plugins->isExisting("blog") ?>
Blog plugin <?php echo htmlspecialchars($blog ? "" : "not") ?> installed.
</div>

Hier ist ein Beispiel-Snippet um sicherzustellen dass ein Plugin existiert:

<?php if($yellow->plugins->isExisting("fontawesome")): ?>
<a href="https://twitter.com/username"><i class="fa fa-twitter"></i></a>
<?php else: ?>
<?php $yellow->page->error(500, "Snippet requires 'fontawesome' plugin!") ?>
<?php endif ?>

Yellow-Themes

Yellow-Themes gibt Zugang zu Themes:

$yellow->themes->get($name)
Hole ein Theme

$yellow->themes->getData()
Hole die Versionsinformationen von Themes

$yellow->themes->getModified($httpFormat = false)
Hole das Änderungsdatum von Themes, Unix-Zeit oder HTTP-Format

$yellow->themes->isExisting($name)
Teste ob ein Theme existiert

Hier ist ein Beispiel-Snippet um Informationen über Themes anzuzeigen:

<ul>
<?php foreach($yellow->themes->getData() as $key=>$value): ?>
<li><?php echo htmlspecialchars("$key $value") ?></li>
<?php endforeach ?>
</ul>

Hier ist ein Beispiel-Snippet um zu testen ob ein Theme existiert:

<div class="themes">
<?php $stockholm = $yellow->themes->isExisting("stockholm") ?>
Stockholm theme <?php echo htmlspecialchars($stockholm ? "" : "not") ?> installed.
</div>

Hier ist ein Beispiel-Snippet um sicherzustellen dass ein Theme existiert:

<?php if($yellow->themes->isExisting("flatsite")): ?>
<p>Flatsite theme installed.</p>
<?php else: ?>
<?php $yellow->page->error(500, "Snippet requires 'flatsite' theme!") ?>
<?php endif ?>

Yellow-Config

Yellow-Config gibt Zugang zu Einstellungen :

$yellow->config->get($key)
Hole eine Einstellung

$yellow->config->getHtml($key)
Hole eine Einstellung, HTML-kodiert

$yellow->config->getData($filterStart = "", $filterEnd = "")
Hole Einstellungen

$yellow->config->getModified($httpFormat = false)
Hole das Änderungsdatum von Einstellungen, Unix-Zeit oder HTTP-Format

$yellow->config->isExisting($key)
Teste ob eine Einstellung existiert

Hier ist ein Beispiel-Snippet um statische Webseiten-Einstellungen anzuzeigen:

<div class="config">
<?php foreach($yellow->config->getData("static") as $key=>$value): ?>
<?php echo htmlspecialchars("$key: $value") ?><br />
<?php endforeach ?>
</div>

Hier ist ein Beispiel-Snippet um Webmaster-Einstellungen anzuzeigen:

<div class="config">
<?php $author = $yellow->config->get("author") ?>
<?php $email = $yellow->config->get("email") ?>
<?php echo htmlspecialchars("$author - $email") ?>
</div>

Hier ist ein Beispiel-Snippet um zu testen ob der sichere Modus aktiviert ist:

<div class="config">
<?php $safeMode = $yellow->config->get("safeMode") ?>
Safe mode is <?php echo htmlspecialchars($safeMode ? "on" : "off") ?>.
</div>

Yellow-Text

Yellow-Text gibt Zugang zu Text:

$yellow->text->get($key)
Hole ein Textstring

$yellow->text->getHtml($key)
Hole ein Textstring, HTML-kodiert

$yellow->text->getText($key, $language )
Hole ein Textstring für eine bestimmte Sprache

$yellow->text->getTextHtml($key, $language )
Hole ein Textstring für eine bestimmte Sprache, HTML-kodiert

$yellow->text->getData($filterStart = "", $language = "")
Hole Textstrings

$yellow->text->getLanguages()
Hole Sprachen

$yellow->text->getModified($httpFormat = false)
Hole das Änderungsdatum von Text, Unix-Zeit oder HTTP-Format

$yellow->text->isLanguage($language)
Teste ob eine Sprache existiert

$yellow->text->isExisting($key, $language = "")
Teste ob ein Textstring existiert

Hier ist ein Beispiel-Snippet um Kontakt-Textstrings anzuzeigen:

<div class="text">
<?php foreach($yellow->text->getData("contact") as $key=>$value): ?>
<?php echo htmlspecialchars("$key: $value") ?><br />
<?php endforeach ?>
</div>

Hier ist ein Beispiel-Snippet um zu testen ob eine Sprache existiert:

<div class="text">
<?php $swedish = $yellow->text->isLanguage("sv") ?>
Swedish language <?php echo htmlspecialchars($swedish ? "" : "not") ?> installed.
</div>

Hier ist ein Beispiel-Snippet um Sprachen und Übersetzer anzuzeigen:

<div class="text">
<?php foreach($yellow->text->getLanguages() as $language): ?>
<?php echo $yellow->text->getTextHtml("languageDescription", $language) ?> - 
<?php echo $yellow->text->getTextHtml("languageTranslator", $language) ?><br />
<?php endforeach ?>
</div>

Yellow-Toolbox

Yellow-Toolbox gibt Zugang zur Werkzeugkiste mit Helfern:

$yellow->toolbox->getLocation($filterStrict = true)
Hole den Ort der aktuellen HTTP-Anfrage

$yellow->toolbox->getLocationArgs()
Hole die Ortargumente der aktuellen HTTP-Anfrage

$yellow->toolbox->isLocationArgs($location = "")
Teste ob es Ortargumente gibt in der aktuellen HTTP-Anfrage

$yellow->toolbox->normaliseArgs($text, $appendSlash = true, $filterStrict = true)
Normalisiere Ortargumente

$yellow->toolbox->getDirectoryEntries($path, $regex = "/.*/", $sort = true, $directories = true, $includePath = true)
Hole Dateien und Verzeichnisse

$yellow->toolbox->readFile($fileName, $sizeMax = 0)
Lese eine Datei, leerer String falls nicht vorhanden

$yellow->toolbox->createFile($fileName, $fileData, $mkdir = false)
Erstelle eine Datei

$yellow->toolbox->copyFile($fileNameSource, $fileNameDestination, $mkdir = false)
Kopiere eine Datei

$yellow->toolbox->renameFile($fileNameSource, $fileNameDestination, $mkdir = false)
Benenne eine Datei um

$yellow->toolbox->renameDirectory($pathSource, $pathDestination, $mkdir = false)
Benenne ein Verzeichnis um

$yellow->toolbox->deleteFile($fileName, $pathTrash = "")
Lösche eine Datei

$yellow->toolbox->deleteDirectory($path, $pathTrash = "")
Lösche ein Verzeichnis

$yellow->toolbox->modifyFile($fileName, $modified)
Setze das Änderungsdatum der Datei, Unix-Zeit

$yellow->toolbox->getFileModified($fileName)
Hole das Änderungsdatum der Datei, Unix-Zeit

$yellow->toolbox->getTextLines($text)
Hole die Zeilen eines Textstrings, einschließlich Zeilenumbruch

$yellow->toolbox->getTextArgs($text, $optional = "-")
Hole die Argumente eines Textstrings, durch Leerzeichen getrennt

Hier ist ein Beispiel-Snippet um Ort und Argumente der HTTP-Anfrage anzuzeigen:

<div class="toolbox">
<?php echo htmlspecialchars($yellow->toolbox->getLocation()) ?><br />
<?php foreach($_REQUEST as $key=>$value): ?>
<?php echo htmlspecialchars("$key: $value") ?><br />
<?php endforeach ?>
</div>

Hier ist ein Beispiel-Snippet um Dateien in einem Verzeichnis anzuzeigen:

<div class="toolbox">
<?php $path = $yellow->config->get("configDir") ?>
<?php foreach($yellow->toolbox->getDirectoryEntries($path, "/.*/", true, false) as $entry): ?>
<?php echo htmlspecialchars($entry) ?><br />
<?php endforeach ?>
</div>

Hier ist ein Beispiel-Snippet um Textzeilen von Datei zu lesen:

<div class="toolbox">
<?php $fileName = $yellow->config->get("configDir").$yellow->config->get("robotsFile") ?>
<?php $fileData = $this->yellow->toolbox->readFile($fileName) ?>
<?php foreach($this->yellow->toolbox->getTextLines($fileData) as $line): ?>
<?php echo htmlspecialchars($line) ?><br />
<?php endforeach ?>
</div>

Ereignisse

Die folgenden Ereignisse sind vorhanden:

onLoad ─────▶ onStartup ─────▶ onRequest
                  │                │
                  │                ├──────────────────────┐
                  │                │                      │
                  ▼                ▼                      ▼
              onCommand        onParseMeta             onEditUserRestrictions
              onCommandHelp    onParseContentRaw       onEditUserAccount
                  │            onParseContentShortcut  onEditContentFile
                  │            onParseContentText      onEditMediaFile
                  │            onParsePageTemplate        │
                  │            onParsePageExtra           │
                  │            onParsePageOutput          │
                  ▼                │                      │
exit ◀─────── onShutDown ◀─────────┴──────────────────────┘

Wird eine Seite angezeigt, dann werden die Plugins geladen und es wird onLoad aufgerufen. Sobald alle Plugins geladen sind wird onStartup aufgerufen. Danach informiert der Core mit onRequest dass es eine Anfrage gibt. Die Seite kann mit verschiedenen onParse-Ereignisse analysiert werden. Dann wird der Quellcode der Seite mit Hilfe von Templates und Snippets erzeugt. Sollte ein Fehler auftreten, wird eine Fehlerseite erzeugt. Zum Schluss wird die Seite ausgegeben und es wird onShutdown aufgerufen.

Wird eine Seite bearbeitet, dann werden die Plugins geladen und es wird onLoad aufgerufen. Sobald alle Plugins geladen sind wird onStartup aufgerufen. Danach informiert der Core mit onRequest dass es eine Anfrage gibt, welche vom Edit-Plugin behandelt wird. Änderungen an der Seite können mit verschiedenen onEdit-Ereignisse überprüft werden. Dann wird die Seite im Dateisystem gespeichert. Zum Schluss wird ein Statuscode zum Neuladen der Seite ausgegeben und es wird onShutdown aufgerufen.

Wird ein Befehl ausgeführt, dann werden die Plugins geladen und es wird onLoad aufgerufen. Sobald alle Plugins geladen sind wird onStartup aufgerufen. Danach informiert der Core mit onCommand dass es einen Befehl gibt, welcher vom entsprechenden Plugin behandelt wird. Sollte kein Befehl an der Befehlszeile eingegeben worden sein, dann wird onCommandHelp aufgerufen und Plugins können eine Hilfe zur Verfügung stellen. Zum Schluss wird ein Rückgabecode ausgegeben und es wird onShutdown aufgerufen.

Yellow-Core-Ereignisse

Yellow-Core-Ereignisse unterrichten wenn sich ein Zustand ändert:

public function onLoad($yellow)
Behandle die Initialisierung

public function onStartup($update)
Behandle das Hochfahren

public function onRequest($scheme, $address, $base, $location, $fileName)
Behandle die Anfrage

public function onParseMeta($page)
Behandle die Metadaten einer Seite

public function onParseContentRaw($page, $text)
Behandle den Seiteninhalt im Rohformat

public function onParseContentShortcut($page, $name, $text, $type)
Behandle den Seiteninhalt einer Abkürzung

public function onParseContentText($page, $text)
Behandle den Seiteninhalt

public function onParsePageTemplate($page, $name)
Behandle das Template einer Seite

public function onParsePageExtra($page, $name)
Behandle die Extradaten einer Seite

public function onParsePageOutput($page, $text)
Behandle die Ausgabedaten einer Seite

public function onShutdown()
Behandle das Runterfahren

Hier ist ein Beispiel-Plugin um eine [example]-Abkürzung zu behandeln:

<?php
class YellowExample {
    const VERSION = "0.1.1";
    public $yellow;         //access to API

    // Handle initialisation
    public function onLoad($yellow) {
        $this->yellow = $yellow;
    }

    // Handle page content of shortcut
    public function onParseContentShortcut($page, $name, $text, $type) {
        $output = null;
        if ($name=="example" && ($type=="block" || $type=="inline")) {
            $output = "<div class=\"".htmlspecialchars($name)."\">";
            $output .= "Add more HTML code here";
            $output .= "</div>";
        }
        return $output;
    }
}

Yellow-Edit-Ereignisse

Yellow-Edit-Ereignisse unterrichten wenn eine Seite bearbeitet wird:

public function onEditUserRestrictions($email, $location, $fileName, $users)
Behandle Benutzerbeschränkungen

public function onEditUserAccount($email, $password, $action, $users)
Behandle Änderungen am Benutzerkonto

public function onEditContentFile($page, $action)
Behandle Änderungen an Inhaltsdatei

public function onEditMediaFile($file, $action)
Behandle Änderungen an Mediendatei

Hier ist ein Beispiel-Plugin um Schreibrechte von bestimmten Benutzern zu beschränken:

<?php
class YellowExample {
    const VERSION = "0.1.2";
    public $yellow;         //access to API

    // Handle initialisation
    public function onLoad($yellow) {
        $this->yellow = $yellow;
    }

    // Handle user restrictions
    public function onEditUserRestrictions($email, $location, $fileName, $users) {
        return $users->getHome($email)=="/guests/";
    }
}

Yellow-Command-Ereignisse

Yellow-Command-Ereignisse unterrichten wenn ein Befehl ausgeführt wird:

public function onCommand($args)
Behandle Befehle

public function onCommandHelp()
Behandle Hilfe für Befehle

Hier ist ein Beispiel-Plugin um einen Befehl zu behandeln:

<?php
class YellowExample {
    const VERSION = "0.1.3";
    public $yellow;         //access to API

    // Handle initialisation
    public function onLoad($yellow) {
        $this->yellow = $yellow;
    }

    // Handle command help
    public function onCommandHelp() {
        return "example\n";
    }

    // Handle command
    public function onCommand($args) {
        $statusCode = 0;
        list($command) = $args;
        if ($command=="example") {
            echo "Yellow $command: Add more text here\n";
            $statusCode = 200;
        }
        return $statusCode;
    }
}

Formate

Wird ein Datum auf einer Seite angezeigt wird es in ein sprachspezifisches Format konvertiert:

dateFormatShort = kurzes Datum, z.B. April 2013
dateFormatMedium = mittleres Datum, z.B. 07.04.2013
dateFormatLong = langes Datum, z.B. 07.04.2013 11:30

timeFormatShort = kurze Zeit, z.B. 11:30
timeFormatMedium = mittlere Zeit, z.B. 11:30:01
timeFormatLong = lange Zeit, z.B. 11:30:01 GMT+1

Hier ist ein Beispiel-Snippet um ein Datum anzuzeigen:

<div class="content">
<div class="main" role="main">
<h1><?php echo $yellow->page->getHtml("titleContent") ?></h1>
<p><?php echo $yellow->page->getDateHtml("modified", "dateFormatMedium") ?></p>
<?php echo $yellow->page->getContent() ?>
</div>
</div>

Hier ist ein Beispiel-Snippet um ein Datum anzuzeigen wie gestern oder vor 14 Tagen:

<div class="content">
<div class="main" role="main">
<h1><?php echo $yellow->page->getHtml("titleContent") ?></h1>
<p><?php echo $yellow->page->getDateRelativeHtml("modified") ?></p>
<?php echo $yellow->page->getContent() ?>
</div>
</div>

Wird Text auf einer Seite ausgegeben kann man diese Kodierungs-Funktionen benutzen:

htmlspecialchars($string) = kodiere Textstring ins HTML-Format
rawurlencode($string) = kodiere URL, z.B. Hyperlink-Argumente
strencode($string) = kodiere String, z.B. JavaScript-Argumente

Hier ist ein Beispiel-Snippet um HTML-Argumente zu kodieren:

<?php list($name, $class) = $yellow->getSnippetArgs() ?>
<?php if(empty($class)) $class = "regular" ?>
<img src="https://unsplash.it/210/140/?random" class="<?php echo htmlspecialchars($class) ?>" />

Hier ist ein Beispiel-Snippet um Hyperlink-Argumente zu kodieren:

<?php list($name, $id) = $yellow->getSnippetArgs() ?>
<?php if(empty($id)) $id = "821" ?>
<img src="https://unsplash.it/210/140/?image=<?php echo rawurlencode($id) ?>" />

Hier ist ein Beispiel-Snippet um JavaScript-Argumente zu kodieren:

<?php list($name, $message) = $yellow->getSnippetArgs() ?>
<?php if(empty($message)) $message = "Hello world" ?>
<script type="text/javascript">
console.log("<?php echo strencode($message) ?>");
</script>

Fehlersuche

Öffne system/plugins/core.php, ändere die erste Zeile zu <?php define("DEBUG", 1);

YellowCore::sendPage Cache-Control: max-age=60
YellowCore::sendPage Content-Type: text/html; charset=utf-8
YellowCore::sendPage Page-Modified: Sat, 15 Jul 2017 12:19:01 GMT
YellowCore::sendPage Last-Modified: Thu, 19 Apr 2018 06:25:14 GMT
YellowCore::sendPage theme:flatsite template:blogpages parser:markdown
YellowCore::processRequest file:content/1-en/2-plugins/1-blog/page.md
YellowCore::request status:200 handler:core time:19 ms

Dateisysteminformationen durch Erhöhen des Debuglevels zu <?php define("DEBUG", 2);

Datenstrom Yellow 0.8.1, PHP 7.1.16, Apache/2.4.33 Darwin
YellowConfig::load file:system/config/config.ini
YellowUsers::load file:system/config/user.ini
YellowText::load file:system/plugins/language-de.txt
YellowText::load file:system/plugins/language-en.txt
YellowText::load file:system/plugins/language-fr.txt
YellowText::load file:system/config/text.ini

Maximum Informationen durch Erhöhen des Debuglevels zu <?php define("DEBUG", 3);

Datenstrom Yellow 0.8.1, PHP 7.1.16, Apache/2.4.33 Darwin
YellowConfig::load file:system/config/config.ini
YellowConfig::load Sitename:Datenstrom developers
YellowConfig::load Author:Datenstrom
YellowConfig::load Email:webmaster
YellowConfig::load Language:en
YellowConfig::load Timezone:Europe/Stockholm
YellowConfig::load Theme:flatsite

Wir führen automatisierte Tests und Code-Analysen durch.

Weiter: Themes anpassen →