Terminübersicht für die Startseite einer Site
Verfasst: Mi 26. Okt 2005, 11:21
Hallo,
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:
Output:
Die Formatierungsangaben sind ggf. anzupassen, weil das Modul farblich auf halchter.com abgestimmt ist.
Gruss
Christa
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