Seite 2 von 51
Verfasst: Mo 2. Jan 2006, 14:54
von rezeptionist
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
Verfasst: Mo 2. Jan 2006, 15:11
von i-fekt
Ich hab ein Posting davor geschrieben was er machen soll. Es ist kein Statement sondern ein Ratschlag.
Verfasst: Mo 2. Jan 2006, 15:14
von Parklife
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!

Verfasst: Mo 2. Jan 2006, 15:17
von i-fekt
Gern geschehen.

Verfasst: Mo 2. Jan 2006, 19:34
von Parklife
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!
Verfasst: Mo 2. Jan 2006, 19:54
von i-fekt
Machs einfacher, geb den Strich vor jedem Artikel aus außer vor dem ersten.
Ohne Modul Code keine Chance.
Verfasst: Di 3. Jan 2006, 12:49
von Parklife
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!
Verfasst: Di 3. Jan 2006, 13:43
von i-fekt
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.
Verfasst: Di 3. Jan 2006, 22:02
von Parklife
Danke! Mit deinem Tipp und ein bisschen Rumprobieren habe ich es jetzt hinbekommen!

Probleme bei der Bildqualität
Verfasst: Do 5. Jan 2006, 12:45
von Parklife
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!
Bild aus Illustrations-Modul
Verfasst: Do 5. Jan 2006, 22:34
von jenal
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!
Verfasst: Do 5. Jan 2006, 23:15
von HerrB
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
Verfasst: Do 5. Jan 2006, 23:25
von HerrB
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
Verfasst: Fr 6. Jan 2006, 21:41
von Parklife
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...?)
Verfasst: Fr 6. Jan 2006, 23:16
von HerrB
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