Development: Contenido
Die Klassen Article und ArticleCollection
Diese erleichtern das Entwickeln der Module erheblich.
Dieser Artikel befasst sich mit der Contenido-API Klassen Article und ArticleCollection,
die für die Erzeugung von Artikellisten gedacht sind.
Grundkenntnisse in Objektorientierter Programmierung werden benötigt.
Die Klasse Article
Diese Klasse erleichtert den Zugriff auf Artikel und deren Eigenschaften.
Zur Erzeugung eines Objektes der Klasse Article werden 3 Parameter benötigt. Diese sind:
Code:
$idart // Die Artikel Id
$client // Mandanten Id
$lang // Sprach Id
Das Artikelobjekt wird mit dem operator new instanziert.
Code:
$meinArtikel = new Article(23, 1, 1);
Das Objekt hat nun alle Daten des Artikels mit der Id 23, Mandant 1, Sprache 1 gespeichtert.
Um die Daten zu extrahieren besitzt das Objekt 2 Methoden get und getContent.
get wird benutzt um die Artikel Eigenschaften zu extrahieren, diese sind in der Contenido Systemtabelle ´con_art_lang´ definiert.
Code:
// Artikeltitel extrahieren
$titel = $meinArtikel->get("title");
// Artikelzusammenfassung extrahieren
$zusammenfassung = $meinArtikel->get("summary");
// Artikel Id extrahieren
$idart = $meinArtikel->get("idart");
Alle Informationen, die im Fenster Arikeleigentschaften definiert sind, können mit der Methode get extrahiert werden.
getContent wird benutzt um den Artikelinhalt zu extrahieren. Dieser setzt sich in der Regel aus verschiedenen Text und Headline Elementen zusammen..
Als ersten Parameter erwartet getContent die Angabe des Contenido CMS Typs als String. Gültige Typen sind in der Systemtabelle ´con_type´ definiert.
Standard sind: head, text, html, htmlhead, img, imgdescr, link, linktarget, linkdescr, swf
Die Methode verarbeitet die Kurzform html ebenso wie cms_html
Gross- und Kleinschreibung müssen nicht beachtet werden.
Code:
$text = $meinArtikel->getContent("html", 1);
$headline = $meinArtikel->getContent("htmlhead", 1); Die Angabe des zweiten Parameters ist optional, er definiert die Id des Content-Elementes.
Also 1 für das erste Content-Element des angeforderten typs, 2 für das zweite, usw..
Wird er weggelassen liefert die Methode ein Array mit allen Elementen des angeforderten Typs zurück.
Code:
$alleHeadlines = $meinArtikel->getContent("htmlhead");
$alleHeadlines[1] // Erste headline
$alleHeadlines[2] // Zweite headlineDie Klasse ArticleCollection
Diese Klasse verwaltet mehrere Objekte des Typs Article in einer Sammlung (engl. Collection).
Code:
$artikelListe = new ArticleCollection(array("idcat"=>12)); Als Parameter erwartet diese Klasse ein assoziatives Array mit Optionen.
Code:
array("idcat"=>12,
"client"=>1,
"lang"=>1,
"start"=>false,
"order"=>"title",
"direction"=>"asc"); idcat Muss angegeben werden
client Optional, standard ist der aktive Mandant
lang Optional, standard ist die aktive Sprache
start Sollen Startartikel extrahiert werden, standard ist aus
order Entspricht den Feldnamen der Tabelle ´con_art_lang´ nach dem sortiert werden soll
direction ´asc´ / ´desc´ für auf- oder absteigende Sortierung
Die Klasse ArticleCollection bestitzt die Methoden nextArticle und startArticle. Beide Methoden erwarten keinen Parameter.
nextArticle liefert ein Objekt der Klasse Article zurück, false wenn kein Objekt mehr in der Sammlung ist.
Code:
while ($artikel = $artikelListe->nextArticle())
{
echo $artikel->get("title");
}
startArticle liefert ein Objekt der Klasse Article für den Startartikel zurück.
Code:
$startartikel = $artikelListe->startArticle();
Artikellisten-Modul mit den Klassen Article und ArticleCollection
Hier der Beispiel Code für ein Artikellisten-Modul für die Contenido Beispiel Seite:
Code:
/**
* Beispiel eines Artikellisten-Modules
* mit Hilfe der Contenido-API Klassen.
*
* Jan Lengowski / four for business AG
*/
// Artikellisten Optionen einstellen
// Idcat ist ein MUSS feld, array("idcat"=>n);
$articleListOptions = array("idcat" => 12, // Idcat (Muss angegeben werden)
"lang" => $lang, // Sprach id (optional), standard ist die aktive Sprache
"client"=> $client, // Mandant id (optional), standard ist der aktive Mandant
"start" => true, // Startartikel
"order" => "created", // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang'
"direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc')
// Artikellisten Objekt erzeugen
$articleList = new ArticleCollection($articleListOptions);
// Artikelliste mit Head1, Head2 und HTML1 ausgeben
while ($article = $articleList->nextArticle())
{
$head1 = $article->getContent('htmlhead', 1);
$head2 = $article->getContent('htmlhead', 2);
$html1 = $article->getContent('html', 1);
echo $head1 . "
";
echo $head2 . "
";
echo $html1 . "
";
}
?>
Diese 2 Contenido-API Klassen sind ein mächtiges Werkzeug für den Contenido-Entwickler.
Sie ermöglichen einfachen Zugriff auf Artikel-Content in jeder Sprache und für jeden Mandanten.
Somit sind mehrsprachige Artikellisten, Mandantenübergreifender Content etc.. möglich.
Falls sie noch mehr Informationen wünschen, entnehmen Sie diese bitte der Contenido-API Dokumentation.
Tags: -
Verwandte Artikel:
- Gibt es in Contenido eine Debug Funktion ?
- Zwei unterschiedliche Styles für den Contentbereich (text/html) und die Navigation?
- Hallo Freunde der leichten Unterhaltung Ich habe folgendes Problem. Im Forum konnte mir bis jetzt keiner Helfen. Vieleicht habe ich ja Glück und es weiss einer von euch. Ich habe ein Contenido-Projekt angefangen. Alles 1A Funktioniert. Auch drei Sprachen alles super. Jetzt folgende Frage: Ich habe folgendes Artikel-Modul benutzt - siehe unten. Wenn ich im Russischen Bereich des CMS einen Artikel erstelle kommt in den Teasern Textsalat raus ... Überall nimmt er die Sprache nur in dem Teaser nicht. Kann mir da einer kurz Helfen oder sagen wodran es liegt? Beste Grüße A. Schmidt --------- CMS ------------------------------------------------------------- Contenido - Web Content Management System Release: 4.6.8 -------- ARTIKEL MODUL ----------------------------------------------- Modul: Article List Advanced V4.6.x V1.4 Author: Bj??rn Behrens (HerrB) Created: 19.02.2006 Specification: Rezeptionist Partly based on article list module from Contenido V4.4.x Author: Jan Legowski Copyright: Contenido - four for business Credits: Thanks to tono (Entity patch) Thank to tommo (Preserving words) ----------------------------------------------------------------------
- 0.4 Update
- Neuen Mandanten erzeugen - Fragen, Hinweise und Probleme
Letzte Änderung des Artikels: 2007-06-23 18:07
Autor: Timo Hummel
Revision: 1.1
Es ist möglich, diesen Artikel zu kommentieren.
Kommentar von Piet:
Es ist ein Fehler in der Anleitung. Bei \"getContent\" muss der Code im Falle eines Arrays (Codebeispiel 2) so aussehen (mit Strichpunkt):<br />
<br />
$alleHeadlines[1]; // Erste Headline<br />
$alleHeadlines[2]; // Zweite Headline
Added at: 2007-09-02 09:48
Kommentar von MichFress:
Die Klasse ArticleCollection kann übrigens noch mehr:<br />
<br />
1) über<br />
$artikelListe->count<br />
kommt man an die Zahl der Artikel. Fand ich gerade spontan sehr nützlich<br />
<br />
2)<br />
Die Ausgabe kann man auf verschiedene Seiten aufteilen, indem man mit<br />
$artikelListe->setResultPerPage($anzahl)<br />
die Zahl der Artikel pro Seite festlegt und dann mit<br />
$artikelListe->setPage($seite)<br />
die gesuchte Seite auswählt. Dann wieder wie gewohnt<br />
while ($artikel = $artikelListe->nextArticle()) { ...}
Added at: 2007-09-02 09:48



