Seite 1 von 1
Zugriff auf alle Artikel eine Kategorie?
Verfasst: Mi 10. Jul 2013, 17:28
von notebook20000
Hallo,
ich habe das hier gefunden, das scheint aber in der 4.9.x nicht mehr zu funktionieren/ die Klasse scheint nicht zu existieren: Wie kann ich also alle Artikel einer Kategorie auslesen bzw , die letzten x Artikel nach Datum?
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Mi 10. Jul 2013, 23:40
von xmurrix
Ich sehe zwar nicht, was du gefunden hast, aber in 4.9 kann man Artikel einer Kategorie z. B. mit der Klasse cArticleCollector auslesen.
Folgendes sollte das machen, was du möchtest:
Code: Alles auswählen
<?php
$collector = new cArticleCollector(array(
'idcat' => 4,
'order' => 'creationdate', // nach erstellungsdatum sortieren
'direction' => 'ASC', // absteigend
'limit' => 5, // 5 datensaetze
'lang' => $lang,
'client' => $client
));
echo "<pre>";
foreach ($collector as $article) {
echo "idart: " . $article->get('idart') . "\n"
. "title: " . $article->get('title') . "\n\n";
}
echo "</pre>";
?>
Gruß
xmurrix
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 08:46
von notebook20000
Hallo,
Danke, aber damit bekomme ich nur einen Artikel, es sind allerdings aktuell zwei in der Kategorie und er liefert mir auch nicht den Content zurück. Also , das was ich im Editor eingeben kann?!
Oder habe ich was falsch verstanden?
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 09:08
von xmurrix
Wisllt du auch Startartikel ausgeben, so musst du die Option 'start' => true setzen. Als Ergebnis hast du eine Liste von cApiArticleLanguage Objekten und damit kannst du für jeden Artikel sämtliche Inhalte Auslesen, auch das, was du im Editor (CMS_HTML) eingegeben hast.
Hier ein erneutes Beispiel:
Code: Alles auswählen
$collector = new cArticleCollector(array(
'idcat' => 4,
'order' => 'creationdate', // nach erstellungsdatum sortieren
'direction' => 'ASC', // absteigend
'limit' => 5, // 5 datensaetze
'start' => true, // auch startartikel
'lang' => $lang,
'client' => $client
));
foreach ($collector as $article) {
// Inhalt von CMS_HTMLHEAD[1] ausgeben
echo $article->getContent('CMS_HTMLHEAD', 1) . "\n";
// Inhalt von CMS_HTML[2] ausgeben
echo $article->getContent('CMS_HTML', 2) . "\n";
// Alle vorhandenen CMS_HTML ausgeben
$htmlContents = $article->getContent('CMS_HTML');
foreach ($htmlContents as $content) {
echo $content . "\n";
}
}
Schau dir die Klase cApiArticleLanguage (contenido/classes/contenido/class.articlelanguage.php) mal an, der Quellcode ist gut dokumentiert.
Gruß
xmurrix
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 09:20
von notebook20000
Hallo,
nein, ich will alle Artikel ausgeben. Aktuell liefert er mir aber nur einen zurück. Ich hatte es mit diesem ausprobiert, die Artikeldetails auszulesen
Code: Alles auswählen
cInclude('classes', 'class.article.php');
$article = new Article($my_idart, $client, $lang);
$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
$subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
$content1 = $article->getContent('CMS_HTML', 1);
aber das scheint nicht mehr zu gehen. Ich schau mir gleich mal Deien Variante an
Danke
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 09:29
von notebook20000
Hallo,
vielen Dank, das scheint zu klappen. Echt spitze!
Noch zwei Fragen, die nur indirekt was damit zu tun haben
1. Aktuell muss ich den Code ja noch immer im Editor im CMS eingeben. Wenn ich den Code direkt per FTP aktualisiere, scheint er die Aktualisierung nicht zu erkennen. Ist das richtig so oder mache ich da was falsch. Das direkte bearbeiten würde einiges einfacher/schneller machen
2. Ich habe den Titel als content definiert. Das Problem ist, dass er dann von sich aus mindestens <p></p> im CMS Editor immer dazu packt. Ist bei manchem Header oder Content nicht so gut. Gibt es da eine Möglichkeit, das er das bei bestimmten Bereichen nicht macht?
Danke und ich bin echt begeistert

Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 10:01
von xmurrix
1. Aktuell muss ich den Code ja noch immer im Editor im CMS eingeben. Wenn ich den Code direkt per FTP aktualisiere, scheint er die Aktualisierung nicht zu erkennen. Ist das richtig so oder mache ich da was falsch. Das direkte bearbeiten würde einiges einfacher/schneller machen
Wenn du Code (Modul, Layout, Templates) im Editor eingibst und speicherst, generiert CONTENIDO den Code der Seite daraus. Per FTP aktualisierte Inhalte werden vom CMS nicht automatisch erkannt, das muss man dann manuell im Backend synchronisieren.
Während der Entwicklung kann es hilfreich sein, in der Konfigurationsdatei des Mandanten (cms/data/config/production/config.php) die Variable $force auf 1 zu setzen. Dann wird der Code der Seite jedes Mal neu generiert. Das ist zwar nicht performant, während der Entwicklung kann man aber damit leben.
2. Ich habe den Titel als content definiert. Das Problem ist, dass er dann von sich aus mindestens <p></p> im CMS Editor immer dazu packt. Ist bei manchem Header oder Content nicht so gut. Gibt es da eine Möglichkeit, das er das bei bestimmten Bereichen nicht macht?
Schau dir mal folgendes Thema dazu an.
http://forum.contenido.org/viewtopic.ph ... root_block
Leider kann man das nicht per CMS_TYP definieren, schaltest du die p-Tags ab, dann sind sie für alle Inhalte, die per Editor bearbeitet werden, entfernt. Besser ist es, wenn du mit der PHP-Funktion strip_tags() arbeitest.
Gruß
xmurrix
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Do 11. Jul 2013, 11:24
von notebook20000
Ok, danke, das hat mir jetzt richtig viel weiter geholfen und ich kann jetzt auch fixer enwtickeln:)
Re: Zugriff auf alle Artikel eine Kategorie?
Verfasst: Mi 21. Aug 2013, 08:42
von jacke
Hallo,
schöne Sache. Aber was muss ich ändern um alle Artikel - auch der Unterkategorien auszugeben? Oder der Kategorien 1,2,3,7?
Danke!