Seite 1 von 1

w3concepts.alist.mod3, erst ab 3. Artikel

Verfasst: Fr 24. Sep 2004, 13:05
von maTTos
Hi, ich bräuchte das geniale Modul "w3concepts.alist.mod3" so geändert, dass die Artikelliste erst ab dem dritten Artikel beginnt. Kann mir jemand sagen, wo ich welche Zeile wie abändern muss? Thx! :)

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts_alist_v1.mod3
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
* Modified : 30-07-2004 by ulisteinle
************************************************/


$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>";
}
}
// Mod: Sortieren der Artikel (30-07-2004 US) --->StArt

$strSort = "CMS_VALUE[8]";
echo "<tr><td>Artikel sortieren nach:</td>";
echo "<td><select name=\"CMS_VAR[8]\">";
if ($strSort == "e.created"){
echo "<option value=\"e.created\" selected>Datum</option>";
}else{
echo "<option value=\"e.created\">Datum</option>";
}
if ($strSort == "e.artsort"){
echo "<option value=\"e.artsort\" selected>Sortierschlüssel</option>";
}else{
echo "<option value=\"e.artsort\">Sortierschlüssel</option>";
}
if ($strSort == "e.title"){
echo "<option value=\"e.title\" selected>Alphabetisch</option>";
}else{
echo "<option value=\"e.title\">Alphabetisch</option>";
}
echo "</select>";

$strRichtung= "CMS_VALUE[9]";

echo "<tr><td>Sortierrichtung umkehren</td>";
if ($strRichtung!= '') {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[9]\" value=\"true\" size=\"3\" checked=\"checked\"/> (Aktuell: Absteigend)</td>";
} else {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[9]\" value=\"true\" size=\"3\"/> (Aktuell: Aufsteigend)</td>";
}
// Mod: Sortieren der Artikel (30-07-2004 US) <---EnDe

echo "</table>";
<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts_alist_v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
* Modified : 30-07-2004 by ulisteinle
************************************************/

// 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);

// Mod: Sortieren der Artikel (30-07-2004 US) --->StArt
// Sorieren
$strSort = "CMS_VALUE[8]";
if ($strSort =="") {
$strSort ="e.created";
}

// Sortierrichtung
$strRichtung= "CMS_VALUE[9]";
if ($strRichtung == '') {
$strRichtung = " DESC";
}else{
$strRichtung = " ASC";
}
// Mod: Sortieren der Artikel (30-07-2004 US) <---EnDe


$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 $strSort $strRichtung
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 $strSort $strRichtung
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 $strSort $strRichtung
LIMIT $limit, $angezeigte_anzahl
";
break;
}

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

$db->query($sql_2);
echo '

<table cellpadding="0" cellspacing="0" border="0" style="width:100%;" align="center">
<tr>
<td style="height:20px; padding-left:10px; background-image:url(images/g_lasche.jpg);"><span class="pfad1">Termine</span></td>
</tr>
</table>

<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td colspan="2" style="height:10px"></td>
</tr>';

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 colspan=\"2\" style=\"padding-left:10px;\"><span class=\"termin3\"><img src=\"images/kalender_klein.gif\" alt=\"\" border= \"0\"> ".urldecode($db2->f("value"))."</span></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 class=\"artlist_subheadline\" style=\"width:10px;\"></td><td class=\"termin1\" align=\"left\" valign=\"top\"><img src=\"images/kasten.gif\" alt=\"\" border= \"0\" align=\"left\">$newsubheadline</td></tr>";
} else {
echo "<tr><td style=\"width:10px;\"></td><td align=\"left\" valign=\"top\" style=\"padding-right:10px;\"><span class=\"termin1\">$newsubheadline <a href=\"$link\">weiter</a></span></td></tr>";

}

echo '<tr><td colspan="2" style="height:10px;"></td></tr>';
}

?>

Verfasst: Fr 24. Sep 2004, 13:13
von timo
du solltest erstmal definieren, was der "3. artikel" überhaupt ist...also in abhängigkeit der sortierreihenfolge...

Verfasst: Fr 24. Sep 2004, 13:33
von maTTos
Du hast recht! Aber spielt die Sortierreihenfolge eine Rolle? Sortiert wird nach der schon eingebauten Erweiterung: Datum, Sortierschlüssel oder Alphabet.

In meinem Fall sollen die Artikel nach dem Erstellungsdatum sortiert werden. Also, ich benötige das Modul so:

1. Artikel = Startartikel (nicht anzeigen)
2. Artikel = (nicht anzeigen)
3. Artikel = (anzeigen)

Das ganze muss nicht über den Inputbereich ausgewählt werden können, sondern kann direkt im Code stehen.

Verfasst: Fr 24. Sep 2004, 13:37
von timo
mach mal hinter das SQL-Statement ein LIMIT ,3 (nichts vor dem Komma), das müßte gehen. Falls nicht, schau mal in den MySQL docs nach

Verfasst: Fr 24. Sep 2004, 14:05
von maTTos
Sorry, bin da ein echter n00b. Ich gehe mal davon aus, dass Du diese SQL-Zeile meinst, die drei mal vorkommt:
LIMIT $limit, $angezeigte_anzahl
Wie soll ich diese austauschen? Gegen

1: LIMIT ,3
2: LIMIT $limit, $angezeigte_anzahl ,3


Bei Option eins steht das in meinem Error-Log:
[24-Sep-2004 14:55:58] Invalid SQL:
SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM fh_cat AS a,
fh_cat AS b,
fh_cat AS c
LEFT JOIN fh_cat_art AS d ON c.idcat = d.idcat
LEFT JOIN fh_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 = 0
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = 1
AND d.is_start = 0
ORDER BY e.created DESC
LIMIT ,3
<br><br>
[24-Sep-2004 14:55:58] next_record called with no query pending
.

Option 2 zeigt diese Zeilen:
[24-Sep-2004 15:07:09] next_record called with no query pending.
[24-Sep-2004 15:07:09] Invalid SQL:
SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM fh_cat AS a,
fh_cat AS b,
fh_cat AS c
LEFT JOIN fh_cat_art AS d ON c.idcat = d.idcat
LEFT JOIN fh_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 = 0
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = 1
AND d.is_start = 0
ORDER BY e.created DESC
LIMIT 0, 2 ,3
<br><br>
[24-Sep-2004 15:07:09] next_record called with no query pending.
Kann mir bitte jemand weiterhelfen?

Verfasst: Fr 1. Okt 2004, 11:22
von kummer
du hast so ziemlich am anfang des output-scriptes folgende zeile:

Code: Alles auswählen

$limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
unterhalb dieser zeile fügst du folgende zeile ein:

Code: Alles auswählen

$limit = ($limit<2)?(2):($limit);
dann sollte es schon klappen. mehr ist nach meiner einschätzung nicht zu tun. probier das mal aus und gib bescheid, wenn's nicht funktionieren sollte. ich gehe dabei natürlich davon aus, dass die startartikel sowieso schon ausgeblendet sind und die sortierung richtig ist.

gruss,
andreas

Verfasst: Fr 1. Okt 2004, 11:30
von maTTos
Vielen lieben Dank, genau das ist es! Mein Leben geht weiter ... :D :D :D Ergebnisse gibts bald unter "Webseiten der Community". :P