Artikel Modul mehrspaltig einstellbar
Verfasst: Mi 19. Okt 2005, 14:50
Hallo,
ich habe mal das Artikelmodul von Kummer ein wenig abgeändert. Nun kann man
Output
Resultate sind zu sehen unter anderem hier ...
http://www.tomquenten.de/front_content.php
http://tlcc.de/front_content.php?idcat=3
Viel Spass!
Gruss
Tom Quneten
ich habe mal das Artikelmodul von Kummer ein wenig abgeändert. Nun kann man
- - Spalten einstellen (Artikel nebeneinander)
- die Tabellenbreite der Spalte fixieren (manchmal notwendig)
- die Abstände zwischen den Spalten definieren (Angabe in Pixel)
Code: Alles auswählen
$selected = "CMS_VALUE[3620]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[3620]\">";
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[3621]\" value=\"CMS_VALUE[3621]\" size=\"3\" /></td>";
echo "<tr><td>Startartikel anzeigen?</td>";
$startartikel = "CMS_VALUE[3622]";
if ($startartikel != '') {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[3622]\" value=\"true\" size=\"3\" checked=\"checked\"/></td>";
} else {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[3622]\" value=\"true\" size=\"3\"/></td>";
}
echo "<tr><td>Anzahl angezeigte Zeichen der Subheadline:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3623]\" value=\"CMS_VALUE[3623]\" size=\"5\" /></td>";
echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3624]\" value=\"CMS_VALUE[3624]\" size=\"15\" /></td>";
echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3625]\" value=\"CMS_VALUE[3625]\" size=\"15\" /></td>";
echo "<tr><td>Tabellen-Breite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3626]\" value=\"CMS_VALUE[3626]\" 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[3627]\" value=\"CMS_VALUE[3627]\" size=\"5\" /></td>";
echo "<tr><td>Anzahl Artikel nebeneinander:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3628]\" value=\"CMS_VALUE[3628]\" size=\"5\" /></td>";
echo "<tr><td>Spaltenabstand nebeneinander in Pixel:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3629]\" value=\"CMS_VALUE[3629]\" size=\"5\" /></td>";
echo "<tr><td>Artikel anzeigen bis:</td>";
echo "<td><select name=\"CMS_VAR[3630]\">";
$ebene = "CMS_VALUE[3630]";
for ($i=0;$i>-3;$i--) {
if ($i == $ebene) {
echo"<option value=\"$i\" selected=\"selected\">Ebene $i</option>";
} else {
echo"<option value=\"$i\">Ebene $i</option>";
}
}
echo "</table>";
Code: Alles auswählen
<?php
// 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[3620]";
$angezeigte_anzahl = "CMS_VALUE[3621]";
if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10;
$startartikel = "CMS_VALUE[3622]";
if ($startartikel == '') $startartikel = false;
$subheadline = "CMS_VALUE[3623]";
if ($subheadline == '') $subheadline = 200;
$navigationslink['previous'] = "CMS_VALUE[3624]";
if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]';
$navigationslink['next'] = "CMS_VALUE[3625]";
if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]';
$tabellenbreite = "CMS_VALUE[3626]";
if ($tabellenbreite <= '0'){ $tabellenbreite = '100%';}
$thumbnailbreite = "CMS_VALUE[3627]";
$limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
$spalten = "CMS_VALUE[3628]";
if ($spalten <= '0'){ $spalten = '1';}
$spaltenabstand = "CMS_VALUE[3629]";
if ($spaltenabstand <= '0'){ $spaltenabstand = '10';}
$ebene = "CMS_VALUE[3630]";
$db = new DB_Contenido;
$db2 = new DB_Contenido;
// wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht
$nurstartartikel = ($startartikel)?(''):('AND d.is_start = 0');
// liest die anzahl betroffener artikel aus der datenbank
switch ($ebene){
case -2:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
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
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT 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
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
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
case -1:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
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 e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT 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
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
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 e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
case 0:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
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.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT 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
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
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
}
//absetzen der formulierten Anfragen an den SQL Server
$db->query($sql_1);
$db->next_record();
$anzahl_artikel = $db->f("anzahl");
$artikel = $anzahl_artikel;
$db->query($sql_2);
//beginn der ausgabe
echo"\n";
echo '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
echo "\n<tr>\n";
$num = 0;
$spalte = 1;
while ($db->next_record()){
//anfrage für den aktuellen artikel erstellen
$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
WHERE a.idartlang = ".$db->f("idartlang")."
AND
(
b.type = 'CMS_HTML'
)
ORDER BY b.type, a.typeid ASC
";
//absetzen der formulierten Anfragen an den SQL Server
$db2->query($sql);
while ($db2->next_record()){
$idtype = ($db2->f('idtype'));
$typeid = ($db2->f('typeid'));
// Headline
if ($typeid == 120){
$headline = urldecode($db2->f("value"));
}
if ($typeid == 1110){
$headline = urldecode($db2->f("value"));
}
$headlinearray[$db2->f('typeid')] = $headline;
}
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));
$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
WHERE a.idartlang = ".$db->f("idartlang")."
AND
(
b.type = 'CMS_HTML'
)
ORDER BY b.type, a.typeid ASC
";
//absetzen der formulierten Anfragen an den SQL Server
$db2->query($sql);
$db2->next_record();
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">';
// den artikel auf die gewünschte länge reduzieren (trennung nur
// nach bzw. vor einem ganzen wort
if (strlen($headlinearray[1110]) > $subheadline){
$newsubheadline = '';
$worte = explode (" ",strip_tags($headlinearray[1110]));
$zulang = false;
foreach ($worte as $wort){
if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
$newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
}
$newsubheadline .= "...";
} else {
$newsubheadline = strip_tags($headlinearray[1110]);
}
$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
WHERE a.idartlang = ".$db->f("idartlang")."
AND
(
b.type = 'CMS_IMG'
)
ORDER BY b.type, a.typeid ASC
";
//absetzen der formulierten Anfragen an den SQL Server
$db2->query($sql);
$bild_vorhanden = false;
while ($db2->next_record()){
if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 2110){
$bilddateiname = "{$thumbnailpfad}{$thumbnailbreite}_".$db2->f("filename").".jpg";
if (!file_exists($cfg['path']['frontend'].$bilddateiname)){
$src_image_size = getimagesize($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
$bildbreite = $thumbnailbreite;
$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[3627]";
$width += 5;
$src_image_size = getimagesize($cfg['path']['frontend'].$bilddateiname);
?>
<!-- AUSGABE ARTIKEL START MB-->
<table border="0" width="<? echo $tabellenbreite; ?>" cellpadding="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#3399FF">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="100%" bgcolor="#ffffff">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%" bgcolor="#3399ff" class="ukat2"><img src="images/1p.trans.gif" border="0" alt="" width="2" height="1"><? echo $headlinearray[120]; ?></td>
</tr>
<tr>
<td width="100%">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
<td width="100%">
<table border="0" cellpadding="0" cellspacing="0" align="left">
<tr>
<td><a href="<? echo $link; ?>"><img src="<? echo $bilddateiname; ?>" border="0" alt=""></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="ukat_link"><? echo $newsubheadline; ?></a><br>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<!-- AUSGABE ARTIKEL ENDE MB-->
<?
}else{
?>
<!-- AUSGABE ARTIKEL START OB-->
<table border="0" width="<? echo $tabellenbreite; ?>" cellpadding="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#3399FF">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="100%" bgcolor="#ffffff">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%" bgcolor="#3399ff" class="ukat2"><img src="images/1p.trans.gif" border="0" alt="" width="5" height="1"><? echo $headlinearray[120]; ?></td>
</tr>
<tr>
<td width="100%">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
<td width="100%"><a href="<? echo $link; ?>" class="ukat_link"><? echo $newsubheadline; ?></a><br></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<!-- AUSGABE ARTIKEL ENDE OB-->
<?
}
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++;
}
}
echo '</table>';
if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl){
echo '<table cellpadding="0" cellspacing="0" style="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>";
// echo "<td style=\"text-align:left\"><a href=\"".$sess->url("/$client/$lang/$idcat/$idart/$displaylimit.html")."\">{$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>";
// echo "<td style=\"text-align:right\"><a href=\"".$sess->url("/$client/$lang/$idcat/$idart/$displaylimit.html")."\">{$navigationslink['next']}</a></td>";
} else {
echo '<td> </td>';
}
echo '</tr></table>';
}
?>
http://www.tomquenten.de/front_content.php
http://tlcc.de/front_content.php?idcat=3
Viel Spass!
Gruss
Tom Quneten