Terminübersicht für die Startseite einer Site

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Terminübersicht für die Startseite einer Site

Beitrag von Halchteranerin » 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:

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>";
Output:

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>";
?>
Die Formatierungsangaben sind ggf. anzupassen, weil das Modul farblich auf halchter.com abgestimmt ist.

Gruss
Christa
Zuletzt geändert von Halchteranerin am Fr 4. Nov 2005, 15:22, insgesamt 1-mal geändert.

andy-man
Beiträge: 166
Registriert: Di 25. Nov 2003, 11:29
Wohnort: Oberstaufenbach
Kontaktdaten:

Beitrag von andy-man » Fr 4. Nov 2005, 12:47

hallo, ich wollte die terminübersicht in der 4.6.2 einsetzen, doch sobald ich neben der terminübersicht noch ein textffeld im template einbaue und darin einen text einsetze kommt nach abspeichern folgende fehlermeldung

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in /home/htdocs/web10/html/contenido/contenido/includes/include.con_editcontent.php(650) : eval()'d code on line 795

wie kann ich dies ändern?

danke andy-man

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Fr 4. Nov 2005, 15:20

Ich hab's nicht mit >4.4.4 getestet, und so spontan faellt mir keine moegliche Fehlerursache ein.
Es hat offensichtlich mit

Code: Alles auswählen

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
oder

Code: Alles auswählen

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 
zu tun, aber ich habe im Augenblick auch keine Zeit, mich da auf Fehlersuche zu begeben, sorry.

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 15:11

Bekomme leider denselben Fehler mit Version 4.4.5
Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in /home/htdocs/web10/html/contenido/contenido/includes/include.con_editcontent.php(650) : eval()'d code on line 795
Wäre schön, wenn sich jemand das Modul nochmal anschauen könnte.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 5. Mär 2006, 15:15

tele, was fuer Module setzt du noch auf derselben Seite ein?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 15:20

Headline, dann wollte ich deine Übersicht einbauen, und danach kommt noch eine Artikelblättern

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 15:23

Das benutze ich im Moment:
Ist jeweils immer nur der Output!

Headline

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :      Headline (HTML)
* Author      :    Christa Tabara & i-fekt
* Copyright   :     Christa Tabara & i-fekt
* Created     :     2005-07-25
* Modified    :     2005-07-27
* Version :     1.1 (fuer Volltextsuche mit Highlighting)
* ***********************************************/

if ($edit && empty($_REQUEST['edit'])) {
  // Edit-Mode
  echo "<b>CMS_HTMLHEAD[1]</b>";
} else if (("CMS_HTMLHEAD[1]" != "") && ("CMS_HTMLHEAD[1]" != "&nbsp;")) {
    $hol_das_suchwort = $_GET[suchwort];
         $suchbegriffe = explode(" ",$hol_das_suchwort);
         $einlesen = "<b>CMS_HTMLHEAD[1]</b>";
         foreach ($suchbegriffe as $suchbegriff)
    {
         if ($suchbegriff!="")
         {$regexp = "/$suchbegriff/i";
         $einlesen = preg_replace($regexp, "<span class=\"suche\">$0</span>", $einlesen);
         }
         }
        echo $einlesen;
}
?>
Ergaenzung zum Terminuebersicht-Modul

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>";
?>
Artikelblättern

Code: Alles auswählen

<?php
$anzahl = "CMS_VALUE[8]";
if($anzahl<1) {$anzahl=10;}
$laenge = "CMS_VALUE[9]";
$sql = "SELECT ARTLANG.idart, ARTLANG.title, CATART.idcat, ARTLANG.created, CONTENT.value, CONTENT.idtype, 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 CONTENT.idtype<=2 AND CONTENT.typeid<=2 AND CAT.idcat='$idcat' AND ARTLANG.idlang = '$lang' AND ARTLANG.online = '1' AND CATART.is_start='0'
 ORDER BY ARTLANG.artsort DESC,ARTLANG.created DESC";
$db->query($sql);
if ($db->num_rows() != 0)
{
 echo "
<table border=0 cellspacing=0 cellpadding=0 width=540 id=\"font\">";

$artikel = array(array());
$j=0;
 $db->next_record();
 $idart_last=$db->f("idart");
for ($i=0; $i<$db->num_rows(); $i++)
{
 $artikel[$j][0] = $db->f("idart");
 $artikel[$j][1] = $db->f("idcat");
 $artikel[$j][2] = substr($db->f("created"),8,2).".".substr($db->f("created"),5,2).".";
 while ( $idart_last==$db->f("idart") )
 {
  if ( $db->f("idtype") == 2 && $db->f("typeid") == 1 )
  {
   $html_text = strip_tags(urldecode($db->f("value")));
   $array = array ("&auml;" => "ä", "&ouml;" => "ö", "&uuml;" => "ü", "&szlig;" => "ß", "&Auml;" => "Ä", "&Ouml;" => "Ö", "&Uuml;" => "ü", "&nbsp;" => " ", """ => "\"", "<" => "<", ">" => ">", "&" => "&");
   $html_text = strtr($html_text, $array);
   $artikel[$j][5] = htmlentities(substr($html_text,0,$laenge))."";
  } elseif ( $db->f("idtype") == 1 && $db->f("typeid") == 1 )
  {
   $artikel[$j][3] = strip_tags(urldecode($db->f("value")));
  } elseif ( $db->f("idtype") == 1 && $db->f("typeid") == 2 )
  {
   $artikel[$j][4] = strip_tags(urldecode($db->f("value")));
  }
  $idart_last=$db->f("idart");
  $db->next_record();
  $i++;
 }
 $idart_last=$db->f("idart");
 $j++;
 $i--;
}

if($blatt=="") {$blatt=0;}
$blattmax=ceil($j/$anzahl)-1;
$blatt1 = $blatt+1;
$blattmax1 = $blattmax+1;
if ($j>$anzahl)
{
 echo " <tr>
  <td colspan=3 align=\"right\">Seite ".$blatt1." von ".$blattmax1."  – <b>";
 for ($i=0; $i<=$blattmax; $i++)
 {
  $k = $i+1;
  if($i==$blatt) {
   echo " ".$k." ";
  } else {
   $navmod_link ="front_content.php?client=$client&lang=$lang&idcat=$idcat&blatt=".$i."";
   echo ' <a href="'.$sess->url("$navmod_link").'" id="font">'.$k.'</a> ';
  }
 }
 echo "</b><br></td>
 </tr>";
}

for ($i=$anzahl*$blatt; $i < min($j,$anzahl*$blatt+$anzahl); $i++)
{
 $k = $i-1;
 $navmod_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$i][1]."&idart=".$artikel[$i][0]."";
 echo '<tr>';
 if ( $i>0 && $artikel[$i][2] == $artikel[$k][2] )
 {
  echo '';
 } else
 {
  echo '';
 }
 echo '
 <td><b><img src=images/pfeil_list_red.gif border=0><a href="'.$sess->url("$navmod_link").'" id="font">'.$artikel[$i][3].'</b></a><br>'.$artikel[$i][4].'<br><br>'.$artikel[$i][5].'...<br><a href="'.$sess->url("$navmod_link").'" id="font"><img src=images/pfeil_red_more.gif border=0> <font size=-2 color=#df0404>mehr</font></a></td>
</tr><tr><td>&nbsp;</td></tr>';
}

if ($j>$anzahl)
{
 echo " <tr>
  <td colspan=3 align=\"right\"><br>Seite ".$blatt1." von ".$blattmax1."  – <b>";
 for ($i=0; $i<=$blattmax; $i++)
 {
  $k = $i+1;
  if($i==$blatt) {
   echo " ".$k." ";
  } else {
   $navmod_link ="front_content.php?client=$client&lang=$lang&idcat=$idcat&blatt=".$i."";
   echo ' <a href="'.$sess->url("$navmod_link").'" id="font">'.$k.'</a> ';
  }
 }
 echo "</b></td>
 </tr>";
}

 echo '</table>';
}
?>

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 15:46

Tschuldigung, hat sich erledigt!
Hatte vergessen im Startartikel die Kategorie zu wählen.
Habe sie nur in der Vorkonfiguration gewählt.

Funktioniert, tolles Modul, danke Halchteranerin ...

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 16:52

Besteht irgendwie die Möglichkeit, die Beschreibung/Inhalte: vom Original-Terminemodul mit einzubauen?

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » So 5. Mär 2006, 18:24

Hat sich auch erledigt, habs hinbekommen.
Hier die Änderung, wen es interessiert.

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>";
OUTPUT:

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>

/*HIERMIT WIRD DIE BESCHREIBUNG/INHALTE VOM TERMIN MIT ANGEZEIGT*/

<br>';
   $sql2 = "SELECT CONTENT.value
    FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
    WHERE ARTLANG.idart = ".$termin["idart"][$i]." AND ARTLANG.idartlang = CONTENT.idartlang AND CONTENT.typeid = '7'";
   $db->query($sql2);
   $db->next_record();
   echo ''.urldecode($db->f("value")).'</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>";
?>

tele
Beiträge: 11
Registriert: So 5. Mär 2006, 15:08
Kontaktdaten:

Beitrag von tele » Mo 13. Mär 2006, 14:49

Ich wollte das Modul dahingehend ändern, dass es mir alle Termine des aktuellen Tages auflistet, komme aber nicht weiter.
Ich habe folgende Zeile geändert, aber dann gibt er mir immer aus, dass keine Termine vorliegen würden.

Code: Alles auswählen

if ($termin["datum1"][$i] >= $date || $termin["datum2"][$i] >= $date) // nur Termine, die noch aktuell sind, aufnehmen

Code: Alles auswählen

if ($termin["datum1"][$i] == $date || $termin["datum2"][$i] == $date) // nur Termine, die noch aktuell sind, aufnehmen
Könnte mir da jemand helfen?

Danke im Voraus
Tele

wheelz
Beiträge: 13
Registriert: Mi 15. Feb 2006, 13:17
Wohnort: Hamburg
Kontaktdaten:

Beitrag von wheelz » Do 13. Apr 2006, 11:19

Ich hab es noch mal auf DIV-Tags umgestrickt, wem's gefällt...
Das Ganze liefert jetzt Start-Datum (ohne Jahr), Start-Uhrzeit
neue Zeile mit Link zum Termin.

Die DIV-IDs fürs CSS lauten
#Terminteaser_Titel = Überschrift
#Terminteaser_Datum = Datum und Uhrzeit
#Terminteaser_Link = Link zum Terminartikel

Außerdem habe ich "array_multisort" durch "$array_multisort = array" ersetzt, da bei mir sonst immer das mehrfach diskutierte "Warning: array_multisort(): Array sizes are inconsistent in..." auftachte. Danke an andy-man:
http://contenido.org/forum/viewtopic.php?p=22458#22458

Läuft auf 4.6.8.
Gruß
Niels


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 "<div id=\"Terminteaser_Titel\">CMS_VALUE[1]<br><br></div>"; //Ü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 = array($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 ' 
                   <div id="Terminteaser_Datum">'.substr($termin["datum1"][$i], 8, 2).'.'.substr($termin["datum1"][$i], 5, 2).'.';
	if ( strlen($termin["zeit1"][$i]) >1 ) 
	{ 
		echo ', '.$termin["zeit1"][$i].'&nbsp;Uhr'; 
	} 
         $navmod_link = "front_content.php?client=".$client."?=".$lang."&idcat=".$navmod_id."&idart=".$termin["idart"][$i]."";
	 echo '<br></div>';
         echo '<div id="Terminteaser_Link"><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a><br><br>
                 </div>'; 
      } 

      /*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 '<b>Es liegen aktuell keine Termine vor!</b>'; 
} 

?>

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 13. Apr 2006, 11:24

wheelz hat geschrieben:Läuft auf 4.6.8.
Laeuft's auch noch auf 4.4? :-) Es waere auf jeden Fall sinnvoll, diese Version auch unter Module 4.6 zu posten, evtl. mit Verweis auf diesen Thread.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

wheelz
Beiträge: 13
Registriert: Mi 15. Feb 2006, 13:17
Wohnort: Hamburg
Kontaktdaten:

Beitrag von wheelz » Do 13. Apr 2006, 11:34

Öhm, ich habe keine Ahnung, ob es unter 4.4 läuft. Da ich aber eigentlich nur die Ausgabe verändert habe, müsste es auch unter 4.4 laufen. Bei Problemen sollte man wohl versuchen, die Änderung von array_multisort wieder rückgängig zu machen.

Werde es mal bei 4.6 posten.
Danke für den Hinweis, und überhaupt für das klasse Modul!
Niels

K.
Beiträge: 4
Registriert: Mo 27. Feb 2006, 02:18
Kontaktdaten:

Beitrag von K. » Fr 21. Apr 2006, 17:30

Hi,
das Modul läuft auch bei meinem Projekt sehr gut. Eine kleine Frage hätt ich noch.. Besteht die Möglichkeit die Abstände der einzelnen Termine zu verringern. Bislang stehen immer so etwa zwei Zentimeter Abstand in der Vertikale. Im Code selbst hab ich den entsprechenden Befehl allerdings nicht finden können :-/

Gesperrt