Modul: Article per Category V0.5

Hotte
Beiträge: 17
Registriert: Mi 9. Mär 2005, 10:22
Kontaktdaten:

Beitrag von Hotte » Sa 13. Aug 2005, 00:15

Wie andernorts schon angedroht kommt hier noch eine Frage zu dieser sehr hilfreichen Artikelliste. Ich habe heute auch schon mehrere Stunden herum probiert, bekomme es aber einfach nicht hin. Was muss ich tun, dass die Subheadline, bzw ein bestimmter Teil von ihr (z. B. die ersten 100 Zeichen) mit in der Auflistung erscheinen. Datum und "mehr..."-Link habe ich geschafft, bei der Subheadline hapert es allerdings.
Wäre über jeden Tipp, bzw. jede Lösung dankbar.

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

Beitrag von HerrB » Sa 13. Aug 2005, 04:11

Na ja, um nur die Subhealine zu verwenden, braucht man ja nur die entsprechenden Einstellungen vorzunehmen. Aber wenn ich Dich richtig verstanden habe, möchtest Du zwei Felder ausgeben.

Das ist nicht ganz so einfach bzw. ist es dann hart codiert. Das ist sogar echt schwer, stelle ich gerade fest.

Nun ja. Diesen Code:

Code: Alles auswählen

      if ($db->num_rows() > 0) { 

         while ($db->next_record()) { 
            $headline = urldecode($db->f("headline")); 
            $headline = strip_tags($headline); 
            if (strlen($headline) > $maxChar) { 
               $headline = substr($headline, 0, $maxChar); 
               $headline .= '..'; 
            } 

            $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$strCat&idart=".$db->f("id")); 
          
            echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>',chr(10); 
         } 
         unset($headline); 
      } // end if 
   } // end foreach 
durch diesen

Code: Alles auswählen

      if ($db->num_rows() > 0) { 
         $db2 = new DB_Contenido;
         $query2 =  "SELECT CONTENT.value AS headline FROM "; 
         $query2 .= $cfg["tab"]["art_lang"]." AS ARTLANG, "; 
         $query2 .= $cfg["tab"]["content"]." AS CONTENT "; 
         $query2 .= "WHERE CONTENT.idartlang = ARTLANG.idartlang "; 

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

         // Content-Type 
         $query2 .= "AND CONTENT.idtype = '<T-ID2>' "; 
         $query2 .= "AND ARTLANG.idlang = '$lang' "; 

         while ($db->next_record()) {
            $articleID = $db->f("id");
            $headline = urldecode($db->f("headline")); 
            $headline = strip_tags($headline); 
            if (strlen($headline) > $maxChar) { 
               $headline = substr($headline, 0, $maxChar); 
               $headline .= '..'; 
            }

            $subheadline = "";
            // execute query for subheadline
            $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 .= '..'; 
               }
            }

            $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$strCat&idart=".$articleID); 
          
            echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>',chr(10); 
         } 
         unset($headline);
         unset($subheadline);
         unset($articleID);
      } // end if 
   } // end foreach 
ersetzen.

<C-ID2> bzw. <T-ID2> musst Du durch die entsprechenden Werte ersetzen. Jeder Inhaltstyp z.B. CMS_HTML hat eine eigene ID (Werte: siehe Input), die Type-ID. Die Container-ID (und dass ist eigentlich falsch beschriftet) ist die verwendete Nummer diesen Typs, z.B. 2 bei CMS_HTML[2].

Sortiert wird, sofern "nach Topic" (oder was auch immer da steht) eingestellt ist, nach dem, was in der Konfiguration als Topic definiert worden ist. Zu jedem gefundenen Artikel wird dann die Subheadline ermittelt ($subheadline). Es ist nicht möglich, nach Headline und Subheadline zu sortieren, sorry.

Im angegebenen Code wird $subheadline z.Z. nicht ausgegeben (Do-It-Yourself).

Ungetestet. Viel Erfolg.

@stfdof: So, alle Wünsche erfüllt, nur noch nicht so elegant ;-)

Gruß
HerrB
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

Hotte
Beiträge: 17
Registriert: Mi 9. Mär 2005, 10:22
Kontaktdaten:

Beitrag von Hotte » Di 16. Aug 2005, 08:09

Ich habe nun alles so weit hinbekommen wie ich es gern hätte. Vielen Dank an Herrn B. Allerdings habe ich nun noch ein, so hoffe ich, kleines Problem. Und zwar bekomme ich beim Einsatz des folgenden Codes

Code: Alles auswählen

date("d.m.y",strtotime($db->f("created")))
diese Fehlermeldung:

Code: Alles auswählen

Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in /home/www/webXXX/html/cms/front_content.php(567) : eval()'d code on line 558
Als Datum wird überall der 01.01.70 angegeben.
Ich habe über Google herausgefunden, dass PHP5, dass bei mir läuft, die Ursache sein kann. Allerdings habe ich nirgendwo eine Lösung für das Problem gefunden. Hat jemand eine Idee, wie ich zu einer korrekten Datumsangabe komme?

Hotte
Beiträge: 17
Registriert: Mi 9. Mär 2005, 10:22
Kontaktdaten:

Beitrag von Hotte » Di 16. Aug 2005, 19:50

Nachdem ich heute den ganzen Tag probiert und getan habe, sah ich soeben, dass ich die Abfrage zu Beginn der Ausgabe nicht geändert habe.
Im Code findet sich die SQL-Abfrage:
Code:
$query = "SELECT CONTENT.value AS headline, ARTLANG.idart AS id FROM ";
...


Ein Blick in phpMyAdmin auf Deine Datenbank zeigt, dass die Tabelle ARTLANG die Spalten created und lastmodified enthält (beides als Typ datetime). Ergo erweitere man die Abfrage entsprechend:
Code:
$query = "SELECT CONTENT.value AS headline, ARTLANG.idart AS id, ARTLANG.created AS created FROM ";
...
Mir bleibt also nur noch, mich zu freuen und nochmals DANKE zu sagen, denn jetzt habe ich die Liste genau so, wie ich se haben wollte.

Hotte
Beiträge: 17
Registriert: Mi 9. Mär 2005, 10:22
Kontaktdaten:

Beitrag von Hotte » Di 30. Aug 2005, 16:11

Ich bins mal wieder. :oops:
Als ich das ganze getestet habe, waren die Artikel aus den verschiedenen Kategorien rein zufällig in der richtigen Reihenfolge. Jetzt habe ich aber festgestellt, dass die Ausgabe und Sortierung innerhalb der jeweiligen Kategorie stattfindet.
Ich hätte aber gern, dass von meinen 10 Kategorien, der aktuellste Artikel oben steht, unabhängig davon zu welcher Kategorie er gehört.
Nochmal zusammenfassend.
Ist:
Kategorie1 - Artikel 3, Artikel 2, Artikel 1
Kategorie2 - Artikel 2, Artikel 1
Kategorie3 - Artikel 3, Artikel 2, Artikel 1...

Soll:
Kategorie2 - Artikel 2
Kategorie1 - Artikel 3
Kategorie3 - Artikel 3
Kategorie1 - Artikel 2

Ich hoffe, man kann verstehen, was ich meine.
Gibt es eine Möglichkeit, die Sortierung so zu ändern, dass man die Artikel Kategorieunabhängig ausgibt, also quasi mixt?

Hotte
Beiträge: 17
Registriert: Mi 9. Mär 2005, 10:22
Kontaktdaten:

Beitrag von Hotte » Di 4. Okt 2005, 12:26

Ich probier es einfach nochmal, da ich trotz stundenlangem "Hin-und-her-Getüftel" zu keiner Lösung gekommen bin.
Also momentan sortiert diese Artikelliste nach Kategorien und nur innerhalb dieser Kategorien nach Datum. Das heißt, das die Kategorie 1 immer als erstes aufgeführt wird, auch wenn es schon fünf aktuellere Artikel gibt. Ich möchte aber immer den aktuellsten Artikel aus meinen neun Kategorien als erstes stehen haben, gefolgt vom zweitaktuellsten usw.
Zur Zeit stelle ich alle Artikel doppelt ein. Einmal in der jeweiligen Kategorie und einmal in einer gemeinsamen Kategorie, auf die ich die Artikelliste zugreifen lasse. Das ist aber zum einen nicht gerade elegant und zum anderen hätte ich auch gerne, dass man anhand der Navigation sehen kann, in welcher Kategorie man sich gerade befindet. Das ist bei meiner derzeitigen Verfahrensweise leider nicht möglich.
Kann mir vielleicht jemand helfen, wie ich mein Problem lösen kann? Oder ist es vielleicht zu komplex und man müsste das komplette Modul umschreiben? Wäre für jede Hilfe und jeden Tipp dankbar.

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

Beitrag von HerrB » Di 4. Okt 2005, 13:40

Ich denke drüber nach...

Gruß
HerrB
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

Gesperrt