da es schon mehrfach nachgefragt wurde und ich mein Posting nicht mehr finde, wo ich das Modul schon mal veroeffentlicht haben will , poste ich es an dieser Stelle nochmal.
Es ist eine Ergaenzung zum Terminuebersicht-Modul von agon (http://www.contenido.org/forum/viewtopic.php?t=2155), und es dient dazu, auf der Startseite die naechsten x Termine aufzulisten. "x" kann im Modul an der entsprechenden Stelle (ich habe die Stelle kommentiert) geaendert werden. Zur Benutzung: das Modul muss einem Container der gewuenschten Seite (in der Regel die Startseite) zugewiesen werden. In der Artikelkonfiguration fuer diejenige Seite kann (bzw. muss!) die Kategorie angegeben/ausgewaehlt werden, welche die eigentlichen Termine enthaelt.
emergence hat den Output-Code schoener formatiert und eine Aenderung eingebaut, dass die SQL-Abfrage auch dann funktioniert, wenn man's nicht konfiguriert hat.
Input:
Code: Alles auswählen
// selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr>
<td>Überschrift</td>
<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>
</tr>
<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>";
}
// fetch all categorys
$query = "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";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Code: Alles auswählen
<?php
$navmod_id = ((int)"CMS_VALUE[0]" == 0) ? $idcat : (int)"CMS_VALUE[0]";
$gefunden = 0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo "<table width=\"290\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\" style=\"border: 1px; border-color: #4779a0; border-style: solid\">";
echo "<tr><td style=\"border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px\" class=\"headline\" colspan=\"2\">CMS_VALUE[1]</td></tr>"; //Überschrift der Termin-Übersicht
// Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind * nur contenido 4.4.x
$sql = "SELECT
ARTLANG.idart,
CONTENT.value,
CONTENT.typeid
FROM
".$cfg["tab"]["cat_art"]." AS CATART,
".$cfg["tab"]["art_lang"]." AS ARTLANG,
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["content"]." AS CONTENT
WHERE
ARTLANG.idart = CATART.idart AND
CATART.idcat = CAT.idcat AND
ARTLANG.idartlang = CONTENT.idartlang AND
ARTLANG.idlang = '".$lang."' AND
CAT.idcat = '".$navmod_id."' AND
CAT.idclient = '".$client."' AND
ARTLANG.online = '1' AND
CATART.is_start='0'
ORDER BY
ARTLANG.idart,
CONTENT.typeid ASC";
$db->query($sql);
$j = 0;
$anz = 0;
if ($db->num_rows() != 0) {
$termin = array (array ()); // Array erzeugen, in dem die Termine abgelegt werden;
while ($j < $db->num_rows()) // alle Datensätze durchlaufen
{
$db->next_record();
if ($db->f("idart") > $termin["idart"][$anz]) {
$anz ++;
}
switch ($db->f("typeid")) {
case 0 : // Anfangstermin
$termin["datum1"][$anz] = $db->f("value");
$termin["idart"][$anz] = $db->f("idart");
break;
case 1 : // Anfangsuhrzeit
$termin["zeit1"][$anz] = $db->f("value");
$termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz];
break;
case 2 : // Endtermin
$termin["datum2"][$anz] = $db->f("value");
break;
case 3 : // Enduhrzeit
$termin["zeit2"][$anz] = $db->f("value");
$termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz];
break;
case 4 : // Ort
$termin["ort"][$anz] = $db->f("value");
break;
case 5 : // Ortdetail
$termin["ortdetail"][$anz] = $db->f("value");
break;
case 6 : // Titel
$termin["titel"][$anz] = $db->f("value");
break;
}
$j ++;
}
array_multisort($termin["datum1"], SORT_ASC, SORT_STRING,
$termin["datum2"], SORT_ASC, SORT_STRING,
$termin["ort"],
$termin["ortdetail"],
$termin["zeit1"],
$termin["zeit2"],
$termin["idart"],
$termin["titel"]); // nach Datum sortieren
for ($i = 0; $i <= $anz; $i ++) {
if ($termin["datum1"][$i] >= $date || $termin["datum2"][$i] >= $date) // nur Termine, die noch aktuell sind, aufnehmen
{
$gefunden ++;
echo ' <tr>';
echo '
<td valign="top" width="70" style="border: 1px; border-top:0px; border-right:0px; border-color: #4779a0; border-style: solid; padding-left:10px" class="text">'.substr($termin["datum1"][$i], 8, 2).'.'.substr($termin["datum1"][$i], 5, 2).'.'.substr($termin["datum1"][$i], 0, 4);
$navmod_link = "front_content.php?client=".$client."?=".$lang."&idcat=".$navmod_id."&idart=".$termin["idart"][$i]."";
echo '</td>
<td valign="top" style="border: 1px; border-top:0px; border-left:0px; border-color: #4779a0; border-style: solid; padding-left:10px"class="text"><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></td>
</tr>';
}
/*Untenstehend ist die gewünschte Anzahl der anzuzeigenden Termine ggf. anzupassen.
In diesem Fall werden 5 Termine aufgelistet. */
if ($gefunden == 5)
break;
}
}
if ($gefunden == 0) // falls kein aktueller Termin vorliegt
{
echo ' <tr>
<td colspan=2 style="border: 1px; border-top: 1px; border-left: 1px; border-right: 1px; border-bottom: 1px; border-color: #4779A0; border-style: solid" class=\"text\"><b>Es liegen aktuell keine Termine vor!</b></td>
</tr>';
}
echo "</table>";
?>
Gruss
Christa