Der Redaktionsassistent dient zur Verwaltung von Artikeln in einer separaten yform Tabelle. Dabei bleiben die Inhalte wie gehabt in REDAXO Artikeln. Die Tabelle im Redaktionsassistenten kann zum schnellen Zugriff auf Artikel genutzt werden. Sie lässt sich für Notizen zum Bearbeitungsstand verwenden und man kann schnell den aktuellen Stand aller Artikel einsehen und filtern. Insbesondere für Seiten, die Inhalte wie Blogartikel darstellen, kann der Redaktionsassistent wertvolle Dienste leisten. Die Tabelle kann um eigene Felder erweitert werden.
Voraussetzung für die Verwendung des Redaktionsassistenten sind die Standard Metainfo Felder für den Artikel art_online_from, art_online_to und art_description. Wenn diese noch nicht vorhanden sind, werden sie bei der Installation des Redaktionsassistenten angelegt. Weiterhin wird das AddOn structure_plus vorausgesetzt. In diesem AddOn wird die Farbeinstellung für die Darstellung (geplant, Veröffentlichung in der Zukunft, online, offline, abgelaufen) konfiguriert. Der Status gesperrt wird berücksichtigt, wenn das AddOn accessdenied eingesetzt wird.
Der Redaktionsassistent vergibt für jeden Artikel eine eigene Id. Dies ist nicht die Artikel-Id des REDAXO Artikels sondern die Id des Datensatzes der yform Tabelle vom Redaktionsassistent. Durch die eigene Rewriter Klasse wird diese Id an die Url angehängt. Damit können auch Artikel mit gleichem Namen verwendet werden. Es entsteht kein Konflikt bei Artikeln mit gleichem Namen.
Damit REDAXO Artikel für die Verwaltung im Redaktionsassistenten verfügbar sind, müssen sie über die Funktion "Artikel anlegen" im jeweiligen Datensatz vom Redaktionsassistenten angelegt werden. Wenn ein Artikel über den Redaktionsassistent angelegt ist, kann er direkt aus der Liste zur Bearbeitung geöffnet werden.
Ein Artikel, der über den Redaktionsassistenten angelegt wurde, kann wie ein normaler REDAXO Artikel bearbeitet werden. Er kann auch verschoben oder umbenannt werden. Auch der Wert im art_online_from Feld kann direkt im Artikel geändert werden. Die Änderungen werden in den Datensatz des Redaktionsassistenten synchronisiert.
Für die Ausgabe gibt es Helper Funktionen. Diese sind als Vorlage gedacht und können den eigenen Projektanforderungen angepasst werden.
Zunächst dass structure_plus AddOn installieren, anschließend den Redaktionsassistenten installieren. Jeweils hierfür das Repository herunterladen und in das AddOn Verzeichnis kopieren. Sobald das AddOn ausreichend getestet und entwickelt ist, kommt es auch in den Installer. Im structure_plus AddOn die gewünschten Farben einstellen.
Mit dem Redaktionsassistenten wird eine weitere yform Tabelle installiert. Diese Tabelle kann verwendet werden, um unterschiedliche Artikelarten zu definieren. Zu jeder Artikelart kann zusätzlich entweder ein REDAXO Template oder ein REDAXO Artikel zugeordnet werden. Wenn ein Artikel zugeordnet wird, so wird dieser als Vorlage bei der Erstellung eines neuen Artikels verwendet. Dabei werden alle Inhalte des Vorlagenartikels in den neuen Artikel übernommen.
Ist nicht getestet.
Mit diesem Code im Modul des Startartikels einer Kategorie bekommt man eine Liste mit Artikelobjekten. In dieser Liste ist bereits berücksichtigt: art_online_from, art_online_to und status. Der Startartikel der Kategorie ist in der Liste nicht enthalten.
$articles = ra_helper::find_newest_articles(0, rex_category::getCurrent()->getId());
dump($articles);
- Menüpunkt "Redaktionsassistent" aufrufen
- neuen Datensatz anlegen
- Zielkategorie auswählen
- Name eintragen
- Datensatz übernehmen (Verwaltungs Id wird angelegt)
- Artikel anlegen
Der Redaktionsassistent ist dafür gedacht, Arbeitsdatensätze zunächst im Redaktionsassistenten anzulegen und anschließend über den Redaktionsassistenten den REDAXO Artikel anzulegen.
Es kann aber Gründe geben, dass vorhandene REDAXO Artikel dem Redaktionsassistenten hinzugefügt werden sollen. Das kann der Fall sein, wenn der Redaktionsassistent in ein bereits existierende Seite installiert wird. Möglicherweise hat auch jemand versehentlich einen REDAXO Artikel ohne Redaktionsassistent angelegt und dieser soll trotzdem über den Redaktionsassistent verwaltet werden.
Hierfür verfügt der Redaktionsassistent über eine eigene Seite "Artikel zuordnen". Es werden dort nur Artikel aufgelistet, die auch über den Redaktionsassistent verwaltet werden können. Es werden keine Startartikel aufgeführt und es werden auch keine Artikel aufgeführt, die bereits über den Redaktionsassistent verwaltet werden.
Mit den Checkboxen bzw. mit dem Button "Alle markieren" können jene Artikel markiert werden, die in den Redaktionsassistenten aufgenommen werden sollen. Mit einem Klick auf den Button "Markierte Artikel zuordnen" geht es los.
In den Datensatz des Redaktionsassistenten werden übernommen: Name des Artikels, Kategorie, art_online_from und Status.
Anschließend kann der Artikel auch über den Redaktionsassistenten aufgerufen werden.
Die Ausgabe der Artikel erfolgt ganz normal über Module. In den Übersichten können Funktionen aus dem Redaktionsassistenten verwendet werden. Somit kann auch bei der Ausgabe eine automatische Sortierung nach Online-Datum (oder einem anderen Feld) umgesetzt werden.
Folgender vereinfachter Modulcode kann als Blaupause verwendet werden:
<?php
$articles = ra_helper::find_newest_articles(0, rex_category::getCurrent()->getId());
?>
<ul>
<?php foreach ($articles as $art) : ?>
<li>
<p><?= date('d.m.Y', $art->getValue('art_online_from'))) ?></p>
<h3><?= $art->getName() ?></h3>
<p><?= $art->getValue('art_description') ?></p>
<p><a href="<?= $art->getUrl() ?>">Mehr erfahren ...</a></p>
</li>
<?php endforeach ?>
</ul>Für die Ausgabe steht ein einfaches Yorm Objekt zur Verfügung, welches in eigenen Funktionen und Erweiterungen genutzt werden kann.
Angenommen, es wird in der Verwaltungstabelle des Redaktionsassistenten ein zusätzliches Feld important als Checkbox hinzugefügt, kann folgender Modulcode auf der Startseite die wichtigsten Teaser anzeigen:
<?php
// Yorm Query holen
$query = ra_helper::get_ra_query();
// Query erweitern
$query
->orderBy('important', 'desc')
->orderBy('art_online_from', 'desc')
;
$query->limit(0,3);
// Daten holen
$items = $query->find();
?>
<ul>
<?php foreach ($items as $item) : ?>
<li>
<p><?= date('d.m.Y', $item->rex_art_online_from) ?></p>
<h3><?= $item->name ?></h3>
<p><?= $item->rex_art_description ?></p>
<p><a href="<?= rex_getUrl($item->rex_article) ?>">Mehr erfahren ...</a></p>
</li>
<?php endforeach; ?>
</ul>Bei letzterem Modulcode werden die wichtigsten Artikel bevorzugt (durch die Sortierung important = desc). Anschließend wird mit den neuesten Artikel auf die gewünschte Anzahl von 3 Einträgen (limit(0,3)) aufgefüllt. Das Yorm Objekt berücksichtigt bereits art_online_from, art_online_to und status. Da es als Query zur Verfügung steht, kann es über beliebige Yorm Funktionen erweitert werden.
In den Einstellungen kann festgelegt werden, dass die Path Einträge in der REDAXO Artikel Tabelle neu gesetzt werden. Dies sollte nur im Ausnahmefall notwendig sein. Die Artikelstruktur bleibt dabei erhalten.
Weiterhin kann der Redaktionsassistent für weitere Verwendungszwecke konfiguriert werden. Mit der Version 1.1 sind neue Einstellungsmöglichkeiten hinzu gekommen. Die Verwendung sollte aber vollkommen kompatibel zu Vorversionen sein. Dennoch rate ich bei einem Update zu einer Datensicherung und gründlichen Tests.
Mit dem Feld "Multikategoriemodus" ist es möglich einen Artikel mehreren Redaxo Kategorien zuzuweisen. Die erste Auswahl Kategorie bleibt als Single Select erhalten. Damit wird die Kategorie festgelegt, in der der Artikel in der Redaxo Struktur angelegt wird. Im Feld "Kategorien für die Veröffentlichung" können dann mehrere Kategorien aus dem Redaxo Strukturbaum ausgewählt werden. Diese Einstellung wird in der Datentabelle des Redaktionsassistenten im Feld publish_categories gespeichert. Auf dieses Eintrag kann dann zugegriffen werden, um den Artikel auszugeben.
Dann kann beispielsweise dieser Mustercode verwendet werden:
<?php
// Liste aus Redaktionsassistent holen
$current_category_id = rex_category::getCurrent()->getId();
$query = rex_yform_manager_table::get(rex::getTable('redaktionsassistent'))->query();
$query
->where('rex_article', 0, '>')
->whereListContains('publish_categories', $current_category_id)
;
$article_list = $query->find();
// Artikelliste bilden.
// status online berücksichtigen
// Sortierung online_from
$rex_articles = [];
$online_from = [];
foreach ($article_list as $ra_data) {
$rex_article = rex_article::get($ra_data->rex_article);
if (!$rex_article->getValue('status') == 1) {
continue;
}
if ((int) $rex_article->getValue('art_online_from') > time() || $rex_article->getValue('art_online_from') < 0) {
// online from berücksichtigen
continue;
}
if ($rex_article->getValue('art_online_to') && $rex_article->getValue('art_online_to') < time()) {
// online to berücksichtigen
continue;
}
$rex_articles[] = $rex_article;
$online_from[] = $rex_article->getValue('art_online_from');
}
// neueste Artikel oben
array_multisort($online_from, SORT_ASC, $rex_articles);
?>
<ul>
<?php foreach ($rex_articles as $article) : ?>
<li>
<p><?= date('d.m.Y', $article->getValue('art_online_from')) ?></p>
<h3><?= $article->getName() ?></h3>
<a href="<?= rex_getUrl($article->getId()) ?>">mehr ...</a>
</li>
<?php endforeach ?>
</ul>Wenn der Code in einem Modul untergebracht wird, so muss auf jeder Seite (Kategorieübersicht), auf der Artikelverweise des Redaktionsassistenten ausgegeben werden sollen das Modul eingebaut werden. Der Code kann aber auch im Template eingebaut werden.
Für den Redaktionsassistenten steht nun auch ein eigener Rewriter zur Verfügung. Um hier den Redaktionsassistenten mit dem Addon yrewrite_scheme kompatibel zu halten, musste der Redaktionsassistent den Parameter load: late bekommen.
Der Rewriter kann in den Settings konfiguriert werden. Die Artikel erhalten dann die entsprechende Url.
Über die Tabelle rex_redaktionsassistent können zusätzliche eigene Felder verwaltet werden.
Beispiel: Es soll ein Autorenfeld integriert werden, über das einem Redaktionsassistentendatensatz mehrere Autoren hinzugefügt werden können. Die Autoren sollen per Drag and drop sortierbar sein. Hierfür muss eine entsprechende Autorentabelle bereits angelegt sein. Außerdem muss das super Addon relation_select installiert sein. Dann macht man in der Tabelle rex_redaktionsassistent ein neues Textfeld und gibt diesem beispielsweise folgende individuelle Konfiguration:
{"data-relation-mode":"modal","data-relation-config":"{\"table\": \"rex_autoren\",\"valueField\": \"id\",\"labelField\": \"anrede|vorname|nachname\"}"}
Wenn man Tags nutzen will, so muss auch hierfür eine Tabelle angelegt werden. Dann macht man in der Tabelle rex_redaktionsassistent darauf eine be_relation mit Multiple Select.
Dann gibt man diesem Feld das individuelle Attribut {"id":"tagselect2"}.
- flexible Synchronisation weiterer Metainfos implementieren (z.B. für besondere Hervorhebung bzw. Ausgabe auf der Startseite usw.).
- Yakamara für REDAXO!
- Polarpixel für das gemeinsame Projekt, das dieses AddOn initiiert und zum Teil finanziert hat
- Der Community für die großartige Unterstützung in allen Lebenslagen (es wären zu viele Namen um alle zu nennen)
- Christoph Böcker für den coolen Tipp https://friendsofredaxo.github.io/tricks/addons/yform/im-addon
- Kunden Felix & Oliver für die coole Idee und die kooperative Entwicklung
