Artikelliste mit Erstelldatum + Anzeige mehrere Kategorien
Artikelliste mit Erstelldatum + Anzeige mehrere Kategorien
Hallo zusammen,
folgendes Szenario:
Ich warte ehrenamtlich die Seite meines Sportverein und möchte nun contenido dafür einsetzten.
Der Sporverein hat mehrere Abteilungen. Ich habe dies in contenido mit den Kategorien organisiert.
Jeder Abteilungsleiter soll seine Kategorie pflegen und Artikel einstellen und pflegen.
Auf der Hauptseite möchte ich nun eine Artikelliste mit den neusten Artikeln aus allen Kategorien anzeigen. Am besten mit Erstellungsdatum dahinter , ist aber nicht sooo wichtig.
Ich stelle mir das so vor das die jeweils zwei aktuellsten Artikel aus jeder Abteilung angezeigt werden.
Geht das mit dem Standard? Oder ist da ein Modul in der Community, welches sowas abdeckt. Hab schon gesucht, aber nicht wirklich was gefunden.
Danke vorab
Gruss
Beagol
folgendes Szenario:
Ich warte ehrenamtlich die Seite meines Sportverein und möchte nun contenido dafür einsetzten.
Der Sporverein hat mehrere Abteilungen. Ich habe dies in contenido mit den Kategorien organisiert.
Jeder Abteilungsleiter soll seine Kategorie pflegen und Artikel einstellen und pflegen.
Auf der Hauptseite möchte ich nun eine Artikelliste mit den neusten Artikeln aus allen Kategorien anzeigen. Am besten mit Erstellungsdatum dahinter , ist aber nicht sooo wichtig.
Ich stelle mir das so vor das die jeweils zwei aktuellsten Artikel aus jeder Abteilung angezeigt werden.
Geht das mit dem Standard? Oder ist da ein Modul in der Community, welches sowas abdeckt. Hab schon gesucht, aber nicht wirklich was gefunden.
Danke vorab
Gruss
Beagol
Hallo Beagol, ich habe das Problem durch den mehrfachen Einsatz der Artikelliste von Kummer gelöst. Wirf doch mal einen Blick auf:
www.fh-doppelpunkt.de
Dort werden die Hauptartikel aus jeder Kategorie mit Bild und Vorpsann abgegriffen. Darunter folgen drei Headlines zu weiteren Artikeln.
Insgesamt wird die Artikelliste zwölfmal verwendet. Schön an dem Modul von Kummer ist, dass es sich mehrmals auf einer Seite einsetzen lässt. Dadurch musst ich nicht zwölf Module einzeln anlegen, sondern nur im Template zuweisen. Vielleicht hilft dir das.
Vorweihnachtliche Grüße, maTTos
www.fh-doppelpunkt.de

Dort werden die Hauptartikel aus jeder Kategorie mit Bild und Vorpsann abgegriffen. Darunter folgen drei Headlines zu weiteren Artikeln.
Insgesamt wird die Artikelliste zwölfmal verwendet. Schön an dem Modul von Kummer ist, dass es sich mehrmals auf einer Seite einsetzen lässt. Dadurch musst ich nicht zwölf Module einzeln anlegen, sondern nur im Template zuweisen. Vielleicht hilft dir das.
Vorweihnachtliche Grüße, maTTos

-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
die kleine Liste aus dem Standard (die uebrigens auch noch fehlerhaft ist) schaut NICHT auf alle Kategorien sondern nur auf diejenige, mit der sie konfiguriert wurde.
Wenn dir die Loesung mit dem mehrfachen Einsatz einer Artikelliste nicht zusagt, musst du wohl oder uebel etwas eigenes schreiben (oder etwas, was schon besteht, aendern).
Wenn dir die Loesung mit dem mehrfachen Einsatz einer Artikelliste nicht zusagt, musst du wohl oder uebel etwas eigenes schreiben (oder etwas, was schon besteht, aendern).
Das ist wirklich einfach mit der Artikelliste zu organisieren. Es ist nicht viel Arbeit, es kann schnell realisiert werden und du musst es nur einmal machen.
1. Modul w3concepts.alist.mod3 auf w3concepts.net herunterladen.
2. Für jeden Kategorie einen Container im Layout anlegen, à la
CMS_CONTAINER[1]
CMS_CONTAINER[2]
CMS_CONTAINER[3]
...
3. Das gleiche Modul (also die Artikelliste) jedem Container zuweisen
3. So konfigurieren, dass jeweils zwei Artikel aus der entsprechenden Kategorie abgegriffen werden.
5. Fertig!
1. Modul w3concepts.alist.mod3 auf w3concepts.net herunterladen.
2. Für jeden Kategorie einen Container im Layout anlegen, à la
CMS_CONTAINER[1]
CMS_CONTAINER[2]
CMS_CONTAINER[3]
...
3. Das gleiche Modul (also die Artikelliste) jedem Container zuweisen
3. So konfigurieren, dass jeweils zwei Artikel aus der entsprechenden Kategorie abgegriffen werden.
5. Fertig!
Hi Halchteranerin,Halchteranerin hat geschrieben:die kleine Liste aus dem Standard (die uebrigens auch noch fehlerhaft ist) schaut NICHT auf alle Kategorien sondern nur auf diejenige, mit der sie konfiguriert wurde.
Wenn dir die Loesung mit dem mehrfachen Einsatz einer Artikelliste nicht zusagt, musst du wohl oder uebel etwas eigenes schreiben (oder etwas, was schon besteht, aendern).
danke für Deine Antwort, aber ich weiß schon, dass die Liste NICHT auf alle Kategorien schaut. Daher meine Anfrage.
Und Ja, ich suche etwas, was schon besteht, daher die Anfrage unter diesem Topic

Welchen Fehler beinhaltet denn die Standard Artikelliste

Gruß
Beagol
Hi maTTos,maTTos hat geschrieben:Das ist wirklich einfach mit der Artikelliste zu organisieren.
jaaaaaaa der Wald mit den Bäumen..... So einfach kann es sein

Wenn Du mir jetzt noch verrätst, wie ich
1. die Artikelliste so konfigurien kann, das nur die beiden jüngsten Artikel anzeigt.
2. das Erstellungsdatum mit in die Anzeige in der Liste bekkomme
dann habe ich wirklich tolle Weihnachten

Gruss
Beagol
Am besten du nimmst den folgenden Code, der ist schon soweit angepasst. Achte auf die verschiedenen CSS-Formatierungen à la <span class="datum1">, etc., die musst du noch abändern.
Bei der Konfiguration des Moduls stellst du die folgenden Werte ein:
Kategorie: Die für deine erste Kategorie
Anzahl der Artikel je Seite: 2
Startartikel anzeigen: Habe ich bei mir kein Häckchen drin, da der Startartikel bei mir wiederum eine Artikelliste ist (s. www.fh-doppelpunkt.de)
Text für previous link: Nichts eintragen
Text für next link: Nichts eintragen
Thumbnailbreit: Die gewünschte Größe des Thumnails
Artikel anzeigen bis: Ebene -2
Input:
Output:
Bei der Konfiguration des Moduls stellst du die folgenden Werte ein:
Kategorie: Die für deine erste Kategorie
Anzahl der Artikel je Seite: 2
Startartikel anzeigen: Habe ich bei mir kein Häckchen drin, da der Startartikel bei mir wiederum eine Artikelliste ist (s. www.fh-doppelpunkt.de)
Text für previous link: Nichts eintragen
Text für next link: Nichts eintragen
Thumbnailbreit: Die gewünschte Größe des Thumnails
Artikel anzeigen bis: Ebene -2
Input:
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts_alist_v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
************************************************/
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[0]\">";
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[1]\" value=\"CMS_VALUE[1]\" size=\"3\" /></td>";
echo "<tr><td>Startartikel anzeigen?</td>";
$startartikel = "CMS_VALUE[2]";
if ($startartikel != '') {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\" checked=\"checked\"/></td>";
} else {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\"/></td>";
}
echo "<tr><td>Anzahl angezeigte Zeichen der Subheadline:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>";
echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"15\" /></td>";
echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"15\" /></td>";
echo "<tr><td>Thumbnail-Breite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\" 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>";
Output:
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts_alist_v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
************************************************/
$cfg["tab"]["comments"] = $cfg['sql']['sqlprefix']."_comments"; // for syntax reasons only
$db = new DB_Contenido; // do not set global !!
$num = $db->num_rows($db->query("SELECT idcomments FROM ".$cfg["tab"]["comments"]." WHERE idclient =".$client." AND idlang = ".$lang." AND idart = ".$idart." AND status ='1' "));
$db->next_record();
// manuelle konfiguration des moduls
$uploadpfad = "/cms/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende)
$thumbnailpfad = "/cms/upload/auto_thumbnails/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende)
// konfiguration
$categorie = "CMS_VALUE[0]";
$angezeigte_anzahl = "CMS_VALUE[1]";
if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10;
$startartikel = "CMS_VALUE[2]";
if ($startartikel == '') $startartikel = false;
$subheadline = "CMS_VALUE[3]";
if ($subheadline == '') $subheadline = 200;
$navigationslink['previous'] = "CMS_VALUE[4]";
if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]';
$navigationslink['next'] = "CMS_VALUE[5]";
if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]';
$ebene = "CMS_VALUE[6]";
$bildbreite = "CMS_VALUE[7]";
$limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
$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;
}
$db->query($sql_1);
$db->next_record();
$anzahl_artikel = $db->f("anzahl");
$db->query($sql_2);
echo '<table border="0" cellpadding="0" cellspacing="0" style="width:100%;">';
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
WHERE
a.idartlang = ".$db->f("idartlang")."
AND (
b.type = 'CMS_HTMLHEAD'
OR b.type = 'CMS_IMG'
)
ORDER BY b.type, a.typeid ASC
";
// print "<p>$sql</p>";
$db2->query($sql);
$db2->next_record();
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));
echo "<tr><td align=\"left\" valign=\"top\" colspan=\"2\"><a href=\"$link\" class=\"head2\">".urldecode($db2->f("value"))." </a> <span class=\"datum1\">(".$db->f("erstellungsdatum").")</span><br><img src=\"images/l.gif\" width=\"1\" height=\"6\" alt=\"\" style=\"border-width:0px;\"></td></tr>";
$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") == 1) {
$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[7]";
$width += 5;
echo "<tr><td colspan=\"2\"><a href=\"$link\"><img src=\"$bilddateiname\" style=\"border-width:0px; margin-right:5px; float:left;\" alt=\"Bildbeschreibung im Artikel\"></a><span class=\"text1\">$newsubheadline <a href=\"$link\">mehr ...</a></span></td></tr><tr><td colspan=\"2\" style=\"height:10px;\"><br></td></tr>";
} else {
echo "<tr><td colspan=\"2\" align=\"left\"><span class=\"text1\">$newsubheadline <a href=\"$link\">mehr ...</a></span></td></tr>
<tr><td colspan=\"2\" style=\"height:10px;\"><br></td></tr>
";
}
}
echo '</table>';
?>
Hmm
Danke erstmal.
Aber das Modul schmeißt folgende Fehlermeldungen:
Was heißt das?
Merkt man das ich php nicht kann?
Danke erstmal.
Aber das Modul schmeißt folgende Fehlermeldungen:
Code: Alles auswählen
Warning: getimagesize(): Read error! in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1058
Warning: Division by zero in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1060
Warning: imagecreatetruecolor(): Invalid image dimensions in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1066
Warning: imagecreatefromgd(): '/var/www/web495/html/1/cms/upload/' is not a valid GD file in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1073
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1076
Warning: imagejpeg(): supplied argument is not a valid Image resource in /var/www/web495/html/1/cms/front_content.php(563) : eval()'d code on line 1077
Merkt man das ich php nicht kann?

Ich kann auch kein Stück php, aber die Fehlermeldung scheint sich auf die Verkleinerung der Bilder zu beziehen. Die Funktionen getimagesize(), imagecreatetruecolor(), imagecopyresampled() weisen darauf hin. Vielleicht nennst Du mal Deine Systemdaten (Provider, Contenido-Version, und und und). Evt. wird da etwas mit dem Image nicht unterstützt. Die Experten hier im Forum wissen dies sicher zu deuten. Gruß