Artikelmodul für 4.6.X Mehrspaltig, sprachabh. Startartikel

Gesperrt
Tom Quenten
Beiträge: 125
Registriert: Do 10. Jun 2004, 13:55
Wohnort: Gallinchen
Kontaktdaten:

Artikelmodul für 4.6.X Mehrspaltig, sprachabh. Startartikel

Beitrag von Tom Quenten »

Habe mir jetzt mal die 4.6.8 installiert für meine private Website. Mir ist aufgefallen das es problem mit den Startartikel gibt. Habe al gesucht und gefunden, jedoch hatte noch keiner das mal umgesetzt in demModul von w3concepts.

Habe ich jetzt mal gemacht, damit man auch sieht was hinzugefügt wurde, habe ich diesen code weiter unten noch mal hervorgehoben.

ansonsten ist es das gleiche modul wie ich schon mal gepostet habe. Siehe http://contenido.org/forum/viewtopic.ph ... highlight=.
Habe gemerkt das an der mehrspaltigkeit ja ein reges interesse besteht. :-) Sehen kannman dies übriegns hier http://cms.tlcc.de/front_content.php?idcat=3

Folgende Funktionen bietet es

- sprachabhängiges Laden des Startartikels
- mehrspaltig einstellbar
- die Tabellenbreite der Spalte fixieren (manchmal notwendig)
- die Abstände zwischen den Spalten definieren (Angabe in Pixel)
- habe auch 2 darstellungsmöglichkeiten in der ausgabe

Sollte es Probleme geben beachtet bitte folgende Hinweise...

- Pfadangaben der Thumbnails!!!!!!!! (Häufiges Problem!)
- Schreibrechte auf den Order Thumbnails
- ich benutze meine eigene Variablenstrucktur, Bilddateien aus denen Thumbnails gebildet werden sollen haben bei mir die Nummer 2111, das muss bei euch nicht sein, muss also angepasst werden!
- die styleshet classen sind natürlich meine, die müsst ihr auch anpassen an eure definierten

Hoffe, das ihr Spass mit der Anpassung habt.



Bye
Tom Quenten



INPUT

Code: Alles auswählen

/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
* Modulname   :       w3concepts.alist.mod5.v1 
* Author      :     Andreas Kummer 
* Copyright   :     mumprecht & kummer w3concepts 
* Created     :     06-28-2004 
* Modified    :     06-28-2004 
************************************************/ 

$selected = "CMS_VALUE[3110]"; 

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[3110]\">";

if($selected!="0" && $selected!=""){ 
    echo"<option value=\"0\">--- kein ---</option>"; 
} else { 
    echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>"; 
} 

$sql = " 
    SELECT a.idcat, a.level, c.name 
    FROM {$cfg['tab']['cat_tree']} AS a, 
         {$cfg['tab']['cat']} AS b, 
         {$cfg['tab']['cat_lang']} AS c 
    WHERE 
        a.idcat = b.idcat 
        AND b.idcat = c.idcat 
        AND c.idlang='$lang' 
        AND b.idclient='$client' 
        AND c.visible = 1 
    ORDER BY a.idtree 
    "; 

$db->query($sql); 

while ($db->next_record()) { 
    $spaces = "|"; 
    $levels = $db->f("level"); 
    for ($i = 0; $i < $levels; $i ++) { 
        $spaces = $spaces . "--"; 
    } 
    $spaces .= ">"; 

    if ($selected == $db->f("idcat")) { 
        echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>"; 
    } else { 
        echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>"; 
    } 
} 

echo "</select></td></tr>"; 

echo "<tr><td>Anzahl Artikel je Seite:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3111]\" value=\"CMS_VALUE[3111]\" size=\"3\" /></td>"; 

echo "<tr><td>Artiekldarstellung -> 2 = Homepage</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3112]\" value=\"CMS_VALUE[3112]\" size=\"3\" /></td>";

echo "<tr><td>Anzahl angezeigte Zeichen der Subheadline:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3113]\" value=\"CMS_VALUE[3113]\" size=\"5\" /></td>"; 

echo "<tr><td>Text für Previous-Link:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3114]\" value=\"CMS_VALUE[3114]\" size=\"15\" /></td>"; 

echo "<tr><td>Text für Next-Link:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3115]\" value=\"CMS_VALUE[3115]\" size=\"15\" /></td>"; 

echo "<tr><td>Tabellen-Breite:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3116]\" value=\"CMS_VALUE[3116]\" size=\"5\" /></td>";
echo "<tr><td colspan='2'>Feste Tabellenbreite pro Spalte. Damit wird einer eventuellen Verschiebung der Tabellen vorgebeugt.</td></tr>"; 

echo "<tr><td>Thumbnail-Breite:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3117]\" value=\"CMS_VALUE[3117]\" size=\"5\" /></td>"; 

echo "<tr><td>Anzahl Artikel nebeneinander:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3118]\" value=\"CMS_VALUE[3118]\" size=\"5\" /></td>"; 

echo "<tr><td>Spaltenabstand nebeneinander in Pixel:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3119]\" value=\"CMS_VALUE[3119]\" size=\"5\" /></td>";

echo "<tr><td>Anzeige Next/Previous Link: 1=NEIN</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3120]\" value=\"CMS_VALUE[3120]\" size=\"5\" /></td>"; 

echo "</table>";
OUTPUT

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     w3concepts.alist.mod5.v1 
* Author      :     Andreas Kummer 
* Copyright   :     mumprecht & kummer w3concepts 
* Created     :     06-28-2004 
* Modified    :     06-28-2004, 18.04.2006 Andre Domaschke
************************************************/ 

    // manuelle konfiguration des moduls
    $uploadpfad = "/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende)
    $thumbnailpfad = "upload/thumbs/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende)

    // konfiguration 
    $categorie = "CMS_VALUE[3110]"; 
    $angezeigte_anzahl = "CMS_VALUE[3111]"; 
    if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10; 
    $artikeldarstellung = "CMS_VALUE[3112]"; 
    if ($artikeldarstellung  == '') $artikeldarstellung = 1; 
    $subheadline = "CMS_VALUE[3113]"; 
    if ($subheadline == '') $subheadline = 200; 
    $navigationslink['previous'] = "CMS_VALUE[3114]"; 
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]'; 
    $navigationslink['next'] = "CMS_VALUE[3115]"; 
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]'; 

    $tabellenbreite = "CMS_VALUE[3116]";
    if ($tabellenbreite <= '0'){ $tabellenbreite = '100%';}

    $bildbreite = "CMS_VALUE[3117]";
    $spalten =  "CMS_VALUE[3118]";
    if ($spalten <= '0'){ $spalten = '1';}
    $spaltenabstand = "CMS_VALUE[3119]";
    if ($spaltenabstand <= '0'){ $spaltenabstand = '10';}
    $limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0); 

    $navigationslink['display'] = "CMS_VALUE[3120]";
    if ($navigationslink['display'] <= '0'){ $navigationslink['display'] = '';}

    $db = new DB_Contenido; 
    $db2 = new DB_Contenido; 

    // liest die anzahl betroffener artikel aus der datenbank 
    $sql_1 = " 
		SELECT	count(*) AS anzahl 
		FROM 	{$cfg['tab']['cat']} AS a, 
				{$cfg['tab']['cat']} AS b, 
				{$cfg['tab']['cat']} AS c,
				{$cfg['tab']['cat_lang']} AS h
		LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat 
		LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
		WHERE 
				( 
					( 
						c.idcat = b.idcat 
						AND b.parentid = a.idcat 
					) 
					OR 
					( 
						c.idcat = b.idcat 
						AND b.idcat = a.idcat 
					) 
				) 
		AND a.idcat = $categorie 
		AND d.idcat != $categorie 
		AND e.online = 1 
		AND e.redirect = 0 
		AND e.external_redirect = 0 
		AND e.idlang = $lang

		AND h.idlang = $lang
		AND h.idcat = c.idcat
		AND h.startidartlang = e.idartlang

		 "; 

	// liest die betroffenen Startartikel, abhängig der Sprach ID, aus
    $sql_2 = " 
		SELECT f.name,
				e.pagetitle, 
				c.idcat, d.idart, 
				e.idartlang, 
				e.created, 
				DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
		FROM	{$cfg['tab']['cat']} AS a, 
				{$cfg['tab']['cat']} AS b, 
				{$cfg['tab']['cat']} AS c,
				{$cfg['tab']['cat_tree']} AS g,
				{$cfg['tab']['cat_lang']} AS h
		LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat 
		LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
		LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON f.idcat = d.idcat 
		WHERE 
				( 
					( 
						c.idcat = b.idcat 
						AND b.parentid = a.idcat 
					) 
					OR 
					( 
						c.idcat = b.idcat 
						AND b.idcat = a.idcat 
					) 
				) 
		AND a.idcat = $categorie 
		AND d.idcat != $categorie 
		AND e.online = 1 
		AND e.redirect = 0 
		AND e.external_redirect = 0 
		AND e.idlang = $lang 
		AND g.idcat = f.idcat

		AND h.idlang = $lang
		AND h.idcat = c.idcat
		AND h.startidartlang = e.idartlang

		ORDER BY g.idtree ASC 
		LIMIT $limit, $angezeigte_anzahl 
                    "; 

    $db->query($sql_1); 
    $db->next_record(); 
    $anzahl_artikel = $db->f("anzahl");
    $artikel = $anzahl_artikel;
    $db->query($sql_2);


	echo"\n";
	echo '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
	echo "\n<tr>\n";
	$num = 0;
	$spalte = 1;



    while ($db->next_record()) { 
        $sql = " 
            SELECT a.value, a.typeid, b.type, c.filename, c.dirname
            FROM {$cfg['tab']['content']} AS a 
            LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype 
            LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl
            LEFT JOIN {$cfg['tab']['art_lang']} AS d ON a.idartlang = d.idartlang 
            WHERE a.idartlang = ".$db->f("idartlang")."
            AND d.online = 1
            AND ( 
                b.type = 'CMS_HTML' 
                OR b.type = 'CMS_IMG' 
            ) 
            ORDER BY b.type, a.typeid ASC 
            "; 
        $db2->query($sql); 
        $db2->next_record(); 
        $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));



  if($num <= $artikel){
    if ($num % $spalten == 0 && $num > 0){ 
    	// Neue Zeile beginnen 
    	echo " </tr>\n  <tr>\n"; 
    }

    if($spalte > 1){
    	 echo '  <td><img src="images/1p.trans.gif" border="0" alt="" width="'.$spaltenabstand.'" height="1"></td>';
    	 echo "\n";
    }

	    echo '  <td valign="top">';






        $db2->next_record(); 
         // die subheadline auf die gewünschte länge reduzieren (trennung nur 
        // nach bzw. vor einem ganzen wort 
        if (strlen($db2->f("value")) > $subheadline) { 
            $newsubheadline = ''; 
            $worte = explode (" ",strip_tags(urldecode($db2->f("value")))); 
            $zulang = false; 
            foreach ($worte as $wort) { 
                if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true; 
                $newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline); 
            } 
            $newsubheadline .= " ..."; 
        } else { 
            $newsubheadline = strip_tags(urldecode($db2->f("value"))); 
        } 
        $bild_vorhanden = false; 
        while ($db2->next_record()) { 
            if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 2111) { 
                $bilddateiname = "{$thumbnailpfad}{$bildbreite}_".$db2->f("value").".jpg"; 
                if (!file_exists($cfg['path']['frontend'].$bilddateiname)) { 
                    $src_image_size = getimagesize($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    $bildhoehe = round($src_image_size[1] * $bildbreite / $src_image_size[0]); 
                    if ($bildhoehe > $bildbreite) { 
                        $bildhoehe = $bildbreite; 
                        $bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]); 
                    } 
                    $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe); 
                    if ($src_image_size[2] == 1) { 
                        $src_im = imagecreatefromGIF($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } elseif ($src_image_size[2] == 2) { 
                        $src_im = @ImageCreateFromJPEG($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } else { 
                        $src_im = imagecreatefromgd($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } 
                    imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]); 
                    imagejpeg ($dst_im,$cfg['path']['frontend'].$bilddateiname,100); 
                } 
                $bild_vorhanden = true; 
            } 
        } 

		if ($bild_vorhanden) { 
		$width = "CMS_VALUE[3117]"; 
		$width += 5; 
		$src_image_size = getimagesize($cfg['path']['frontend'].$bilddateiname);

			if($artikeldarstellung == 1){
?>

<!-- AUSGABE ARTIKEL START D1 -->
<table border="0" cellpadding="0" cellspacing="0" width="<? echo $tabellenbreite; ?>">
	<tr>
		<td colspan="3" valign="top" class="ukat2"> <? echo urldecode($db->f("name")); ?></td>
	</tr>
	<tr>
		<td colspan="3" height="10"></td>
	</tr>
	<tr> 
		<td colspan="3">
			<table border="0" cellpadding="0" cellspacing="0" width="100%">
				<tr>
					<td width="100%" class="tlcc_ukat2_link">
						<table border="0" cellpadding="0" cellspacing="0" align="left">
							<tr>
								<td><a href="<? echo $link; ?>"><img src="<? echo $bilddateiname; ?>" border="0" alt="" {$src_image_size[3]}></a></td>
								<td><img src="images/1p.trans.gif" width="6" height="1" alt=""></td>
							</tr>
							<tr>
								<td colspan="2"><img src="images/1p.trans.gif" width="1" height="6" alt=""></td>
							</tr>
						</table>
						<a href="<? echo $link; ?>" class="ukat2_link"><? echo $newsubheadline; ?></a><br>
					</td>
				</tr>
				<tr>
					<td colspan="3" height="15"></td>
				</tr>
			</table>
		</td>
	</tr>
</table>
<!-- AUSGABE ARTIKEL ENDE D1 -->
<?
			} else {
?>
<!-- AUSGABE ARTIKEL START D2 -->
<table border="0" cellpadding="0" cellspacing="0" width="<? echo $tabellenbreite; ?>">
	<tr>
		<td colspan="3" valign="top" class="ukat2"> <? echo urldecode($db->f("name")); ?></td>
	</tr>
	<tr>
		<td colspan="3" height="10"></td>
	</tr>
	<tr> 
		<td colspan="3">
			<table border="0" cellpadding="0" cellspacing="0" width="100%">
				<tr>
					<td width="100%" class="ukat2_link">
						<table border="0" cellpadding="0" cellspacing="0" align="left">
							<tr>
								<td><a href="<? echo $link; ?>"><img src="<? echo $bilddateiname; ?>" border="0" alt="" {$src_image_size[3]}></a></td>
							</tr>
							<tr>
								<td><img src="images/1p.trans.gif" width="1" height="6" alt=""></td>
							</tr>
							<tr>
								<td><a href="<? echo $link; ?>" class="tlcc_ukat2_link"><? echo $newsubheadline; ?></a></td>
							</tr>
						</table>
					</td>
				</tr>
				<tr>
					<td colspan="3" height="15"></td>
				</tr>
			</table>
		</td>
	</tr>
</table>
<!-- AUSGABE ARTIKEL ENDE D2 -->

<?
			}
		} else {
?>

<!-- AUSGABE ARTIKEL START -->
<table border="0" cellpadding="0" cellspacing="0" width="<? echo $tabellenbreite; ?>">
	<tr>
		<td colspan="3" valign="top" class="tlcc_ukat2"><img src="upload/tlcc/grafiken/tools/tlcc.pfeil.rot.gif" border="0" alt=""> <? echo urldecode($db->f("name")); ?></td>
	</tr>
	<tr>
		<td colspan="3" class="tlcc_height_1"></td>
	</tr>
	<tr> 
		<td colspan="3">
			<table border="0" cellpadding="0" cellspacing="0" width="100%">
				<tr>
					<td width="100%" class="tlcc_ukat2_link"><a href="<? echo $link; ?>" class="tlcc_ukat2_link"><? echo $newsubheadline; ?></a><br></td>
				</tr>
				<tr>
					<td colspan="3" class="tlcc_height_1"></td>
				</tr>
			</table>
		</td>
	</tr>
</table>
<!-- AUSGABE ARTIKEL ENDE -->

<?
		}

	    echo "</td>\n";

	    // wenn maximale spaltenbreite erreicht, setze spaltenzähler zurück
		if($spalte == $spalten){
			$spalte = 0;
		}
		// erhöhe spaltenzähler um 1
		$spalte++;

	$num++;
  }

}

$spalte = $spalte - 1;
$cp = $spalten - $spalte;
if($cp > 1){
	echo '<td colspan="'.$cp.'"></td>';
} else {
	echo "<td></td>\n";
}
echo "  </tr>\n";
echo "</table>\n"; 





if($navigationslink['display'] == ''){
    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) { 
        echo '<table cellpadding="0" cellspacing="0" width="100%"><tr>'; 
        if ($limit > 0) { 
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0); 
            echo "<td style=\"text-align:left\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>"; 
        } else { 
            echo '<td></td>'; 
        } 
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) { 
            $displaylimit = $limit + $angezeigte_anzahl; 
            echo "<td style=\"text-align:right\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>"; 
        } else { 
            echo '<td></td>'; 
        } 
        echo '</tr></table>'; 
    }
}

?>

Das wurde hinzugefügt ... (nur im OUTPUT)

Code: Alles auswählen

				{$cfg['tab']['cat_lang']} AS h

Code: Alles auswählen

		AND h.idlang = $lang
		AND h.idcat = c.idcat
		AND h.startidartlang = e.idartlang
Wer fragt, ist ein Narr für fünf Minuten.
Wer nicht fragt, bleibt es für immer.

Handy doof? Tarif doof? Rechnung zu hoch?
Unter www.cottbushandy.de wird dir sicher geholfen!
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

nur ne kleine anmerkung

ist nur lauffähig bei einer 4.6.x wenn

Code: Alles auswählen

/* Start article compatibility mode */
$cfg["is_start_compatible"] = false;
innerhalb der config.php gesetzt wurde...
*** make your own tools (wishlist :: thx)
Gesperrt