dieses modul hat nur die rumpffunktionen der übrigen artikellisten und dürfte primär als ausgangspunkt dienen.
es hat folgende features:
* automatische thumbnailgenerierung, wenn ein bild im bildmodul 1 vorliegt
* teaser wird aus der seitenzusammenfassung ungekürzt übernommen
* titel wird dem seitentitel entnommen
* startartikel sind ausgeblendet
* geht bis zu 2 kategorieebenen in die tiefe
input-bereich:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.alist.thumb.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 07-11-2004
* Modified : 07-11-2004
************************************************/
class pfadAlistThumb {
function pfadAlistThumb($pfad) {
$this->pfad = $pfad;
$this->pathlen = strlen($this->pfad);
}
function getPath($root,$level = 0) {
$content = $this->readDir($root);
foreach ($content as $file) {
if (is_dir($root.$file)) {
$verzeichnis = substr($root,$this->pathlen);
$returnvalue["{$verzeichnis}{$file}/"] = str_repeat(" ",$level * 5).$file;
$returnvalue = array_merge($returnvalue,$this->getPath($root.$file."/",$level+1));
}
}
return $returnvalue;
}
function readDir($path) {
$handle = opendir($path);
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") $returnvalue[] = $file;
}
closedir($handle);
return $returnvalue;
}
function makeSelect($preselection) {
$pfad = $this->getPath($this->pfad);
foreach ($pfad as $key => $value) {
echo "$key :: $value<br/>\n";
if ($preselection == $key) {
echo "<option value=\"$key\" selected=\"selected\">$value</option>";
} else {
echo "<option value=\"$key\">$value</option>";
}
}
}
}
$pfad = new pfadAlistThumb($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload']);
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">";
echo "<tr><td>Thumbnailpfad:</td>";
echo "<td><select size=\"1\" name=\"CMS_VAR[0]\" />";
$pfad->makeSelect("CMS_VALUE[0]");
echo "</td>";
echo "<tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[1]\">";
$selected = "CMS_VALUE[1]";
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[2]\" value=\"CMS_VALUE[2]\" size=\"3\" /></td>";
echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"15\" /></td>";
echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"15\" /></td>";
echo "<tr><td>Thumbnail-Breite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"5\" /></td>";
echo "<tr><td>Artikel anzeigen bis:</td>";
echo "<td><select name=\"CMS_VAR[6]\">";
$ebene = "CMS_VALUE[6]";
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
output-bereich:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.alist.mod4.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-21-2004
* Modified : 06-21-2004
************************************************/
class alistThumbs {
function alistThumbs() {
// Initialwerte festlegen
$this->setIniValues();
// Datenbankverbindung herstellen
$this->db = new DB_Contenido;
$this->db2 = new DB_Contenido;
// Anzahl Artikel ermitteln
$this->anzahl_artikel = $this->getNumberOfArticles();
// Artikel auslesen
$this->getArticles();
// Artikel ausgeben
$this->showArticles();
// Navigation ausgeben
$this->showNavigation();
}
function setIniValues() {
$bildzielpfad = "CMS_VALUE[0]";
$this->bildzielpfad['frontend'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$bildzielpfad;
$this->bildzielpfad['backend'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$bildzielpfad;
$this->categorie = "CMS_VALUE[1]";
$this->angezeigte_anzahl = "CMS_VALUE[2]";
if ($this->angezeigte_anzahl == '') $this->angezeigte_anzahl = 10;
$this->navigationslink['previous'] = "CMS_VALUE[3]";
if ($this->navigationslink['previous'] == '') $this->navigationslink['previous'] = '[:: rückwärts ]';
$this->navigationslink['next'] = "CMS_VALUE[4]";
if ($this->navigationslink['next'] == '') $this->navigationslink['next'] = '[ vorwärts ::]';
$this->ebene = "CMS_VALUE[6]";
$this->bildbreite = "CMS_VALUE[5]";
$this->limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
}
function createImage($dirname, $filename) {
global $cfg, $cfgClient, $client;
$bilddateiname = "{$this->bildbreite}_$filename.jpg";
if (!file_exists("{$this->bildzielpfad['backend']}$bilddateiname")) {
$src_image_size = getimagesize($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
$bildhoehe = round($src_image_size[1] * $this->bildbreite / $src_image_size[0]);
if ($bildhoehe > $this->bildbreite) {
$bildhoehe = $this->bildbreite;
$bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]);
} else {
$bildbreite = $this->bildbreite;
}
$dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);
if ($src_image_size[2] == 1) {
$src_im = imagecreatefromGIF($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
} elseif ($src_image_size[2] == 2) {
$src_im = ImageCreateFromJPEG($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
} else {
$src_im = imagecreatefromgd($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
}
imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
imagejpeg ($dst_im,$this->bildzielpfad['backend'].$bilddateiname,100);
}
return $this->bildzielpfad['frontend'].$bilddateiname;
}
function showNavigation() {
global $sess, $client, $lang, $idcat, $idart, $cfgClient;
if ($this->limit > 0 || $this->anzahl_artikel > $this->limit + $this->angezeigte_anzahl) {
echo '<table cellpadding="0" cellspacing="0" style="width:100%"><tr>';
if ($this->limit > 0) {
$displaylimit = ($this->limit - $this->angezeigte_anzahl >= 0)?($this->limit - $this->angezeigte_anzahl):(0);
echo "<td style=\"text-align:left\"><a href=\"".$sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$this->navigationslink['previous']}</a></td>";
} else {
echo '<td> </td>';
}
if ($this->anzahl_artikel > $this->limit + $this->angezeigte_anzahl) {
$displaylimit = $this->limit + $this->angezeigte_anzahl;
echo "<td style=\"text-align:right\"><a href=\"".$sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$this->navigationslink['next']}</a></td>";
} else {
echo '<td> </td>';
}
echo '</tr></table></p>';
}
}
function getNumberOfArticles() {
global $cfg, $lang;
switch ($this->ebene) {
case -2:
$this->db->query("
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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
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 = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
case -1:
$this->db->query("
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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
case 0:
$this->db->query("
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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
}
$this->db->next_record();
return $this->db->f('anzahl');
}
function getArticles() {
global $cfg, $lang;
switch ($this->ebene) {
case -2:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, 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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
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 = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
case -1:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, 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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
case 0:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, 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
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
}
$counter = 0;
while ($this->db->next_record()) {
$this->articles[$counter]['name'] = $this->db->f('name');
$this->articles[$counter]['pagetitle'] = $this->db->f('pagetitle');
$this->articles[$counter]['idcat'] = $this->db->f('idcat');
$this->articles[$counter]['idart'] = $this->db->f('idart');
$this->articles[$counter]['idartlang'] = $this->db->f('idartlang');
$this->articles[$counter]['created'] = $this->db->f('erstellungsdatum');
$this->articles[$counter]['summary'] = $this->db->f('summary');
$counter++;
}
for ($i=0;$i<count($this->articles);$i++) {
$this->db->query("
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 = {$this->articles[$i]['idartlang']}
AND b.type = 'CMS_IMG'
");
if ($this->db->next_record()) {
$this->articles[$i]['picture'] = $this->createImage($this->db->f('dirname'),$this->db->f('filename'));
}
}
}
function showArticles() {
global $sess, $cfgClient, $client, $lang, $edit;
if (count($this->articles) == 0 || $edit) {
echo "<div class=\"text\">CMS_HTML[10]</div>";
} else {
echo '<table class="alist" width="100%" cellspacing="0" cellpadding="0">';
for ($i=0;$i<count($this->articles);$i++) {
list($key,$artikel) = each($this->articles);
$link = $sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?idcat={$artikel['idcat']}&idart={$artikel['idart']}");
// Titelzeile ausgeben
echo "<tr><td class=\"alistHeader\"><a href=\"$link\" class=\"alistHeader\">{$artikel['pagetitle']}</a></td><td class=\"alistCreated\">{$artikel['created']}</td></tr>";
if (!empty($artikel['picture'])) {
// Zusammenfassung und Bild ausgeben
echo "<tr><td class=\"alistSummary\">{$artikel['summary']}</td><td class=\"alistPicture\"><a href=\"$link\"><img src=\"{$artikel['picture']}\" border=\"0\"/></a></td></tr>";
} else {
// Zusammenfassung ausgeben
echo "<tr><td colspan=\"2\" class=\"alistSummary\">{$artikel['summary']}</td></tr>";
}
if ($i < count($this->articles) -1) {
echo '<tr><td colspan="2" class="alistSeparator"><img src="/cms/images/green_pixel.gif" width="522" height="1" border="0"></td></tr>';
}
}
echo '</table>';
}
}
}
$alistThumbs = new alistThumbs();
?>
andreas