Ergebnis 1 bis 18 von 18

Thema: Mehrere Minikalender anzeigen

  1. #1
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard Mehrere Minikalender anzeigen

    Hallo,

    auf einer Website sollen 3 Minikalender angezeigt werden:

    1. Minikalender beginnt mit Monat April
    2. Minikalender beginnt mit Monat Mai
    3. Minikalender beginnt mit Monat Juni

    ODER es werden in einem Minikalender die 3 aktuellen Monate auf einmal angezeigt, so wie in der Anlage (Fotomontage)

    Gibt es dafür eine Lösung?

    Vielen Dank für Hinweise.
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich glaube sowas habe ich schon mal umgesetzt. Da müsstest du das Template anpassen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich habe das gelöst, indem ich das Module mit dem Inserttag {{file::file_calendar.php}} eingefügt habe. In der Datei wird dann dreimal das Modul eingefügt und vorher jedesmal das entsprechende Datum gesetzt.
    file_calendar.php:
    PHP-Code:
    <?php

    $intModuleId 
    8;

    if(
    $this->Input->get('month'))
    {
      
    $actualDate $this->Input->get('month');
    }
    else
    {
      
    $actualDate date('Ym');
    }

    $actualYear  substr($actualDate04);
    $actualMonth substr($actualDate, -2);

    $prevYear  = ($actualMonth == 1) ? ($actualYear 1) : $actualYear;
    $prevMonth = ($actualMonth == 1) ? 12 : ($actualMonth 1);

    $nextYear  = ($actualMonth == 12) ? ($actualYear 1) : $actualYear;
    $nextMonth = ($actualMonth == 12) ? : ($actualMonth 1);

    $this->Input->setGet('month'$prevYear.$prevMonth);
    echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}');

    $this->Input->setGet('month'$actualYear.$actualMonth);
    echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}');

    $this->Input->setGet('month'$nextYear.$nextMonth);
    echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}');

    ?>
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  4. #4
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Hallo,

    Danke für diese Lösung. Zum Verständnis:

    Mit dem Insertag {{file::file_calendar.php}} kann ich die Datei in einen Artikel integrieren. Ist diese Datei file_calendar.php neu zu erstellen? Wo liegt diese Datei im System? Wie kann ich das aktuell vorhandene Datum anpassen? Wo liegt das eigentliche Minikalender- Template?

    Vielen Dank schon jetzt... .

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Den Inserttag file kannst du über ein HTML-Element in den Artikel einbinden. Die Datei file_calendar.php ist im Verzeichnis templates/ zu erstellen. Die Templates liegen im templates-Ordner von calendar, die brauchen aber nicht verändert zu werden.

    Was soll denn für ein Datum erscheinen? Im Moment ist es so, dass wenn du auf die Seite des Kalender kommst noch kein GET-Parameter month vergeben ist und somit der mittlere Kalender den aktuellen Monat bekommt. Schaltest du den Kalender weiter wird month übergeben und die Kalender links und rechts entsprechend angepasst.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ach so, hast du bestimmt gesehen, in der Datei musst du oben einmal die ID des Kalendermodules eintragen, welches du natürlich erstellen musst.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard Danke

    Vielen Dank, diese Details werde ich versuchen umzusetzen.

  8. #8
    Contao-Nutzer
    Registriert seit
    09.07.2009.
    Beiträge
    37

    Standard

    Es gibt da noch eine recht einfache Lösung für:
    Ich habe die "ModuleCalendar.php" um 4 Zeilen erweitert:
    Code:
     */
    protected function compile()
    {
    +if ($this->cal_setMonth)
    +	{
    +		$this->Date = new Date($this->cal_setMonth, 'Ym');
    +	}
      // Respond to month
      elseif ($this->Input->get('month'))
      	{
      		$this->Date = new Date($this->Input->get('month'), 'Ym');
      	}
    Plus ein DCA Eintrag (mit allem, was dazu gehört) habe ich nun die Möglichkeit, beim Modul einen Monat festzulegen und der Kalender bleibt immer auf diesem Monat stehen. Dann kann man mehrer Kalender auf einer Seite unterbringen mit immer einem anderen Monat.

    Bei Interesse kann ich die Dateien alle hochladen.

    Bis dann,
    artemis

  9. #9
    Contao-Nutzer
    Registriert seit
    28.06.2010.
    Beiträge
    27

    Standard Kalender 3mal da - aber immer gleicher Monat

    Hallo Leute,

    bei mir funktioniert die von Andreas beschriebene Methode leider nicht - der Kalender ist zwar 3x mal da, aber immer mit dem gleichen Monat :-(
    Woran könnte es liegen?

    Habe die Datei im Templatesorder liegen, richtige Module-ID ist eingetragen und auch das Inserttag per HTML Inhaltselement eingebunden...Ideen? Nutze Contao 2.9.5

    Zitat Zitat von artemis Beitrag anzeigen
    Es gibt da noch eine recht einfache Lösung für:
    Ich habe die "ModuleCalendar.php" um 4 Zeilen erweitert:
    Code:
     */
    protected function compile()
    {
    +if ($this->cal_setMonth)
    +	{
    +		$this->Date = new Date($this->cal_setMonth, 'Ym');
    +	}
      // Respond to month
      elseif ($this->Input->get('month'))
      	{
      		$this->Date = new Date($this->Input->get('month'), 'Ym');
      	}
    Plus ein DCA Eintrag (mit allem, was dazu gehört) habe ich nun die Möglichkeit, beim Modul einen Monat festzulegen und der Kalender bleibt immer auf diesem Monat stehen. Dann kann man mehrer Kalender auf einer Seite unterbringen mit immer einem anderen Monat.
    Könnte man deine Variante nicht mit der von Andreas kombinieren?

    Also den PHP Code noch etwas erweitern, so dass es möglich ist in der Konfig für das Modul festzulegen "Aktueller Monat" - "Monat+1" - "Monat+2" - und er würde dann zur Darstellung immer das Datum nehmen welches er über GET bekommt (z.B. aktueller Monat, wenn nichts eingetragen ist) und die anderen beiden Kalender-Module würden jeweils immer den Monat+1 bzw. +2 anzeigen? (Das ganze könnte man dann auch locker-leicht um x-Monate erweitern, oder?) Wenn man dann den Monat wechselt, z.B. von Januar auf Februar würden die anderen beiden Kalender das jeweils wieder aufnehmen und ausrechnen das sie März und April anzeigen sollen etc...?


    Danke für die Hilfe und Grüße
    Tobias
    Geändert von Kohlekocher (29.01.2013 um 15:05 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    09.07.2009.
    Beiträge
    37

    Standard

    Zitat Zitat von Kohlekocher Beitrag anzeigen
    Hallo Leute,

    bei mir funktioniert die von Andreas beschriebene Methode leider nicht - der Kalender ist zwar 3x mal da, aber immer mit dem gleichen Monat :-(
    Woran könnte es liegen?

    Habe die Datei im Templatesorder liegen, richtige Module-ID ist eingetragen und auch das Inserttag per HTML Inhaltselement eingebunden...Ideen? Nutze Contao 2.9.5



    Könnte man deine Variante nicht mit der von Andreas kombinieren?

    Also den PHP Code noch etwas erweitern, so dass es möglich ist in der Konfig für das Modul festzulegen "Aktueller Monat" - "Monat+1" - "Monat+2" - und er würde dann zur Darstellung immer das Datum nehmen welches er über GET bekommt (z.B. aktueller Monat, wenn nichts eingetragen ist) und die anderen beiden Kalender-Module würden jeweils immer den Monat+1 bzw. +2 anzeigen? (Das ganze könnte man dann auch locker-leicht um x-Monate erweitern, oder?) Wenn man dann den Monat wechselt, z.B. von Januar auf Februar würden die anderen beiden Kalender das jeweils wieder aufnehmen und ausrechnen das sie März und April anzeigen sollen etc...?


    Danke für die Hilfe und Grüße
    Tobias
    Ja, das würde gehen. Recht einfach sogar, denke ich. Da müssen dann noch ein paar If und Else rein Ich weiß nur noch nicht, wie man Daten mit PHP rechnet, also "new Date() + 1 Monat"...
    Tja, ich guck mal, ob ich da heut abend was zu schreiben kann...

    Bis dann,
    artemis

  11. #11
    Contao-Nutzer
    Registriert seit
    28.06.2010.
    Beiträge
    27

    Standard

    Und? Hattest du Gelegenheit das auszuprobieren?


    Grüße
    Tobias

  12. #12
    Contao-Nutzer
    Registriert seit
    09.07.2009.
    Beiträge
    37

    Standard

    So, da nochmal nachgefragt wurde, hier noch mal den Ansatz für 3.2.3, allerdings kann ich das nicht testen, hab gerade keine Dev Installation, also bitte vorsichtig...:

    Also erstmal muss ein DCA Feld anlegen, also der Datei calendar/dca/tl_module.php folgendes Feld hinzufügen:
    Code:
    $GLOBALS['TL_DCA']['tl_module']['fields']['cal_setMonth'] = array
    (
    	'label'                   => &$GLOBALS['TL_LANG']['tl_module']['cal_setMonth'],
    	'exclude'               => true,
    	'inputType'            => 'text',
    	'eval'                    => array('rgxp'=>'digit', 'tl_class'=>'w50'),
    	'sql'                      => "smallint(6) unsigned NOT NULL default '0'"
    );
    Das muss dann noch zur Palette hinzugefügt werden, gleiche Datei, oben:
    Code:
    $GLOBALS['TL_DCA']['tl_module']['palettes']['calendar']    = '{title_legend},name,headline,type;{config_legend},cal_calendar,cal_noSpan,cal_startDay, cal_setMonth; ...
    Dann ein Update der Datenbank, um das Feld anzulegen.

    In der Datei modules/ModuleCalendar.php folgendes hinzufügen:

    Code:
    	/**
    	 * Generate the module
    	 */
    	protected function compile()
    	{
    +              if ($this->cal_setMonth)
    +              	{
    +              		$this->Date = new Date($this->cal_setMonth, 'Ym');
    +              	}
    		// Respond to month
    		if (\Input::get('month'))
    		{
    Dann kann man in den Moduleinstellungen beim Feld cal_setMonth sowas wie "201405" für Mai 2014 angeben und das Modul sollte immer auf Mai 2014 stehen bleiben.

    Um jetzt sowas zu machen wie von Kohlekocher gewünscht (sorry, brauche das selber nicht, daher nur ein theoretischer Ansatz), könnte man folgendes machen: in das Feld "cal_setMonth" trägt man statt 201405 sowas ein wie "+4" oder "-4" (Dazu muss das DCA verändert werden, die Prüfung auf "digit" muss weg). In der ModuleCalendar.php prüft man bei
    Code:
    +              if ($this->cal_setMonth)
    , ob das Feld eine reine Zahl ist, also ohne Plus oder Minus.

    Bei
    Code:
    		if (\Input::get('month'))
    		{
    			$this->Date = new \Date(\Input::get('month'), 'Ym');
    		}
    macht man dann folgendes (Hab gerade keine Zeit, die PHP Funktionen nachzuschauen :-/ ):
    Code:
    		if (\Input::get('month'))
    		{
    			$this->Date = new \Date(\Input::get('month'), 'Ym');
                            if(startswith($this->cal_setMonth, "+") || startswith($this->cal_setMonth, "-")) $this->Date + $this->cal_setMonth) // k.A. wie man Daten addiert...
    		}
    Das ist natürlich nur ein Ansatz, da es keine Eingabeprüfungen und so gibt, also Vorsicht.

    Bis dann,
    artemis

  13. #13
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Hallo, ich habe das mit Contao 3.5.8 probiert und in der file_calendar.php nur die $this->Input->get() etc. mit \Input::get() ausgetauscht.

    PHP-Code:
    <?php 

      $intModuleId 
    79

      if (
    is_null(\Input::get('month'))) {
        
    $actualDate date('Ym'); 
      }
      else 
      { 
        
    $actualDate = \Input::get('month');
      } 
        
      
    $actualYear  substr($actualDate04); 
      
    $actualMonth substr($actualDate, -2); 

      
    $prevYear  = ($actualMonth == 1) ? ($actualYear 1) : $actualYear
      
    $prevMonth = ($actualMonth == 1) ? 12 : ($actualMonth 1); 

      
    $nextYear  = ($actualMonth == 12) ? ($actualYear 1) : $actualYear
      
    $nextMonth = ($actualMonth == 12) ? : ($actualMonth 1); 
        
      \
    Input::setGet('month'$prevYear.$prevMonth); 
      echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}'); 
        
      \
    Input::setGet('month'$actualYear.$actualMonth); 
      echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}'); 

      \
    Input::setGet('month'$nextYear.$nextMonth); 
      echo 
    $this->replaceInsertTags('{{insert_module::'.$intModuleId.'}}'); 
      
    ?>
    Solange ich nur jeweils eines der Module nutze (e.g die jeweils anderen auskommentiere) funktioniert die Anzeige.
    Wenn ich alle drei Module aktiviere wird mir in allen drei Minikalendern immer nur das gleiche, erste Datum ausgegeben - also als Beispiel heutiges Datum (März 2016) ohne Übergabeparameter immer Februar 2016.

    Hat jemand eine Idee?
    Danke Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  14. #14
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Habe mir das gerade mal angesehen aber auf die Schnelle auch keine Lösung. Mir fehlt grad leider die Zeit.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  15. #15
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Habe mir das gerade mal angesehen aber auf die Schnelle auch keine Lösung. Mir fehlt grad leider die Zeit.
    Vielen Dank,
    meine Kenntnisse reichen hierzu nicht mehr aus. Ich vermute es könnte mit diesen Änderungen zusammenhängen:

    https://github.com/contao/core/issues/4277 bzw.
    https://github.com/contao/core/commi...6cd06bf39242f2

    Wie gesagt - Keinen Plan - allerdings hatte 'Kohlekocher' ja auch damals dieses Problem wobei es sich wohl nicht um die aktuelle Contao Version handelte ...
    Gruß
    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  16. #16
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich hatte auf die Schnelle versucht in der system/modules/calendar/modules/ModuleCalendar.php zu debuggen, was mir nicht gelang. Als würde diese Datei überhaupt nicht aufgerufen, sehr seltsam.

    Meine Modul-ID war richtig und ich hatte drei Module vom Typ "Kalender" im FE.

    Hier mein Snippet, mit dem ich gedebuggt hatte
    PHP-Code:
    <?php

    /** DEBUG */
    $logFile basename(__FILE__).'-debug.log';
    if(
    file_exists(TL_ROOT.'/system/logs/'.$logFile))
    {
      
    unlink(TL_ROOT.'/system/logs/'.$logFile);
    }
    $debug  "\n\n".'file: '.__FILE__.' (line '.__LINE__.')'."\n\n";
    $debug .= print_r($this->Datetrue);
    log_message($debug$logFile);
    /** */

    ?>
    Danach müsste ich ne Datei ModuleCalendar.php-debug.log im Ordner system/logs/ haben, selbst wenn die Variable, hier z.B. $this->Date nicht vorhanden ist.

    In dieser Test-Installation habe ich allerdings noch einige Kalender-Erweiterungen drin, evtl. hebeln diese die Core-ModuleCalendar.php aus. Wie gesagt fehlte mir ab da die Zeit.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  17. #17
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Hallo Andreas,
    ich dank Dir für Deine Zeit ... (aber - Hä? - )

    (sollte witzig sein - nicht falsch verstehen)

    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  18. #18
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallöchen.

    Zitat Zitat von Franko Beitrag anzeigen
    Solange ich nur jeweils eines der Module nutze (e.g die jeweils anderen auskommentiere) funktioniert die Anzeige.
    Wenn ich alle drei Module aktiviere wird mir in allen drei Minikalendern immer nur das gleiche, erste Datum ausgegeben - also als Beispiel heutiges Datum (März 2016) ohne Übergabeparameter immer Februar 2016.
    Hatte mit dem Code die gleichen Probleme. Spooky war so lieb und hat mir in meinem Thread einen funktionierenden Code gepostet. Siehe: https://community.contao.org/de/show...l=1#post410463

    LG
    Nicole

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •