Artikelliste mit Erstelldatum + Anzeige mehrere Kategorien

Gesperrt
Beagol
Beiträge: 26
Registriert: Mi 22. Dez 2004, 10:53
Kontaktdaten:

Artikelliste mit Erstelldatum + Anzeige mehrere Kategorien

Beitrag von Beagol »

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
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos »

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 8)
Beagol
Beiträge: 26
Registriert: Mi 22. Dez 2004, 10:53
Kontaktdaten:

Beitrag von Beagol »

maTTos hat geschrieben:Vielleicht hilft dir das.
Nee...
hilft nicht wirklich, aber Danke.

Ich brauche echt nur die kleine Liste aus dem Standard, die dann auf alle Kategorien schaut und dabei die zwei neusten einer Kategorie anzeigt.

Auch schöne Weihnachten!

Beagol
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

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).
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos »

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!
Beagol
Beiträge: 26
Registriert: Mi 22. Dez 2004, 10:53
Kontaktdaten:

Beitrag von Beagol »

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).
Hi Halchteranerin,
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 :wink:

Welchen Fehler beinhaltet denn die Standard Artikelliste :?:


Gruß
Beagol
Beagol
Beiträge: 26
Registriert: Mi 22. Dez 2004, 10:53
Kontaktdaten:

Beitrag von Beagol »

maTTos hat geschrieben:Das ist wirklich einfach mit der Artikelliste zu organisieren.
Hi maTTos,

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
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos »

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:
/***********************************************
* 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&nbsp;...</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&nbsp;...</a></span></td></tr>
<tr><td colspan=\"2\" style=\"height:10px;\"><br></td></tr>
";
}

}

echo '</table>';

?>
Beagol
Beiträge: 26
Registriert: Mi 22. Dez 2004, 10:53
Kontaktdaten:

Beitrag von Beagol »

Hmm

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
Was heißt das?

Merkt man das ich php nicht kann? :roll:
maTTos_

Beitrag von maTTos_ »

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ß
Gesperrt