Artikel mit kompletten Inhalt untereinander ausgeben

Gesperrt
DanielK
Beiträge: 4
Registriert: Mo 10. Okt 2005, 23:04
Kontaktdaten:

Artikel mit kompletten Inhalt untereinander ausgeben

Beitrag von DanielK »

Hallo,

ich bin ganz neu bei Contenido.
Ich bin echt begeistert, was dieses CMS alles kann, obwohl ich erst seit ein paar Tagen damit arbeite.

Die Aufteilung Layout / Module / Templates habe ich auch schon gut im Griff. Ich erstelle ehrenamtlich die Website unsere Ortsgemeinde. Nun gibt es auf dieser eine Liste mit allen Vereinen.
Die Seite für jeden Verein ist wie folgt aufgebaut:
(Code der Module in den entsprechenden Containern)

CMS_HTMLHEAD[1] = Vereinsname
CMS_HTML[1] = Vereinsbeschreibung (Anschrift / Telnr.)
if ("CMS_LINKDESCR[2]" != "") { echo "<a href=CMS_LINK[2] target='_new'> E-Mailkontakt: CMS_LINKDESCR[2]</a>"; } = Emailkontakt
if ("CMS_LINK[1]" != "") { echo "<a href=CMS_LINK[1] target='_new'>CMS_LINKDESCR[1]</a>"; } = Internetseite

So nun würde ich gerne eine Vereinsliste erstellen, auf der alle Vereine in Alphabetischer Reihenfolge ausgegeben werden, so wie es auf der alten Seite der Fall war.

Bsp:

SPD Ortsverein ORT,
Vorsitzender: Name, Straße,
Telefon: 0/0
E-Mailkontakt: Name
http://www.spd-ort.de/

Squaredance-Club
Vorsitzende: Name, Schriftführer: Name,
Telefon: 0/0 oder 0/0
E-Mailkontakt: Name

Wie kann ich das am Besten lösen?
Ich muss sicher ein Modul erstellen. Gibt es eine Funktion welche mir alle Artikel (=Vereine) ausgibt, die ich dann per PHP-Schleife durchlaufen kann? In der Kategorie Vereine befindet sich jedoch auch der Startartikel, welcher die Vereinsliste selbst ist, diesen müsste ich dann jedoch von diesem Aufruf in der Schleife ausschließen können?!

Ich hoffe Ihr könnte mir weiterhelfen.

Danke!

MfG
Daniel
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Hallo Daniel,

such mal nach "Artikelliste". Es gibt garantiert irgendwo eine, die auch Text aus dem Artikel mit ausgibt. Du kannst dann die Textlaenge so einstellen, dass der ganze Artikel angezeigt wird, weil deine Artikel anscheinend nicht so lang sind.

Gruss
Christa
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Einen Anfang findest Du hier: http://www.contenido.org/forum/viewtopi ... 8565#48565

Thread ganz durchlesen. Mit den Änderungen auf der zweiten Seite kannst Du neben dem "Haupt-Topic" (wie auch immer Du es definierst) auch ein weiteres Feld ausgeben.

Daraus sollte das Prinzip ersichtlich sein. Im weiteren Verlauf wirst Du die internen IDs benötigen. Ändere daher (alles nach Berücksichtigung von Seite 2):

Code: Alles auswählen

      if ($db->num_rows() > 0) { 
         $db2 = new DB_Contenido; 
         $query2 =  "SELECT CONTENT.value AS headline FROM "; 
in

Code: Alles auswählen

      if ($db->num_rows() > 0) { 
         $db2 = new DB_Contenido; 
         $query2 =  "SELECT CONTENT.value AS headline, CONTENT.typeid AS typeid, CONTENT.idtype AS idtype FROM "; 
Damit Du alle gewünschen Felder ermitteln kannst, musst Du diese Stelle:

Code: Alles auswählen

         // Container-ID 
         $query2 .= "AND CONTENT.typeid = '<C-ID2>' "; 

         // Content-Type 
         $query2 .= "AND CONTENT.idtype = '<T-ID2>' "; 
entsprechend anpassen. Das müsste dann so aussehen:

Code: Alles auswählen

         $query2 .= "AND ((CONTENT.typeid = '<C-ID2>'  AND CONTENT.idtype = '<T-ID2>')"; 
         $query2 .= "OR    (CONTENT.typeid = '<C-ID3>'  AND CONTENT.idtype = '<T-ID3>')"; 
         $query2 .= "OR    (CONTENT.typeid = '<C-ID4>'  AND CONTENT.idtype = '<T-ID4>'))";
Man beachte, dass es sich um AND ( (Bedingung1 AND Bedingung2) OR (...) OR (...) ) handelt - öffnende und schließende Klammern nicht übersehen. Was C-ID und T-ID ist, sollte aus Seite 2 ersichtlich sein.

Bei dem Ergebnis besteht das Problem, dass Du a) nicht weisst, ob der Subtyp überhaupt vorhanden bzw. gefüllt ist und b) in welcher Reihenfolge die Daten kommen. Daher musst Du zwischenpuffern:

Statt:

Code: Alles auswählen

$db2->query($query2 . "AND ARTLANG.idart = '".$articleID."'"); 
            if ($db2->next_record()) { 
               $subheadline = urldecode($db2->f("headline")); 
               $subheadline = strip_tags($subheadline); 
               if (strlen($subheadline) > $maxChar) { 
                  $subheadline = substr($subheadline, 0, $maxChar); 
                  $subheadline .= '..'; 
               } 
            } 
nimmst Du sowas wie:

Code: Alles auswählen

$db2->query($query2 . "AND ARTLANG.idart = '".$articleID."'");
            unset($mydata);
            $mydata = array("Description" => "&nbsp;", "EMail" => "&nbsp;", "Link" => "&nbsp;");
            while ($db2->next_record()) {
               $subheadline = urldecode($db2->f("headline")); 
               $subheadline = strip_tags($subheadline);
               if ($db2->f("typeid") == "<C-ID2 - muss wieder ersetzt werden!> AND $db2->f("idtype") == "<T-ID2 - muss wieder ersetzt werden!>") {
                  $mydata["Description"] = $subheadline;
               } else if ($db2->f("typeid") == "<C-ID3 - muss wieder ersetzt werden!> AND $db2->f("idtype") == "<T-ID3 - muss wieder ersetzt werden!>") {
                  $mydata["EMail"] = $subheadline;
               } usw.
            }
Im nachfolgenden Code stehen dann in $mydata die Daten zur Verfügung (oder eben &nbsp;) und können ausgegeben werden.

Gruß
HerrB

P.S.: Ungetestet, zunächst kein Support. Kann noch Fehler enthalten. Erst mal selber gucken...
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
DanielK
Beiträge: 4
Registriert: Mo 10. Okt 2005, 23:04
Kontaktdaten:

Beitrag von DanielK »

Hallo!

vielen Dank für die Mühe!
Ich habe gestern Nacht noch ein wenig gesucht und bin auf die Funktion "ArticleCollection ($options)" gestoßen.
Damit habe ich es jetzt gelöst.
Dazu habe ich hier im Forum ein Modul gefunden, welches diese Funktion benutzt. Ich muss sagen, dass das sehr gut funktioniert.
Schade, dass ich nicht schneller auf folgende Implementierung gestoßen bin:
http://www.contenido.org/forum/viewtopi ... collection

Mit dieser Funktion kann man sich die ganzen MySQL Abfragen sparen.
Leider gibt es im Admin Handbuch auch keinen Verweis auf vorgefertigte Funktionen. Vllt wäre das mal anzudenken, wenigstens solche Grundfunktionen mit in die Admin-Doku aufzunehmen.

MfG
Daniel
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Kannst du den Code posten?
ürde mich auch sehr interessieren ;-)
smart

Beitrag von smart »

Mich auch!
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt »

Öhm, schau mal aufs Datum... :roll:
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)
smart

Beitrag von smart »

Gesperrt