da es schon mehrfach nachgefragt wurde und ich mein Posting nicht mehr finde, wo ich das Modul schon mal veroeffentlicht haben will
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