Überarbeitet: Terminteaser für Startseite

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

Überarbeitet: Terminteaser für Startseite

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

Hallo,
ich habe das bewährte Terminmodul für die Startseite von Halchteranerin überarbeitet ( http://contenido.org/forum/viewtopic.php?p=77372 - dort findet Ihr den Modul-Input).

Das Ganze läuft jetzt mit DIV-Tags und liefert 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


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

?>

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 9. Mai 2006, 07:38

ähm, nur ne anmerkung
das funktioniert nur in der 4.6.x einwandfrei wenn
in der contenido/includes/config.php

Code: Alles auswählen

$cfg["is_start_compatible"] = true;
gesetzt ist...
*** make your own tools (wishlist :: thx)

senghufu
Beiträge: 11
Registriert: Do 18. Mai 2006, 10:49
Kontaktdaten:

Anzeige der Uhrzeit nicht immer vorhanden

Beitrag von senghufu » Do 18. Mai 2006, 10:53

Hallo,

ich habe das Problem dass nicht immer die Uhrzeit angezeigt wird.
Weiss jmd. woran das liegt? Gebe ich die Daten evtl. falsch ein?
Liegt es am Script? Ich benutze den Code aus diesem Thread.

flixo
Beiträge: 3
Registriert: Di 25. Apr 2006, 15:45
Kontaktdaten:

Beitrag von flixo » So 4. Jun 2006, 22:23

Das Terminteaser-Modul läuft bei mir super bis auf die Tatsache, dass die Termine nicht chronologisch geordnet erscheinen, wie beim Terminübersicht Modul. Gibt's da eine fixe Lösung?

Achja, das Problem mit den Uhrzeiten, die manchmal nicht angezeigt wurden, hatte ich auch schon mal. Jetzt funktioniert gerade alles. Keine Ahnung, was da das Problem ist/war.

cassiopeia
Beiträge: 16
Registriert: Mi 18. Mai 2005, 21:12
Kontaktdaten:

Beitrag von cassiopeia » Mo 19. Jun 2006, 14:38

Hat evtl. schon jemand dieses Modul für 4.6.8 mit ohne Startartikel-Kompatibilität zum Laufen gekriegt, d. h. $cfg["is_start_compatible"] = false;
Es funktioniert zwar auf den Ersten Blick so wie es ist, aber die Sortierung stimmt nicht (was ja an sich klar ist).

Ich hab schon alle möglichen Änderungen und Varianten aus diesen beiden Threads, die das Hauptmodul betreffen, ausprobiert - aber ich kriegs leider nicht selber hin :(

http://contenido.org/forum/viewtopic.ph ... 7157403e41 (Seite 3 unten)

http://contenido.org/forum/viewtopic.ph ... erminmodul (seite 1 unten)

Es wäre Klasse, wenn sich jemand von den "PROFs" mal der Sache annehmen würde - einfach weil es ein soooo tolles und praktisches Modul ist und auch für die 4.6... Neuinstallationen zur Verfügung stehen sollte.

Schon mal DANKE und Gruß
CP
Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 19. Jun 2006, 15:03

Sollen die Startartikel dabei sein oder nicht?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

cassiopeia
Beiträge: 16
Registriert: Mi 18. Mai 2005, 21:12
Kontaktdaten:

Beitrag von cassiopeia » Mo 19. Jun 2006, 15:14

HerrB hat geschrieben:Sollen die Startartikel dabei sein oder nicht?
@Herr B:

Nein, kein Startartikel, denn dieser gibt ja die Komplettübersicht für sämtliche Termine aus.

Wow, Danke für die schnelle Reaktion :D
Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte.

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Do 29. Jun 2006, 17:24

hi, ich habe mir für den Teaser noch die Beschreibung rübergeholt aus den Terminen.

Code: Alles auswählen

$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);
   if ($db->num_rows() != 0)
   {
    $db->next_record();
    echo urldecode($db->f("value"));
   }
wie kann ich das jetzt aber beschränken, auf sagen wir mal 70 Zeichen oder so?
ich krieg das gerade nicht in die Reihe und wüßte auch nicht wonach ich in meinem schlauchen Buch suchen soll ;-)
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.

flixo
Beiträge: 3
Registriert: Di 25. Apr 2006, 15:45
Kontaktdaten:

Beitrag von flixo » Do 29. Jun 2006, 18:07

Mich würde mal interessieren, wie man dem Modul "Terminteaser" beibringt die Termine auch nach dem Datum zu sortieren, wie es der große Bruder "Terminübersicht" macht. Kann da jemand helfen?

Ansonsten vermisse ich beim "Terminübersicht"-Modul die Ausgabe eines Links, wo man dann die Details zum Termin sehen kann. Diesen Link gibt es beim "Terminteaser" schon.

Also ich nehme an, man muss vom jeweils anderen Modul abgucken, aber ich hab da im Quellcode kaum durchgeblickt... HELP!

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Mo 3. Jul 2006, 11:03

habe doch mein Buch bemüht... ;-)
es müßte doch eigentlich mit der Funktion substr($zeichenkette,Position,Länge der Zeichenkette)
hm, aber wie kriege ich die funktion richtig eingebunden?

ich habe es jetzt erst einmal so versucht:

Code: Alles auswählen

$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);
   if ($db->num_rows() != 0)
   {
    $db->next_record();
    //echo urldecode($db->f("value"));
$zeichenkette = urldecode($db->f("value")); 
echo substr($zeichenkette, 0, 70);  
}
das scheint auch zu funktionieren, nur werden die Termine nicht in der richtigen Reihenfolge ausgeben. Wer kann helfen?
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Mo 3. Jul 2006, 14:59

@ cassiopeia
@ HerrB

habt ihr das jetzt eigentlich schon klären können?
Ich würde nämlich auch gern davon profitieren ;-)
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 3. Jul 2006, 16:36

Ne, ich hatte die Antwort übersehen.

Folgende Änderung (statt der ersten Abfrage) sollte das gewünschte Ergebnis bringen:

Code: Alles auswählen

$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"]["cat_lang"]." AS CATLANG,
          ".$cfg["tab"]["content"]." AS CONTENT 
       WHERE 
          ARTLANG.idart = CATART.idart AND 
          CATART.idcat = CAT.idcat AND
          CATLANG.idlang = ARTLANG.idlang AND
          CATLANG.idcat = CATART.idcat AND
          ARTLANG.idartlang = CONTENT.idartlang AND 
          ARTLANG.idlang = '".$lang."' AND 
          CAT.idcat = '".$navmod_id."' AND 
          CAT.idclient = '".$client."' AND 
          ARTLANG.online = '1' AND ";

if ($cfg["is_start_compatible"] == true) {
   $sql .= " CATART.is_start = '0' ";
} else {
   $sql .= " CONTENT.idartlang != CATLANG.startidartlang ";
}

$sql .= "ORDER BY 
          ARTLANG.idart, 
          CONTENT.typeid ASC";
Berücksichtigt sogar compatible true und false...

Ungetestet.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Mo 3. Jul 2006, 17:26

hm, bei mir tut sich rein gar nichts...
ne rote Kugel gab es aber auch nicht oder eine Fehlermeldung
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 3. Jul 2006, 17:30

Öhm... muss aber... compatible = false? Artikel ist Startartikel? Schon mal als Startartikel deaktiviert und wieder aktiviert?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac » Mo 3. Jul 2006, 17:39

ist ja sozusagen die Homepage, aber ich habe mal Startseite ausgestellt und wieder aktiviert. Immer noch nichts. Aber dabei fiel mir auf, dass die Termine nicht in chronologischer Reihenfolge eingegeben wurden. Aber das sollte ja eigentlich eh keine Voraussetzung sein oder?
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.

Gesperrt