Modul: Standard-Artikelliste Advanced V1.4

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Hallo

Beitrag von derSteffen » Di 21. Nov 2006, 18:36

Hallo,

ich traue mich das gar nicht zu fragen, weil diese Frage wahrscheinlich schon mal gestellt wurde, aber ich das leide nicht finde!

Also - vielleicht nochmal!

Ich habe das Modul in einer Spalte eingebunden, hier werden die Artikel per Zufall generiert und mit Text und teilweise auch mit Bild ausgegeben. Nun habe ich diese Artikel mit anderen verlinkt (Bild und Text jeweils), um diese aufrufen zu können. Aber das Modul nimmt ja alle Formatierungen raus, u.a. auch Sonderzeichen! Gibt es eine Möglichkeit, dass das Modul Links bei der "Säuberung" umgeht, bzw. wie könnte ich die "Deformatierung" der Text umgehen?

Vielen Dank

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

Beitrag von HerrB » Di 21. Nov 2006, 23:36

Jeweils im Output das strip_tags herausnehmen.

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

benja
Beiträge: 168
Registriert: Mi 31. Aug 2005, 10:54
Wohnort: Köln
Kontaktdaten:

blättern - teilen?

Beitrag von benja » Mi 22. Nov 2006, 00:19

hi, beim letzten problem bei dem mir keiner helfen konnte habe ich jetzt das modul umgestellt, solange es nicht auf zufällig steht funktioniert alles.

vielleicht kann mir aber jemand beim blättern helfen. ich würde das gerne im anderen container anzeigen lassen. dazu müßte man das modul teilen oder? ich habe leider keine ahnung wie und ob das überhaupt so einfach geht!

viele grüße
benja

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Mi 22. Nov 2006, 08:23

HerrB hat geschrieben:Jeweils im Output das strip_tags herausnehmen.

Gruß
HerrB
Leider funktioniert das nicht! Wenn ich das mache, zeigt er mir den Quelltext des Artikels an, z.B.

Code: Alles auswählen

<a href="front_content.php?idart=113&idcat=70&lang=1&client=1" title="Hier könnten Sie stehen!"><img...
Gibt es denn noch eine andere Möglichkeit? Zum Beipiel eine if-Abfrage für Links wie für die Bildern?

Oder habe ich was nicht ganz beachtet bei den "strip_tags" entfernen?

Danke

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

Beitrag von HerrB » Fr 24. Nov 2006, 10:44

Das ist der Grund, warum strip_tags drin ist. strip_tags entfernen funktioniert i.A. nur, wenn man den Gesamttext ausgibt (d.h. keine Begrenzung). Du könntest auch mit strip_tags arbeiten und a als erlaubten Tag angeben (siehe strip_tags-Doku auf http://www.php.net), aber in Bezug auf das Abschneiden mitten im Link hilft es nicht.

Dazu müsstest Du den Text vorher parsen, die Links in ein Array speichern, durch Platzhalter-Worte ersetzen, kürzen und anschließend die Platzhalter wieder mit den Links ersetzen.

Wäre grundsätzlich machbar, muss man sich mit regulären Ausdrücken auseinandersetzen...

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

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

Beitrag von silicone » Fr 24. Nov 2006, 12:26

Oldperl hat geschrieben:Hallo @all

Erst mal ein großes Dickes Lob HerrB für diese Artikelliste (ich will abba kein Kind Rolling Eyes Laughing )

Ich habe mich am Wochenende mal daran gemacht das Modul mit Templates umzusetzen. Weiterhin habe ich die Ausgabe davon abhängig gemacht, ob XHTML beim Mandanten eingeschaltet ist oder nicht.

Ich habe für die Validierung alle & in den Links durch & ersetzt.
Für den Page-Selector habe ich nur das 3. Beispiel bearbeitet.

Habe es in einer Seite mit HTML 4.01 Transitional getestet, ohne Errors. Vielleicht kann es ja mal jemand in eine XHTML Seite einbauen zum testen.
Hallo Ortwin,

leider validiert die Seite bei mir nicht mit xhtml...
Du fragst die Variable $XHTML ab, die bekommt aber keinen Wert. Dadurch schließt das img-Tag immer mit ">" statt mit " />".

Gruß,
Thomas

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Fr 24. Nov 2006, 13:24

Sehr geehrter HerrB,

vielen dank für die ausführliche Antwort. Ich habe mir schon sowas gedacht, dass das wohl nicht so einfach sein wird! Na ich werde mal gucken ob ich das hinbekomme!

Aber noch eine Frage. Im Tempelate begrenze ich ja die Text-Zeichen für meinen Artikel. Sind jetzt nur damit die Textzeichen des Artikels gemeint oder aber diese plus den HTML-Quelltext-Zeichen des Artikels?

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

Beitrag von HerrB » Fr 24. Nov 2006, 16:50

Im Tempelate begrenze ich ja die Text-Zeichen für meinen Artikel. Sind jetzt nur damit die Textzeichen des Artikels gemeint oder aber diese plus den HTML-Quelltext-Zeichen des Artikels
Ja, nur die Textzeichen (Bestimmung nach strip_tags).

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

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Fr 24. Nov 2006, 19:06

Hallo HerrB,

ich habe gerade was anderes probiert - und es funktioniert :-)

Ich kann mir das mit der Verlinkung sparen, indem ich den Artikel, denn ich in meiner Liste durch das Standard-Artikelliste Advanced V1.4 Modul anzeigen lasse, mit der Funktion der Weiterleitung in den Artikeleigenschaft hinterlege.

Funktioniert - toll!

wosch

Beitrag von wosch » Do 21. Dez 2006, 13:46

oldperl hat im April (siehe Seite 12) eine Template-Version der Standard-Artikelliste Advanced V1.4 gepostet.

Im weiteren Verlauf wurde dann gefragt wie man die Variable {CONTENT_ELEMENT} wieder auseinander nimmt.
Eine Antwort gab es nicht.
Da ich parallel zur News-Liste eine 2. Artikelliste brauchte habe ich die Artikelliste Advanced V1.4 selber zu einer Template-Version umgebaut.

Grundlage ist der Quellcode im Beitrag 1 von HerrB.
Das von mir gewählte Template bildet die News-Liste des Beispielmandaten nach.
Gleichzeitig habe ich noch einige zusätzlich Abfragen eingebaut,
die Wichtigste: Der Text wird im Teaser erst angezeigt wenn die Zusammenfassung "leer" ist.

An den wichtigsten Stellen sind von mir noch die Marker # vorhanden so das jeder hier Änderungen/Auskommentierungen vornehmen kann.
Die Blätterfunktion habe ich nicht angefaßt.

Beschreibung:

Code: Alles auswählen

Modul:         Article List Advanced V4.6.x V1.4
Author:        Björn Behrens (HerrB)
Created:       19.02.2006

mit Korrektur des Get Images Size-Fehlers
28.11.2006: zur Template-Version umgebaut 
30.11.2006: Falls bei Zusammenfassung ein Eintrag ist wird dieser ausgegeben anstelle des Teaser-Textes

Partly based on article list module from Contenido V4.4.x
Author:        Jan Legowski
Copyright:     Contenido - four for business

Credits:
Specification: Rezeptionist
Thanks to tono (Entity patch)
Thank to tommo (Preserving words)

Modul-Input:

Code: Alles auswählen

Input ist Original, hier sind von mir keine Änderungen gemacht worden
Modul-Output:

Code: Alles auswählen

<?php
### Version mit korrigiertem GetImageSize Fehler
# Initialization
$bDebug     = false;
$iDataStart = 20;
$lCount     = 0;

unset ($aData);
$aData = array();

# Base settings
unset ($aSettings);
$aSettings = array();
$aSettings["ArticleCount"]       = "CMS_VALUE[0]";
$aSettings["ArticlePerPage"]     = "CMS_VALUE[1]";
$aSettings["SortBy"]             = "CMS_VALUE[2]";
$aSettings["SortDir"]            = "CMS_VALUE[3]";
$aSettings["ShowStart"]          = "CMS_VALUE[4]";
$aSettings["Category"]           = "CMS_VALUE[5]";
$aSettings["HeadlineIdentifier"] = "CMS_VALUE[7]";
$aSettings["HeadlineLength"]     = "CMS_VALUE[8]";
$aSettings["Elements"]           = "CMS_VALUE[9]";
$aSettings["CatTypeSel"]         = "CMS_VALUE[10]";
$aSettings["AddCats"]            = "CMS_VALUE[11]";

# Checking base settings
if (!is_numeric($aSettings["ArticleCount"]) || $aSettings["ArticleCount"] < 0) {
   $aSettings["ArticleCount"] = 5;
}
if (!is_numeric($aSettings["ArticlePerPage"]) || $aSettings["ArticlePerPage"] < 0) {
   $aSettings["ArticlePerPage"] = 0; // Deactivating page browsing
}
if ($aSettings["ArticlePerPage"] == 0 || !is_numeric($_REQUEST["nextstep"])) {
   $_REQUEST["nextstep"] = 0;
}
if (!is_numeric($aSettings["Category"]) || $aSettings["Category"] <= 0) {
   $aSettings["Category"] = 0;
}
if (strlen($aSettings["HeadlineIdentifier"]) > 50) {
   $aSettings["HeadlineIdentifier"] = "";
}
if (!is_numeric($aSettings["HeadlineLength"]) || $aSettings["HeadlineLength"] < 0) {
   $aSettings["HeadlineLength"] = 0;
}
if (!is_numeric($aSettings["Elements"]) || $aSettings["Elements"] < 0) {
   $aSettings["Elements"] = 0;
}
if ($aSettings["CatTypeSel"] == "" || ($aSettings["AddCats"] == "" && $aSettings["CatTypeSel"] == "selected")) {
   $aSettings["CatTypeSel"] = "none";
}

# Detail settings
if ($aSettings["Elements"] > 0) {
   for ($i = 0; $i < $aSettings["Elements"]; $i++) {
      $iElementType       = $iDataStart + ($i * 5);
      $iElementIdentifier = $iElementType + 1;
      $iElementWidth      = $iElementType + 2;
      $iElementHeight     = $iElementType + 3;

      $aSettings["k".$i] = array();
      $aSettings["k".$i]["ElementType"]    = "CMS_VALUE[$iElementType]"; // Text, Image, ExtractedImage
      $aSettings["k".$i]["Identifier"]     = "CMS_VALUE[$iElementIdentifier]";
      $aSettings["k".$i]["ElementWidth"]   = "CMS_VALUE[$iElementWidth]"; // Textlength or ImageWidth
      $aSettings["k".$i]["ElementHeight"]  = "CMS_VALUE[$iElementHeight]";

      # Check detail settings
      if ($aSettings["k".$i]["ElementType"] == "") {
         $aSettings["k".$i]["ElementType"] == "Text";
      }
      if ($aSettings["k".$i]["ElementType"] == "Text") {
         $aSettings["ElementHeight"] = 0;
         if (!is_numeric($aSettings["k".$i]["ElementWidth"]) || $aSettings["k".$i]["ElementWidth"] < 0) {
            $aSettings["k".$i]["ElementWidth"] = 50;
         }
      } else if (!is_numeric($aSettings["k".$i]["ElementWidth"]) || $aSettings["k".$i]["ElementWidth"] <= 0 ||
                 !is_numeric($aSettings["k".$i]["ElementHeight"]) || $aSettings["k".$i]["ElementHeight"] <= 0) {
         $aSettings["k".$i]["ElementWidth"] = 0;
         $aSettings["k".$i]["ElementHeight"] = 0;
      }
      if (strlen($aSettings["Identifier"]) > 50) {
         $aSettings["Identifier"] = "";
      }
   }
}

unset ($iDataStart);
unset ($iElementType);
unset ($iElementIdentifier);
unset ($iElementWidth);
unset ($iElementHeight);

if ($aSettings["Category"] !== "0" && $aSettings["HeadlineIdentifier"] !== "") {
   if (!is_object($db2)) {
      $db2 = new DB_Contenido;
   }

   # Specifying search categories
   $sSelCats = "'".$aSettings["Category"]."'";
   # Adding categories "below" primary category
   switch ($aSettings["CatTypeSel"]) {
      case "below":
         $lCatLevel = -1;
         $sql  = "SELECT a.idcat AS idcat, b.level AS level FROM ".$cfg["tab"]["cat"]." a, ".$cfg["tab"]["cat_tree"]." b ";
         $sql .= "WHERE a.idcat = b.idcat ORDER BY b.idtree";

         $db2->query($sql);
         while($db2->next_record()) {
            if ($db2->f("idcat") == $aSettings["Category"]) {
               $lCatLevel = $db2->f("level");
            } else if ($lCatLevel > -1 && $db2->f("level") > $lCatLevel) {
               $sSelCats .= ",'".$db2->f("idcat")."'";
            } else if ($db2->f("level") <= $lCatLevel) {
               break;
            }
         }
         break;
      case "selected":
         $aCats = explode(",",$aSettings["AddCats"]);
         foreach ($aCats as $value) {
            if (is_numeric($value)) {
               $sSelCats .= ",'".$value."'";
            }
         }
         break;
      default:
   }

   $sql  = "SELECT tblData.value AS headline, ARTLANG.pagetitle AS pagetitle, ARTLANG.summary AS summary, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, " ;
   $sql .= "ARTLANG.created AS created, ARTLANG.published AS published, CATLANG.name AS category, ";
   $sql .= "ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart FROM ";
   $sql .= $cfg["tab"]["cat_art"]." AS CATART, ";
   $sql .= $cfg["tab"]["art_lang"]." AS ARTLANG, ";
   $sql .= $cfg["tab"]["cat_lang"]." AS CATLANG, ";
   $sql .= $cfg["tab"]["content"]." AS tblData ";

   $sql .= "WHERE CATART.idcat IN (".$sSelCats.") AND ARTLANG.idlang = '".$lang."' ";
   $sql .= "AND tblData.idartlang = ARTLANG.idartlang ";
   $sql .= "AND CATLANG.idlang = ARTLANG.idlang ";
   $sql .= "AND CATLANG.idcat = CATART.idcat ";
   $sql .= "AND ARTLANG.idart = CATART.idart ";

   if ($aSettings["ShowStart"] != "enabled") {
      if ($cfg["is_start_compatible"] == true) {
         $sql .= "AND CATART.is_start = '0' ";
      } else {
         $sql .= "AND tblData.idartlang != CATLANG.startidartlang ";
      }
   }

   $sql .= "AND ARTLANG.online = '1' ";
   $sql .= "AND ".$aSettings["HeadlineIdentifier"]." ";

   // Sort by
   $sql .= "ORDER BY ";
   $sql .= $aSettings["SortBy"]." ".$aSettings["SortDir"]." ";

   // LIMIT
   if ($aSettings["ArticleCount"] > 0) {
      $sql .= "LIMIT 0, ".$aSettings["ArticleCount"];
   }

   // execute query
   $db2->query($sql);
   $lCount = $db2->num_rows();

   if ($lCount > 0) {
      if (!is_object($db3)) {
         $db3 = new DB_Contenido;
      }
      if (!is_object($db4)) {
         $db4 = new DB_Contenido;
      }
      if ($aSettings["ArticlePerPage"] > 0) {
         $lStartCount = $_REQUEST["nextstep"];
         $lEndCount   = $_REQUEST["nextstep"] + $aSettings["ArticlePerPage"];
         if ($lEndCount > $lCount) {
            $lEndCount = $lCount;
         }
      } else {
         $lStartCount = 0;
         $lEndCount   = $lCount;
      }

      $lRow = 0;
      $i    = 0;
      while ($db2->next_record()) {
         if ( $aSettings["ShowStart"] == "enabled" || 
             ($aSettings["ShowStart"] != "enabled" && $db2->f("idartlang") != $lStartIDArtLang)) {
            if ($lRow >= $lStartCount && $lRow < $lEndCount) {
               $aData[$i]                        = array();
               $aData[$i]["Category"]            = urldecode($db2->f("category"));
               $aData[$i]["Link"]                = $sess->url("front_content.php?idcat=".$db2->f("idcat")."&idart=".$db2->f("id"));;
               $aData[$i]["LastModified"]        = $db2->f("lastmodified");
               $aData[$i]["Created"]             = $db2->f("created");
               $aData[$i]["Published"]           = $db2->f("published");
               # nachstehende Daten   Summary   eingefügt 
               $aData[$i]["Summary"]           = $db2->f("summary");
               # nachstehende Daten   pagetitle  eingefügt 
               $aData[$i]["Pagetitle"]           = $db2->f("pagetitle");

               $sTmpValue = html_entity_decode(strip_tags(urldecode($db2->f('headline'))));
               if ($aSettings["HeadlineLength"] > 0 && strlen($sTmpValue) > $aSettings["HeadlineLength"]) {
                  # Cutting text but preserving words and entities
                  $sTmpValue = htmlentities(capiStrTrimAfterWord($sTmpValue, $aSettings["HeadlineLength"])."...");
               }
               $aData[$i]["Headline"] = $sTmpValue;

               if ($aSettings["Elements"] > 0) {
                  for ($k = 0; $k < $aSettings["Elements"]; $k++) {
                     $aData[$i]["i".$k]               = array();
                     $aData[$i]["i".$k]["Value"]      = "";
                     $aData[$i]["i".$k]["ServerPath"] = "";
                     $aData[$i]["i".$k]["WebPath"]    = "";
                     $aData[$i]["i".$k]["Width"]      = 0;
                     $aData[$i]["i".$k]["Height"]     = 0;
                  }
               
                  $sql =  "SELECT tblData.value AS value, tblData.idtype AS idtype, tblData.typeid AS typeid FROM ";
                  $sql .= $cfg["tab"]["cat_art"]." AS tblCatArt, ";
                  $sql .= $cfg["tab"]["art_lang"]." AS tblArtLang, ";
                  $sql .= $cfg["tab"]["content"]." AS tblData ";
                  $sql .= "WHERE tblData.idartlang = tblArtLang.idartlang AND ";
                  $sql .= "tblArtLang.idlang = '".$lang."' AND ";
                  $sql .= "tblArtLang.idart = tblCatArt.idart AND ";
                  $sql .= "tblCatArt.idcatart = '".$db2->f("idcatart")."' AND (";
               
                  $sql_items = "";
                  for ($k = 0; $k < $aSettings["Elements"]; $k++) {
                     if ($aSettings["k".$k]["Identifier"] != "") {
                        if ($sql_items != "") {
                           $sql_items .= " OR (".$aSettings["k".$k]["Identifier"].")";
                        } else {
                           $sql_items = "(".$aSettings["k".$k]["Identifier"].")";
                        }
                     }
                  }
                  $sql .= $sql_items.")";
                  
                  if ($bDebug) {
                     echo "<pre>".$sql."</pre>", chr(10);
                  }

                  // execute query
                  $db3->query($sql);
                  
                  while ($db3->next_record()) {
                     $sTypeIdentifier = "tblData.idtype = '".$db3->f('idtype')."' AND tblData.typeid = '".$db3->f('typeid')."'";
                     
                     # Note: The TypeIdentifier for one item may be the same as for another item.
                     #       Therefore, we are storing the content everywhere as needed
                     for ($k = 0; $k < $aSettings["Elements"]; $k++) {
                        if ($sTypeIdentifier == $aSettings["k".$k]["Identifier"]) {
                           switch (TRUE) {
                              case ($aSettings["k".$k]["ElementType"] == "Image" || $aSettings["k".$k]["ElementType"] == "ExtractedImage"):
                                 $sql = "";
                                 if ($aSettings["k".$k]["ElementType"] == "Image") {
                                    $sql =  "SELECT dirname, filename FROM ".$cfg["tab"]["upl"]." ";
                                    $sql .= "WHERE idupl = '".$db3->f('value')."'";
                                 } else {
                                    $sTmpValue = urldecode($db3->f('value'));
   
                                    $regEx = "/<img[^>]*?>.*?/i";
                                    $match = array ();
                                    preg_match($regEx, $sTmpValue, $match);
      
                                    $regEx = "/(src)(=)(['\"]?)([^\"']*)(['\"]?)/i";
                                    $img = array ();
                                    preg_match($regEx, $match[0], $img);
                                    $img_src = preg_split("/\//", $img[0]);
                                    
                                    $img_name = $img_src[count($img_src) - 1];
                                    $img_name = preg_replace("/\"/", "", $img_name);
                                    #Don't know what is happening here, exactly...
                                    # $img_split = preg_split("/\./", $img_name);
                                    # $img_type = $img_split[count($img_split) - 1];
                                    # $img_split2 = preg_split("/_/", $img_split[0]);

                                    $name = strtolower($img_name);

                                    #Don't know what is happening here, exactly...
                                    #if (count($img_split2) > 1) {
                                    #   $img_x = $img_split2[count($img_split2) - 1];
                                    #   $img_y = $img_split2[count($img_split2) - 2];
    
                                    #   if (is_numeric($img_x) AND is_numeric($img_y)) {
                                    #      $suffix = "_".$img_x."_".$img_y.".".$img_type;
                                    #      $name = preg_replace("/$suffix/", "", $img_name);
                                    #      $name = $name.".[a-zA-Z]{3}";
                                    #   }
                                    #}
   
                                    if (strlen($name) > 0) {
                                       $sql =  "SELECT dirname, filename FROM ".$cfg["tab"]["upl"]." ";
                                       $sql .= "WHERE LOWER(filename) = '$name'";
                                       // $sql .= "WHERE filename REGEXP '$name'"; // Old: for 'banner.jpg' 'merlin_banner.jpg' is also returned
                                    }
                                 }
                              
                                 if ($bDebug) {
                                    echo "<pre>".$sql."</pre>";
                                 }
                              
                                 // execute query
                                 if ($sql != "") {
                                    $db4->query($sql);
                                 
                                    if ($db4->next_record()) {
                                       $aData[$i]["i".$k]["ServerPath"] = $cfgClient[$client]["upl"]["path"].$db4->f('dirname').$db4->f('filename');
                                       $aData[$i]["i".$k]["WebPath"]    = $cfgClient[$client]["upl"]["htmlpath"].$db4->f('dirname').$db4->f('filename');
###
                                       list ($width, $height, $type, $attr) = getimagesize($aData[$i]["i".$k]["ServerPath"]);
                                       $aData[$i]["i".$k]["Width"]      = $width;
                                       $aData[$i]["i".$k]["Height"]     = $height;
                                    }
                                 }
                              
                                 break;
                              default:
                                 $sTmpValue = html_entity_decode(strip_tags(urldecode($db3->f('value'))));
                                 if ($aSettings["k".$k]["ElementWidth"] > 0 && strlen($sTmpValue) > $aSettings["k".$k]["ElementWidth"]) {
                                    # Cutting text but preserving words and entities
                                    $sTmpValue = htmlentities(capiStrTrimAfterWord($sTmpValue, $aSettings["k".$k]["ElementWidth"])."...");
                                 }
                                 $aData[$i]["i".$k]["Value"] = $sTmpValue;
                           }
                        }
                     } 
                  }
               }
               $i++;
            } else if ($lRow == $lEndCount) {
               break;
            }
            $lRow++;
         }
      }
      # Clearing memory
      unset ($db2);
      unset ($db3);
      unset ($db4);
      unset ($sql);
      unset ($lStartIDArtLang);
      unset ($lStartCount);
      unset ($lEndCount);

      # Output data
      # Every output manipulation should be done here...
      # 
      # Base information:
      # $aSettings["Elements"]:       Number of expected, additional elements from each article
      # $aSettings["ArticlePerPage"]: Number of articles per page (0: show all)
      # $aSettings["k".$i]["ElementType"]:   Per Element: Type of Element: Text, Image or ExtractedImage
      # $aSettings["k".$i]["ElementWidth"]:  Per Element: Text length or image width (-> recycling ...)
      # $aSettings["k".$i]["ElementHeight"]: Per Element: Image width
      # 
      # Per article:
      # $aValue["Headline"]:          Content of article element specified as containing the headline information
      # $aValue["Link"]:              Relative link to get to the listed article
      # $aValue["LastModified"]:      Last modified date of the article
      # $aValue["Created"]:           Created date of the article
      # $aValue["Published"]:         Published date of the article
      # $aValue["Category"]:          Category name
      # $aValue["Summary"]:          summary Zusammenfassung
      # $aValue["Pagetitle"]:          Seitentitel pagetitle
      # 
      # Per article additional element:
      # $aValue["i".$i]["Value"]:      Text (only for text elements, otherwise "")
      # $aValue["i".$i]["WebPath"]:    HTTP... path to image
      # $aValue["i".$i]["ServerPath"]: /server/... path to image
      # $aValue["i".$i]["Width"]:      >Original< image width
      # $aValue["i".$i]["Height"]:     >Original< image height

##
/* Init Template 
*/ 

if (!is_object($tpl)) {
	$tpl = new Template;
}
$tpl->reset();
$template = "artlist_advanced.html";

##

#####
$newsheadline = " "; 
$tpl->set('s', 'TITLE', $newsheadline); 

#####

      foreach ($aData as $aValue) {
         echo '<div id="artlist">', chr(10);
        # echo '   <div id="headline">'.$aValue["Category"].": ".$aValue["Headline"].'</div>', chr(10);
        # echo '   <div id="artlist_headline">'.$aValue["Headline"].'</div>', chr(10);
        # echo '   <div id="artlist_headline"><a href="'.$aValue["Link"].'">'.$aValue["Headline"].'</a></div>', chr(10);

#####
        $artlist_headline = '<a href="'.$aValue["Link"].'">'.$aValue["Headline"].'</a>';
        # echo $artlist_headline;
#####
        $artlist_pagetitel = $aValue["Pagetitle"];
        #echo $artlist_pagetitel;
#####
         # echo '   <div id="artlist_zusammen">'.$aValue["Summary"].'</div>', chr(10);
          $artlist_summary = $aValue["Summary"];
         # echo $artlist_summary;

#####
         if ($aSettings["Elements"] > 0) {
            for ($i = 0; $i < $aSettings["Elements"]; $i++) {
               switch (TRUE) {
                  case ($aSettings["k".$i]["ElementType"] == "Image" || $aSettings["k".$i]["ElementType"] == "ExtractedImage"):
                     $image = $aValue["i".$i]["WebPath"];
                     
                     $width  = $aValue["i".$i]["Width"];
                     $height = $aValue["i".$i]["Height"];

                     if ($aSettings["k".$i]["ElementWidth"] > 0 && $aSettings["k".$i]["ElementHeight"] > 0) {
                        # Check, if resize necessary
                        if ($aValue["i".$i]["ServerPath"] != "" && file_exists($aValue["i".$i]["ServerPath"]) && 
                            ($aValue["i".$i]["Width"] > $aSettings["k".$i]["ElementWidth"] || 
                             $aValue["i".$i]["Height"] > $aSettings["k".$i]["ElementHeight"])) {
                           # Scale image
                           $image = capiImgScale($aValue["i".$i]["ServerPath"], $aSettings["k".$i]["ElementWidth"], $aSettings["k".$i]["ElementHeight"], false, false, 10, false);
                           
###                           #Get dimensions of the image
                           list ($width, $height, $type, $attr) = getimagesize(str_replace($cfgClient[$client]["path"]["htmlpath"], $cfgClient[$client]["path"]["frontend"], $image)); 
                        } else {
                           $image = $aValue["i".$i]["WebPath"];
                           
                           $width  = $aValue["i".$i]["Width"];
                           $height = $aValue["i".$i]["Height"];
                        }
                     }
                     
                     if ($image != "") {
#####
                       # echo '   <div id="artlist_image"><img src="'.$image.'" width="'.$width.'" height="'.$height.'" /></div>', chr(10);
        $artlist_image = '<img src="'.$image.'" width="'.$width.'" height="'.$height.'" />';
         #echo $artlist_image;
#####
                     }
                     
                     break;
                  default: // Everything else is treated as "Text"
#####-A
                     # echo '   <div id="artlist_text">'.$aValue["i".$i]["Value"].'</div>', chr(10);
                        #$artlist_text =  $aValue["i".$i]["Value"];
                        if ($artlist_summary == "") { 
                                $artlist_text =  $aValue["i".$i]["Value"]; 
                        } else { 
                                $artlist_text = $artlist_summary;
                        } 
                      #echo $artlist_text;

#####
               }
            }
         }
#####
         #echo '<a href="'.$aValue["Link"].'">'.mi18n("More...").'</a>', chr(10);
        $artlist_more = '<a href="'.$aValue["Link"].'">'.mi18n("More...").'</a>';
         #echo $artlist_more;
         echo '</div>', chr(10);

#####
         $tpl->set('d', 'PAGETITEL', $artlist_pagetitel); 
         $tpl->set('d', 'HEADLINE', $artlist_headline); 
         $tpl->set('d', 'IMAGE',  $artlist_image); 
         $tpl->set('d', 'TEXT',  $artlist_text); 
         $tpl->set('d', 'MORE', $artlist_more); 

       $tpl->next(); 
#####

      }
   }

$tpl->generate('templates/'.$template);


   # Page browsing
   # Hint: Number of max available records: $lCount
   #       Number of pages: round($lCount / $aSettings["ArticlePerPage"])
   #       First page: nextstep=0
   #       Last page:  nextstep=(round($lCount / $aSettings["ArticlePerPage"]) - 1) * $aSettings["ArticlePerPage"];
   #                   (I have to admit that I'm not sure about the last page formula ... ;-) )
   if ($aSettings["ArticlePerPage"] > 0) {
      # Example: Back and Next
      echo '<div id="browsing">', chr(10);
      if ($_REQUEST["nextstep"] > 0) {
         echo '   <div id="Back">', chr(10);
         echo '      <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.($_REQUEST["nextstep"]-$aSettings["ArticlePerPage"]).'">'.mi18n("Back").'</a>', chr(10);
         echo '   </div>', chr(10);
      }
      if (($_REQUEST["nextstep"] + $aSettings["ArticlePerPage"]) < $lCount) {
         echo '   <div id="Next">', chr(10);
         echo '      <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.($_REQUEST["nextstep"]+$aSettings["ArticlePerPage"]).'">'.mi18n("Next").'</a>', chr(10);
         echo '   </div>', chr(10);
      }

      # Example: 1 2 3 4 5 6 7 ...
      $iPages = intval($lCount / $aSettings["ArticlePerPage"]);
      $sPageLinks = '';

      echo '   <div id="Pages">';
      for ($i = 1; $i <= $iPages; $i++) {
         $lNextStep = ($i - 1) * $aSettings["ArticlePerPage"];
         if ($sPageLinks != '') {
            $sPageLinks .= '&nbsp;';
         }
         if ($_REQUEST["nextstep"] == $lNextStep) {
            $sPageLinks .= $i."\n"; # I'm on the current page, no link
         } else {
            $sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>'."\n";
         }
      }
      echo '      '.$sPageLinks."\n";
      echo '   </div>'."\n";

      # Example: |< 1 ... 3 4 5 ... 8 >|
      $iPages = intval($lCount / $aSettings["ArticlePerPage"]);
      $sPageLinks = '';

      echo '   <div id="Pages">'."\n";
      echo '      <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep=0">|<</a>'."\n";
      for ($i = 1; $i <= $iPages; $i++) {
         $lNextStep = ($i - 1) * $aSettings["ArticlePerPage"];
         if ($i == 1 || $i == $iPages) {
            if ($sPageLinks != '') {
               $sPageLinks .= '&nbsp;';
            }
            if ($_REQUEST["nextstep"] == $lNextStep) {
               $sPageLinks .= $i."\n"; # I'm on the current page, no link
            } else {
               $sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>'."\n";
            }
         } else if ($_REQUEST["nextstep"] == $lNextStep) {
            $sPageLinks .= '&nbsp;'.$i."\n"; # I'm on the current page, no link
         } else if ($_REQUEST["nextstep"] == ($lNextStep + $aSettings["ArticlePerPage"])) {
            # Front
            $sPageLinks .= '&nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>'."\n";
         } else if ($_REQUEST["nextstep"] == ($lNextStep - $aSettings["ArticlePerPage"])) {
            # Back
            $sPageLinks .= '&nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>'."\n";
         } else if ($_REQUEST["nextstep"] == ($lNextStep - (2 * $aSettings["ArticlePerPage"])) ||
                    $_REQUEST["nextstep"] == ($lNextStep + (2 * $aSettings["ArticlePerPage"]))) {
            $sPageLinks .= '...';
         }
      }
      echo '      '.$sPageLinks."\n";
      echo '      &nbsp;<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.(round($lCount / $aSettings["ArticlePerPage"]) - 1) * $aSettings["ArticlePerPage"].'">>|</a>'."\n";
      echo '   </div>'."\n";

      echo '</div>'."\n"; # Closing Browsing div
   }
}
# Clearing memory
unset ($aData);
unset ($aSettings);
unset ($i);
unset ($lCount);
unset ($bDebug);
?>

Template, Name: artlist_advanced.html

Code: Alles auswählen

<h1 class="content">{TITLE}</h1>
<!-- BEGIN:BLOCK -->
<div style="padding-bottom:10px;">

<TABLE>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="100"><B><FONT COLOR="#FF0000">{PAGETITEL}</FONT></B></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="5"></TD>
<TD ALIGN="LEFT" VALIGN="TOP"><B>{HEADLINE}</B></A></TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">{IMAGE}</TD><TD ALIGN="LEFT" VALIGN="TOP"></TD>
<TD ALIGN="LEFT" VALIGN="TOP"><BR>{TEXT}<BR><BR><B>{MORE}</B></TD>
</TR>
</TABLE>
</div><P></P>
<!-- END:BLOCK -->
Wer es gebrauchen kann oder als Grundlage für eigene Varianten.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Do 21. Dez 2006, 19:46

So, ich habe deine Template-Version noch etwas verfeinert.
Nun kann man direkt über der Beispielkonfiguration anhand eines Listenfeldes ein Modul-Template auswählen.

Find ich so besser, weil ich lieber in Contenido etwas eintippel, oder hochlade, als den FTP anzuschmeißen;)

Hier das gepackte Modul: http://www.suther.de/contenido-modules/ ... ist1.4.zip

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Do 21. Dez 2006, 20:12

Ich habe noch einen kleinen Bug in dem Modul gefunden.
Wenn man unter "Elemente identifizieren" ein Element als Text mit Bild deklariert, kann man am ende in zwei Feldern die Breite und Höhe des Bildes eingeben.

Wenn man nur in eines der beiden Felder etwas einträgt, wird das nicht mit übernommen. Wenn man in beiden Fenstern einen Wert eingibt, wird die Grafik aber proportional skaliert, also nicht wirklich nach (beiden) eingegbenen Werten.

Finde ich nicht wirklich schlimm, aber ich denke es wäre besser, wenn man dann auch die Felder einzeln mit den Werten füllen kann ( und das andere dann auf 0 lassen)...

Was denkt Ihr?

=====
Ergänzung:
=====

Schaut mal hier: http://www.unser-horrem.de/cms/front_co ... p?idcat=74

Irgendwie scheint da die Bilderfunktion zu spinnen. Das Foto vom Bahnhof ist nur unter der Kategorie Bahn, aber anzeigen tut der das überall.

Kann es sein, das wenn er kein Bild hat, das er dann einfach nochmal das zuletzt verwendete benutzt?

wosch

Beitrag von wosch » Do 21. Dez 2006, 20:31

rethus hat geschrieben:So, ich habe deine Template-Version noch etwas verfeinert.
Nun kann man direkt über der Beispielkonfiguration anhand eines Listenfeldes ein Modul-Template auswählen.
Mit der möglichen "Auswahl eines Templates" habe ich mich bisher nie beschaftigt.
Wenn du das integriert hast - SUPER.

Schau ich es mir zwischen den Jahren an, und werde es dann bei mir integrieren.

Aber trotzdem, nochmals gesagt, die Modifikation baut auf das Original-Modul auf,
ändern ist einfach, so wie die Asiaten (Japan, Korea) früher Autos kopierten,
selber entwickeln, so wie HerrB es gatn hat, ist schwer.
Ihm gebührt das Lob für diese Modul.

wosch

Beitrag von wosch » Do 21. Dez 2006, 20:37

rethus hat geschrieben:Schaut mal hier: http://www.unser-horrem.de/cms/front_co ... p?idcat=74

Irgendwie scheint da die Bilderfunktion zu spinnen. Das Foto vom Bahnhof ist nur unter der Kategorie Bahn, aber anzeigen tut der das überall.

Kann es sein, das wenn er kein Bild hat, das er dann einfach nochmal das zuletzt verwendete benutzt?
Den Effekt hatte ich auch einige Male.
Bei mir waren es 2 Gründe.

1. Die Bilder waren nicht in der DB eingetragen, weil ich sie über FTP hochgeladen hatte und nicht über die Contenido eigene upload-Funktion.

2. der Bildpfad war falsch und dann wird das letzte Bild, das noch "bekannt" ist genommen.
Grund: ich hatte die con_code nicht nach einem Fehler von mir bezüglich des Pfades geleert.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Fr 22. Dez 2006, 08:47

Zu dem Bild effekt muss ich noch sagen, das ich nicht in jedem - durch das Modul Advaced List Article - eingebundenem Artikel, der da angezeigt werden soll ein Bild drin habe.

Die Bilder sind ordnungsgemäß per Contenido hochgeladen. Wenn ich die Sortierreihenfolge der Artikel verändere, macht er das auch mit anderen Bildern... also wenn vor den Bildlosen Artikeln ein Artikel mit Bild ist, wird da dieses Bild (des vorhergehenden Artikels) angelegt.

Ich möchte gerne die Funktioin so erweitern, dass dann auch alternativ kein Bild angezeigt werden kann... also wenn ich 5 Artikel habe, und 2 enthalten kein Bild, das er die dann auch ohne Bild anzeigt (nur Überschrift und Text)

Denkt Ihr das dies möglich ist? Weil man kann da ja nur eine Beispiel-Kategorie anlegen, oder bin ich jetzt gezwungen, in jedem Artikel ein Bild mit einzupflegen?

Gesperrt