w3concepts.alist.mod3, erst ab 3. Artikel

Gesperrt
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

w3concepts.alist.mod3, erst ab 3. Artikel

Beitrag 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>';
}

?>
Zuletzt geändert von maTTos am Fr 24. Sep 2004, 13:35, insgesamt 1-mal geändert.
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

du solltest erstmal definieren, was der "3. artikel" überhaupt ist...also in abhängigkeit der sortierreihenfolge...
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von maTTos am Fr 24. Sep 2004, 13:38, insgesamt 1-mal geändert.
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

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

Beitrag 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?
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag 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
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos »

Vielen lieben Dank, genau das ist es! Mein Leben geht weiter ... :D :D :D Ergebnisse gibts bald unter "Webseiten der Community". :P
Gesperrt