Modul: Standard-Artikelliste Advanced V1.4

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Mo 2. Jan 2006, 14:54

i-fekt hat geschrieben:
rezeptionist hat geschrieben:entweder dem text div eine bestimmte höhe geben am besten die höhe des bildes
Davon rate ich stark ab.
tolles statment das ihm sicherlich weiterhelfen wird
greets

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

Beitrag von i-fekt » Mo 2. Jan 2006, 15:11

Ich hab ein Posting davor geschrieben was er machen soll. Es ist kein Statement sondern ein Ratschlag.

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Beitrag von Parklife » Mo 2. Jan 2006, 15:14

Super, vielen Dank - die Zeile

<div style="clear: both;"></div>

hat gewirkt, nun steht alles so da, wie es soll, und das sowohl bei Firefox wie auch bei IE! Genial, mein Tag ist gerettet! :D

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

Beitrag von i-fekt » Mo 2. Jan 2006, 15:17

Gern geschehen. ;)

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Beitrag von Parklife » Mo 2. Jan 2006, 19:34

Ich hätte noch eine Frage zum Feintuning der Ausgabe - momentan lasse ich in dem Modul nach jedem Artikel einen Strich ausgeben:

Code: Alles auswählen

         echo '   <div id="headline">'.$aValue["Headline"].'</div>', chr(10);
echo ' <div style="clear: both;"></div>', chr(10);
         echo '   <div id="text"><br /></div><hr noshade="noshade" /><br />', chr(10);
         echo '</div>', chr(10);
Lässt sich da vielleicht auf einfache Weise eine Abfrage einbauen, dass nach dem letzten Artikel kein Strich + <br> mehr kommt...?

Danke!
Zuletzt geändert von Parklife am Di 3. Jan 2006, 13:38, insgesamt 1-mal geändert.

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

Beitrag von i-fekt » Mo 2. Jan 2006, 19:54

Machs einfacher, geb den Strich vor jedem Artikel aus außer vor dem ersten.

Ohne Modul Code keine Chance.

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Beitrag von Parklife » Di 3. Jan 2006, 12:49

Hallo!

Danke für den Hinweis - aber wie mache ich die Abfrage, dass vor dem ersten kein Strich kommen soll...? Bin leider (immer noch) php-unerfahren...

Hier noch mal der Ausgabe-Code des Moduls:

Code: Alles auswählen

<?php
# Initialization
$bDebug = false;

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

unset ($aSettings);
$aSettings = array();
$aSettings["ArticleCount"]       = "CMS_VALUE[0]";
$aSettings["TeaserLength"]       = "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["TextIdentifier"]     = "CMS_VALUE[8]";
$aSettings["ImageIdentifier"]    = "CMS_VALUE[9]";
$aSettings["ImageFromContent"]   = "CMS_VALUE[10]";
$aSettings["ImageWidth"]         = "CMS_VALUE[11]";
$aSettings["ImageHeight"]        = "CMS_VALUE[12]";

# Checking values
if (!is_numeric($aSettings["ArticleCount"]) || $aSettings["ArticleCount"] < 0) {
   $aSettings["ArticleCount"] = 10;
}
if (!is_numeric($aSettings["TeaserLength"]) || $aSettings["TeaserLength"] <= 0) {
   $aSettings["TeaserLength"] = 50;
}
if ($aSettings["SortBy"] == "") {
   $aSettings["SortBy"] = "CATART.idart";
}
if ($aSettings["SortDir"] == "") {
   $aSettings["SortDir"] = "DESC";
}
if (!is_numeric($aSettings["Category"]) || $aSettings["Category"] <= 0) {
   $aSettings["Category"] = 0;
}
if (strlen($aSettings["HeadlineIdentifier"]) > 50) {
   $aSettings["HeadlineIdentifier"] = "";
}
if (strlen($aSettings["TextIdentifier"]) > 50) {
   $aSettings["TextIdentifier"] = "";
}
if (strlen($aSettings["ImageIdentifier"]) > 50) {
   $aSettings["ImageIdentifier"] = "";
}
if (!is_numeric($aSettings["ImageWidth"]) || $aSettings["ImageWidth"] <= 0) {
   $aSettings["ImageWidth"] = 0;
   $aSettings["ImageHeight"] = 0;
}
if (!is_numeric($aSettings["ImageHeight"]) || $aSettings["ImageHeight"] <= 0) {
   $aSettings["ImageWidth"] = 0;
   $aSettings["ImageHeight"] = 0;
}

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

   $query  = "SELECT tblData.value AS headline, ARTLANG.idart AS id, " ;
   $query .= "CATLANG.startidartlang, ARTLANG.idartlang, CATART.idcatart AS idcatart FROM ";
   $query .= $cfg["tab"]["cat_art"]." AS CATART, ";
   $query .= $cfg["tab"]["art_lang"]." AS ARTLANG, ";
   $query .= $cfg["tab"]["cat_lang"]." AS CATLANG, ";
   $query .= $cfg["tab"]["content"]." AS tblData ";

   $query .= "WHERE CATART.idcat = '".$aSettings["Category"]."' AND ARTLANG.idlang = '".$lang."' ";
   $query .= "AND tblData.idartlang = ARTLANG.idartlang ";
   $query .= "AND CATLANG.idlang = ARTLANG.idlang ";
   $query .= "AND CATLANG.idcat = CATART.idcat ";
   $query .= "AND ARTLANG.idart = CATART.idart ";
   $query .= "AND ARTLANG.online = '1' ";

   if ($aSettings["ShowStart"] != "enabled") {
      $query .= "AND CATLANG.startidartlang != ARTLANG.idartlang ";
   }

   $query .= "AND ".$aSettings["HeadlineIdentifier"]." ";

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

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

   // execute query
   $db->query($query);

   if ($db->num_rows() > 0) {
      if (!is_object($db2)) {
         $db2 = new DB_Contenido;
      }
      if (!is_object($db3)) {
         $db3 = new DB_Contenido;
      }

      $i = 0;
      while ($db->next_record()) {
         $aData[$i]                        = array();
         $aData[$i]["Link"]                = $sess->url("front_content.php?idcat=".$aSettings["Category"]."&idart=".$db->f("id"));;
         $aData[$i]["Headline"]            = urldecode($db->f("headline"));
         $aData[$i]["Text"]                = "";
         $aData[$i]["Image"]               = array();
         $aData[$i]["Image"]["ServerPath"] = "";
         $aData[$i]["Image"]["WebPath"]    = "";

         $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 = '".$db->f("idcatart")."' AND (";

         $sql_items = "";
         if ($aSettings["TextIdentifier"] != "") {
            $sql_items = "(".$aSettings["TextIdentifier"].")";
         }
         if ($aSettings["ImageIdentifier"] != "") {
            if ($sql_items != "") {
               $sql_items .= " OR (".$aSettings["ImageIdentifier"].")";
            } else {
               $sql_items = "(".$aSettings["ImageIdentifier"].")";
            }
         }
            
         $sql .= $sql_items.")";   
                     
         if ($bDebug) {
            echo "<pre>".$sql."</pre>", chr(10);
         }

         // execute query
         $db2->query($sql);

         while ($db2->next_record()) {
            $sTypeIdentifier = "tblData.idtype = '".$db2->f('idtype')."' AND tblData.typeid = '".$db2->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
            if ($sTypeIdentifier == $aSettings["TextIdentifier"]) {
               $sTmpValue = urldecode($db2->f('value'));
               if (strlen($sTmpValue) > $aSettings["TeaserLength"]) {
                  $sTmpValue = substr($sTmpValue, 0, $aSettings["TeaserLength"])."...";
               }
               $aData[$i]["Text"] = $sTmpValue;
            }
            if ($sTypeIdentifier == $aSettings["ImageIdentifier"]) {
               $sql = "";
               if ($aSettings["ImageFromContent"] != "") {
                  $sTmpValue = urldecode($db2->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);
                  # $img_split = preg_split("/\./", $img_name);
                  # $img_type = $img_split[count($img_split) - 1];
                  # $img_split2 = preg_split("/_/", $img_split[0]);

                  $name = $img_name;

                  #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 filename REGEXP '$name'";
                  }
               } else {
                  $sql =  "SELECT dirname, filename FROM ".$cfg["tab"]["upl"]." ";
                  $sql .= "WHERE idupl = '".$db2->f('value')."'";
               }

               if ($bDebug) {
                  echo "<pre>".$sql."</pre>";
               }

               // execute query
               if ($sql != "") {
                  $db3->query($sql);

                  if ($db3->next_record()) {
                     $aData[$i]["Image"]["ServerPath"] = $cfgClient[$client]["upl"]["path"].$db3->f('dirname').$db3->f('filename');
                     $aData[$i]["Image"]["WebPath"]    = $cfgClient[$client]["upl"]["htmlpath"].$db3->f('dirname').$db3->f('filename');
                  }
               }
            }
         }
         $i++;
      }
      unset ($db2);
      unset ($db3);

      // Output data
      foreach ($aData as $aValue) {
         echo '<div>', chr(10);
         if ($aSettings["ImageWidth"] == 0 || $aSettings["ImageHeight"] == 0) {
            $image = $aValue["Image"]["WebPath"];
         } else {
            if ($aValue["Image"]["ServerPath"] != "" && file_exists($aValue["Image"]["ServerPath"])) {
               #Scale image
               $image = capiImgScale($aValue["Image"]["ServerPath"], $aSettings["ImageWidth"], $aSettings["ImageHeight"], false, false, 10, false);
            } else {
               $image = $aValue["Image"]["WebPath"];
            }
         }

         #Get dimensions of the image
         list ($width, $height, $type, $attr) = getimagesize($image);

         if ($image != "") {
            echo '   <div style="float:left; margin-right:20px; margin-bottom:10px; margin-top:3px;"><img src="'.$image.'" width="'.$width.'" height="'.$height.'" /></div>', chr(10);
         }

         echo '   <div id="headline">'.$aValue["Headline"].'</div>', chr(10);
echo ' <div style="clear: both;"></div>', chr(10);
         echo '   <div id="text"><br /></div><hr noshade="noshade" /><br />', chr(10);
         echo '</div>', chr(10);
      }
   }
}
unset ($aData);
unset ($aSettings);
?>
Vielen Dank!

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

Beitrag von i-fekt » Di 3. Jan 2006, 13:43

Ersetze die foreach Schleife am Ende mal durch das.

Code: Alles auswählen

      // Output data
      foreach ($aData as $aValue) {
        $counter++;
        echo '<div>', chr(10);
        if( $aSettings["ImageWidth"] == 0 || $aSettings["ImageHeight"] == 0 ) {
          $image = $aValue["Image"]["WebPath"];
        } else {
          if( $aValue["Image"]["ServerPath"] != "" && file_exists($aValue["Image"]["ServerPath"]) ) {
            #Scale image
            $image = capiImgScale($aValue["Image"]["ServerPath"], $aSettings["ImageWidth"], $aSettings["ImageHeight"], false, false, 10, false);
          } else {
            $image = $aValue["Image"]["WebPath"];
          }
        }

        #Get dimensions of the image
        list ($width, $height, $type, $attr) = getimagesize($image);

        if( $image != "" ) {
          echo '<div style="float:left; margin-right:20px; margin-bottom:10px; margin-top:3px;"><img src="'.$image.'" width="'.$width.'" height="'.$height.'" /></div>', chr(10);
        }

        echo '<div id="headline">'.$aValue["Headline"].'</div>', chr(10);
        echo '<div style="clear: both;"></div>', chr(10);
        if( $counter == "1" ) {
           echo '<div id="text"><br/></div>QUELLTEXT FÜR 1. ARTIKEL<br/>', chr(10);
        } else {
          echo '<div id="text"><br/></div>QUELLTEXT FÜR ALLE ANDEREN ARTIKEL<br/>', chr(10);
        }
        echo '</div>', chr(10);
      }
Das ist dein Beispiel mit der Linie unten, wie gesagt baue deinen Quellcode um und passe einfach in der Ausgabe das dann entsprechend an.

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Beitrag von Parklife » Di 3. Jan 2006, 22:02

Danke! Mit deinem Tipp und ein bisschen Rumprobieren habe ich es jetzt hinbekommen! :D

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Probleme bei der Bildqualität

Beitrag von Parklife » Do 5. Jan 2006, 12:45

Hallo!

So, das Advanced...-Modul läuft bei mir soweit prima - ich habe nur ein Problem mit der Bildqualität. Ich habe eine gewisse Maximalgröße bei dem Modul eingestellt (um zu verhindern, dass die Benutzer das Layout mit übergroßen Bildern zerschießen), und nun werden selbst Bilder, die exakt diese Maße haben, offenbar bearbeitet und haben anschließend diese hässlichen JPG-Schlieren und -Störungen. Gibt es da irgendwie eine Möglichkeit, die Qualität der erzeugten jpgs zu beeinflussen? (Insbesondere bei Bildern, bei denen, wie gesagt, gar keine Umrechnung nötig ist.)

Danke!

jenal
Beiträge: 10
Registriert: Di 19. Okt 2004, 08:35
Wohnort: Zürich
Kontaktdaten:

Bild aus Illustrations-Modul

Beitrag von jenal » Do 5. Jan 2006, 22:34

Erstmal herzlichen Dank für diese Modul, es Erfüllt genau meine Bedürfnisse!

Eine kleine Frage: Ich verwende seit 4.6.x das Modul Illustration, um Bilder einzubinden (ist das gar nicht so schlau?). Dieses Modul hier erkennt solche Bilder jedoch nicht. Gäbe es eine Möglichkeit, dies zu ändern oder ist das mit einem grossen Aufwand verbunden?

Wäre sehr dankbar, bin leider selber nicht PHP gewandt!

Merci!

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

Beitrag von HerrB » Do 5. Jan 2006, 23:15

Jein. Grundsätzlich spricht nichts dagegen (außer, dass ein Redakteur eine Konfiguration eines Artikels durchführen können muss, um das Bild zu ändern).

Aber die Speicherung dieser Bilder erfolgt an gänzlich anderer und - aus Sicht dieses Moduls - komplizierter Stelle. Das umzubauen ist zu viel Aufwand, sorry.

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

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

Beitrag von HerrB » Do 5. Jan 2006, 23:25

Habe ich irgendwie übersehen:
Ich habe eine gewisse Maximalgröße bei dem Modul eingestellt (um zu verhindern, dass die Benutzer das Layout mit übergroßen Bildern zerschießen), und nun werden selbst Bilder, die exakt diese Maße haben, offenbar bearbeitet und haben anschließend diese hässlichen JPG-Schlieren und -Störungen. Gibt es da irgendwie eine Möglichkeit, die Qualität der erzeugten jpgs zu beeinflussen?
Sorry.

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

Parklife
Beiträge: 102
Registriert: Sa 19. Nov 2005, 20:28
Kontaktdaten:

Beitrag von Parklife » Fr 6. Jan 2006, 21:41

macht ja nichts :-) - aber kann man die Bildqualität irgendwie beeinflussen, d.h. verbessern...? Oder wenigstens eine Abfrage einbauen, dass keine Umrechnung erfolgt, wenn das Bild klein genug ist?

Danke!

(Die Umrechnungsroutine beim Modul Illustration ist übrigens absolut in Ordnung und erzeugt auch eine gute Qualität - kann man das nicht irgendwie kombinieren...?)

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

Beitrag von HerrB » Fr 6. Jan 2006, 23:16

Die Umrechnungsroutine beim Modul Illustration ist übrigens absolut in Ordnung und erzeugt auch eine gute Qualität - kann man das nicht irgendwie kombinieren...?
Wie bringe ich Dir das jetzt schonend bei ... es ist die gleiche!

Ansonsten hatte ich in meiner Antwort sogar schon etwas geschrieben - bis ich Deine Antwort gelesen hatte, dass es sich erledigt hat - hat es doch nicht?

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