Zugriff auf alle Artikel eine Kategorie?

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
notebook20000
Beiträge: 56
Registriert: Mi 3. Jul 2013, 10:15
Kontaktdaten:

Zugriff auf alle Artikel eine Kategorie?

Beitrag von notebook20000 » Mi 10. Jul 2013, 17:28

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?

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von xmurrix » Mi 10. Jul 2013, 23:40

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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

notebook20000
Beiträge: 56
Registriert: Mi 3. Jul 2013, 10:15
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von notebook20000 » Do 11. Jul 2013, 08:46

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?

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von xmurrix » Do 11. Jul 2013, 09:08

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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

notebook20000
Beiträge: 56
Registriert: Mi 3. Jul 2013, 10:15
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von notebook20000 » Do 11. Jul 2013, 09:20

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

notebook20000
Beiträge: 56
Registriert: Mi 3. Jul 2013, 10:15
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von notebook20000 » Do 11. Jul 2013, 09:29

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 :)

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von xmurrix » Do 11. Jul 2013, 10:01

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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

notebook20000
Beiträge: 56
Registriert: Mi 3. Jul 2013, 10:15
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von notebook20000 » Do 11. Jul 2013, 11:24

Ok, danke, das hat mir jetzt richtig viel weiter geholfen und ich kann jetzt auch fixer enwtickeln:)

jacke
Beiträge: 303
Registriert: Mi 25. Sep 2002, 19:37
Kontaktdaten:

Re: Zugriff auf alle Artikel eine Kategorie?

Beitrag von jacke » Mi 21. Aug 2013, 08:42

Hallo,

schöne Sache. Aber was muss ich ändern um alle Artikel - auch der Unterkategorien auszugeben? Oder der Kategorien 1,2,3,7?

Danke!

Antworten