Zugriff auf Artikel über Contenido Klassen

Gesperrt
CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Fr 12. Nov 2010, 15:45

Hallo NG,

nachdem ich etwas weiter in die Materie vorgedrungen bin, stehe ich jetzt mal wieder vor einem Problem.
Hier wird ja beschrieben wie man mittels Objekte auf die einzelnen Artikel zurgreifen kann:

http://faq.contenido.org/content/18/2/d ... ction.html

Grundsätzlich ist das eine Super-Sache! Jetzt habe ich allerdings das Problem, dass sich der Inhalt der Artikel nicht aus den CMS-Typen (Headline, Text etc.) zusammensetzt, sondern aus dem Inputbereich eines Moduls "gefüttert" wird. Hab da jetzt Tags drinstehen wie

Code: Alles auswählen

<p id="kurzbeschreibung">Kettensäge 0815 aus dem Hause....</p>
<p id="preis">299,00€</p>
Wollte mir jetzt eine kleine Artikelliste (als Teaser) basteln, welche mir bestimmte Dinge aus dem Artikel rauszieht. Wie setze ich da an :?:

Danke für Tipps!

Gruß

Frank

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von Dodger77 » Sa 13. Nov 2010, 11:29

Wenn der jeweilige Input der verwendeten Module ein paar CMS-VAR[x] verwendet, um die Daten der Produkte zu pflegen und im Output einfach so darauf zugegriffen wird:

Code: Alles auswählen

<?php
$headline = "CMS_VALUE[1]";
$text = "CMS_VALUE[2]";
?>
, dann lässt sich aus anderen Modulen darauf folgendermaßen zugreifen:

Code: Alles auswählen

<?php

$iArticle = 15; // hier muss die idart des auszulesenden Artikels angegeben werden
$iContainerNo = 8; // hier muss der Container angegeben werden, in dem sich das auszulesende Modul befindet

cInclude('classes', 'class.templateconfig.php');
$oTplConf = new TemplateConfig($iArticle);
$aContainerContent = $oTplConf->getData($iContainerNo);

$headline = urldecode($aContainerContent[0]);
$text     = urldecode($aContainerContent[1]);

?>
Mit Hilfe der ArticleCollection lassen sich dann die Artikel auflisten und der gepostete Code dort einbauen.
Zuletzt geändert von Dodger77 am Sa 13. Nov 2010, 16:36, insgesamt 1-mal geändert.
Grund: Typo entfernt

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Sa 13. Nov 2010, 13:14

Hallo Dodger77,

danke für den Hinweis und den Code. Teste das am Montag. Wirklich flexibel das Teil! :o

Gruß

Frank

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Mo 15. Nov 2010, 09:11

Hallo Dodger,

getestet und für sehr gut befunden!!! Hätte nicht gedacht, dass es mit den Contenido Boardmitteln so einfach ist, eine derart flexible Artikelliste zu erstellen! :o

Vielen Dank für den Support :!: :!: :!:

Gruß

Frank

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Do 23. Jun 2011, 09:30

Hallo NG,

muss das nochmal aufmachen. Ich habe etwa folgendes Template im Content (verkürzt)

Container 20: Modul mit CMS_HEADLINE
Container 21: Modul mit CMS_IMG
Container 21: Modul mit CMS_TEXT

Hab jetzt ein weiteres Modul welches mir alle Artikel einer Kategorie ausliest, die das oben genannte Template nutzen. Ich möchte jetzt in diesem Modul den Inhalt des Container 21 auslesen (Bild). Geht das auch über die class.templateconfig.php. Wahrscheinlich nicht, oder? Ich bekomme bei Aufruf der Methode getdata($idcontainer) immer false zurück.

Oder muss ich das anders aufziehen und eine Abfrage auf die Tabelle con_content mit der entsprechenden idtype und typeid feuern? Oder gibt es da noch was Hausgemachtes bei Contenido, was ich (noch) nicht kenne?

Danke für Anregungen!

Frank

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Do 23. Jun 2011, 17:45

So ich hab es jetzt. Wen es interessiert:

Man erstellt ein Artikelobjekt und holt sich über ->getContent die BildID. Die Bildinformationen (Pfad und Datei) lädt man dann damit aus der con_upl händisch nach.

Code: Alles auswählen


          $myArt = new Article($iArticle, 1, 1); 
          $iPicId= $myArt->getContent("CMS_IMG", 1);   
          $sPicSql = "SELECT con_upl.dirname, con_upl.filename FROM con_upl WHERE con_upl.idupl = " . $iPicId; 
          echo $sPicSql;          
          
          $db->query($sPicSql);
          if ($db->num_rows() > 0) {
              while ($db->next_record()) {
                  $sImgSrc = 'upload/' . $db->f("dirname") . $db->f("filename");
              }
          } 
Frank

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von Oldperl » Fr 24. Jun 2011, 09:00

Hallo Frank,
CharlyBrown hat geschrieben:Die Bildinformationen (Pfad und Datei) lädt man dann damit aus der con_upl händisch nach.
Auch dafür gibt es in Contenido Klassen die auf die genericDB aufsetzen, und zwar die Klassen Upload und UploadCollection, zu finden in der Datei contenido/classes/class.upload.php.
Eine Beschreibung der Klasse findest du für Contenido 4.8.11 hier :arrow: http://www.conrepo.org/apidoc/contenido ... 8.11/html/

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von CharlyBrown » Fr 24. Jun 2011, 10:36

Hallo Ortwin,

sehr hilfreich, danke. Der Aufruf der Methoden wird zudem hier dokumentiert (unten letzter Beitrag von Dodger77):

http://forum.contenido.org/viewtopic.php?t=2087

Generell vielleicht nochmal eine Frage: Was ist der grundlegende Vorteil der in dem Beitrag beschriebenen Vorgehensweise gegenüber meiner oben beschriebenen (also über die direkte SQL-Abfrage)? Ist das schneller?

Gruß

Frank

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Zugriff auf Artikel über Contenido Klassen

Beitrag von Spider IT » Fr 24. Jun 2011, 10:52

Die Methoden zu nutzen, die ein System zur Verfügung stellt (die sog. API), ist immer der sichere Weg, denn bei Änderungen an der Datenbank für ein Update werden auch die Methoden (Schnittstellen der API) angepasst.

Gruß
René

PS: Ortwin, danke für den dann doch etwas zu dezenten Hinweis auf die Seite, dafür solltest du ein neues Thema aufmachen ;)

Gesperrt