Ergebnis 1 bis 12 von 12

Thema: Event-Liste im Backened anpassen

  1. #1
    Contao-Fan Avatar von µaTh
    Registriert seit
    13.05.2010.
    Beiträge
    951

    Standard Event-Liste im Backened anpassen

    Hallo zusammen,

    ich möchte im Backend gerne die Liste der Events etwas anpassen.

    Konkret möchte ich neben dem Titel und dem Datum auch noch weitere Kurz-Informationen anzeigen. (Im Screenshot gelb markiert).

    Screenshot:
    Unbenannt.JPG

    in modules/calendar/dca/tl_calendar_events.php kann ich "nur" die Einstellungen für die Bearbeiten-Icons finden.

    Wo/Wie kann ich dort z.B. den Veranstaltungsort anzeigen lassen?

    Grüße
    µaTh

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    in der Datei steht zwar schon drin was du brauchst, aber in Coredateien ändert man nichts.

    Erstell einen Ordner unter system/modules z.B. calendar_custom dort noch einen Ordner /dca und in diesen Ordner erstellst du eine Datei mit dem Namen tl_calendar_events.php und fügst folgenden Inhalt rein:
    Also folgende Ordnerstruktur solltest du dann haben
    /system/modules/calendar_custom/dca/tl_calendar_events.php

    PHP-Code:
    <?php

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['list']['sorting']['child_record_callback'] = array('tl_calendar_events_custom''listEvents');


    class 
    tl_calendar_events_custom extends Backend
    {

       public function 
    listEvents($arrRow)
       {
          
    $span Calendar::calculateSpan($arrRow['startTime'], $arrRow['endTime']);

          if (
    $span 0)
          {
             
    $date Date::parse(Config::get(($arrRow['addTime'] ? 'datimFormat' 'dateFormat')), $arrRow['startTime']) . ' – ' Date::parse(Config::get(($arrRow['addTime'] ? 'datimFormat' 'dateFormat')), $arrRow['endTime']);
          }
          elseif (
    $arrRow['startTime'] == $arrRow['endTime'])
          {
             
    $date Date::parse(Config::get('dateFormat'), $arrRow['startTime']) . ($arrRow['addTime'] ? ' ' Date::parse(Config::get('timeFormat'), $arrRow['startTime']) : '');
          }
          else
          {
             
    $date Date::parse(Config::get('dateFormat'), $arrRow['startTime']) . ($arrRow['addTime'] ? ' ' Date::parse(Config::get('timeFormat'), $arrRow['startTime']) . ' – ' Date::parse(Config::get('timeFormat'), $arrRow['endTime']) : '');
          }

          return 
    '<div class="tl_content_left">' $arrRow['title'] . ' <span style="color:#b3b3b3;padding-left:3px">[' $date ']</span> '$arrRow['location'].'</div>';
       }
    }
    Ist ungetestet, habs nur grad kopiert und den Callback überschrieben...
    Edit: getestet, funktioniert
    Geändert von the_scrat (15.06.2016 um 20:18 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Fan Avatar von µaTh
    Registriert seit
    13.05.2010.
    Beiträge
    951

    Standard

    perfekt! Besten Dank. Das hilft mir weiter.

    Ja, den Code pack ich in eine eigene Erweiterung.

  4. #4
    Contao-Nutzer Avatar von dive
    Registriert seit
    17.04.2010.
    Ort
    Österreich
    Beiträge
    48

    Standard

    Wie könnte das gleiche mit dem Wochentag funktionieren?
    Wenn ich in obigem Beispiel "location" mit "weekday" ersetze, bekomme ich nur die Ziffern des jeweiligen Wochentags in der Backend-Liste.

    LG, Dieter

  5. #5
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Zitat Zitat von dive Beitrag anzeigen
    Wie könnte das gleiche mit dem Wochentag funktionieren?
    Wenn ich in obigem Beispiel "location" mit "weekday" ersetze, bekomme ich nur die Ziffern des jeweiligen Wochentags in der Backend-Liste.

    LG, Dieter
    Die Namen der Wochentage sind in $GLOBALS['TL_LANG']['DAYS'] (Monate äquivalent in $GLOBALS['TL_LANG']['MONTHS']) gespeichert. Dort kannst du sie mit der jeweiligen Ziffer auslesen.

    Grüße
    benzin

  6. #6
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Zitat Zitat von benzin Beitrag anzeigen
    Die Namen der Wochentage sind in $GLOBALS['TL_LANG']['DAYS'] (Monate äquivalent in $GLOBALS['TL_LANG']['MONTHS']) gespeichert. Dort kannst du sie mit der jeweiligen Ziffer auslesen.
    Guter Tip! Ich glaube ich habe diese Arrays in eigenen Erweiterungen bisher immer selbst erstellt.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  7. #7
    Contao-Fan Avatar von toto
    Registriert seit
    09.02.2010.
    Ort
    Bad Oeynhausen
    Beiträge
    386

    Standard

    Servus zusammen, ich würde auch gerne im Backend bei der Eventliste den Wochentag hinzufügen. Ich habe einen Stundenplan erstellt und da ist es ganz hilfreich wenn der Tag mit angezeigt wird. Leider habe ich das mit dem GLOBAL hier im Tread nicht ganz verstanden. Könnte mir da jemand noch auf die Sprünge helfen? Ich bin leider kein Programmierer.

    diesen fehler erhalte ich, wenn ich es einlade:

    Code:
    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w01191bb/pfotenhof-huellhorst-contao/system/modules/calendar_custom/dca/tl_calendar_events.php:1) in system/modules/core/library/Contao/Template.php on line 294
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/www/htdocs/w01...', 294, Array)
    #1 system/modules/core/library/Contao/Template.php(294): header('Vary: User-Agen...', false)
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendMain.php(275): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendMain.php(135): Contao\BackendMain->output()
    #5 contao/main.php(20): Contao\BackendMain->run()
    #6 {main}
    
    
    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w01191bb/pfotenhof-huellhorst-contao/system/modules/calendar_custom/dca/tl_calendar_events.php:1) in system/modules/core/library/Contao/Template.php on line 295
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/www/htdocs/w01...', 295, Array)
    #1 system/modules/core/library/Contao/Template.php(295): header('Content-Type: t...')
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendMain.php(275): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendMain.php(135): Contao\BackendMain->output()
    #5 contao/main.php(20): Contao\BackendMain->run()
    #6 {main}
    Geändert von toto (06.03.2017 um 13:55 Uhr)

  8. #8
    Contao-Nutzer Avatar von miniA4kuser
    Registriert seit
    14.11.2013.
    Beiträge
    130

    Standard

    Wo hast du denn genau was eingefügt?
    Tippfehler unterliegen nicht dem Copyright und können frei weitergegeben werden.

  9. #9
    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

    Die Fehler
    Code:
    Warning: Cannot modify header information - headers already sent by
    sind nie der eigentliche Fehler. Da stimmt irgend ne Kleinigkeit nicht mit der Syntax dort wo du selber Hand angelegt hast.

    Wenn der obige Code funktioniert, dann kannst du dort auch zum Datum direkt den Wochentag mit ausgeben lassen. Ich habe den Code mal modifiziert (ungetestet) und die Config::get() Aufrufe hardcodiert. Im BE solltest du nämlich im Date-Format keinen Wochentag angeben.
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['list']['sorting']['child_record_callback'] = array('tl_calendar_events_custom''listEvents');


    class 
    tl_calendar_events_custom extends Backend
    {

      public function 
    listEvents($arrRow)
      {
        
    $span Calendar::calculateSpan($arrRow['startTime'], $arrRow['endTime']);

        if (
    $span 0)
        {
          
    $date Date::parse(($arrRow['addTime'] ? 'd.m.Y H:i' 'd.m.Y'), $arrRow['startTime']) . ' – ' Date::parse(($arrRow['addTime'] ? 'd.m.Y H:i' 'd.m.Y'), $arrRow['endTime']);
        }
        elseif (
    $arrRow['startTime'] == $arrRow['endTime'])
        {
          
    $date Date::parse('d.m.Y'$arrRow['startTime']) . ($arrRow['addTime'] ? ' ' Date::parse('H:i'$arrRow['startTime']) : '');
        }
        else
        {
          
    $date Date::parse('d.m.Y'$arrRow['startTime']) . ($arrRow['addTime'] ? ' ' Date::parse('H:i'$arrRow['startTime']) . ' – ' Date::parse('H:i'$arrRow['endTime']) : '');
        }

        return 
    '<div class="tl_content_left">' $arrRow['title'] . ' <span style="color:#b3b3b3; padding-left:3px">[' $date ']</span> '$arrRow['location'].'</div>';
      }
    }
    Hier http://de1.php.net/manual/de/function.date.php findest du die Variablen für das Date-Format. Ich habe den Wochentag noch nicht hinzugefügt, wie du siehst.
    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

  10. #10
    Contao-Fan Avatar von toto
    Registriert seit
    09.02.2010.
    Ort
    Bad Oeynhausen
    Beiträge
    386

    Standard

    Tja also es ist eigentlich so wie es soll aber die beiden Fehlermeldungen kommen trotzdem. Ich finde leider keinen fehler???

    Bildschirmfoto 2017-03-07 um 11.05.44.png
    Code:
    <?php
    
    $GLOBALS['TL_DCA']['tl_calendar_events']['list']['sorting']['child_record_callback'] = array('tl_calendar_events_custom', 'listEvents');
    
    
    class tl_calendar_events_custom extends Backend
    {
    
      public function listEvents($arrRow)
      {
        $span = Calendar::calculateSpan($arrRow['startTime'], $arrRow['endTime']);
    
        if ($span > 0)
        {
          $date = Date::parse(($arrRow['addTime'] ? 'D d.m.Y H:i' : 'D d.m.Y'), $arrRow['startTime']) . ' - ' . Date::parse(($arrRow['addTime'] ? 'D d.m.Y H:i' : 'D d.m.Y'), $arrRow['endTime']);
        }
        elseif ($arrRow['startTime'] == $arrRow['endTime'])
        {
          $date = Date::parse('D d.m.Y', $arrRow['startTime']) . ($arrRow['addTime'] ? ' ' . Date::parse('H:i', $arrRow['startTime']) : '');
        }
        else
        {
          $date = Date::parse('D d.m.Y', $arrRow['startTime']) . ($arrRow['addTime'] ? ' ' . Date::parse('H:i', $arrRow['startTime']) . ' - ' . Date::parse('H:i', $arrRow['endTime']) : '');
        }
    
        return '<div class="tl_content_left">' . $arrRow['title'] . ' <span style="color:#b3b3b3; padding-left:3px">[' . $date . ']</span></div>';
      }
    }

  11. #11
    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

    Validiere mal deine Installation mit dem Check. Da ist evtl. in irgendeiner PHP-Datei, welche nicht zur direkten Ausgabe vorgesehen ist, ein Leerzeichen vor einem "<?php". Wenn der Check OK ist, dann kann es nur an deinen eigenen Dateien, oder an einer Erweiterung liegen.

    Edit: Achte auch darauf, dass dein Editor die Dateien nicht mit einem BOM speichert. Benutze UTF-8 ohne BOM.
    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

  12. #12
    Contao-Fan Avatar von toto
    Registriert seit
    09.02.2010.
    Ort
    Bad Oeynhausen
    Beiträge
    386

    Standard

    Toller Tipp das mit dem Leerzeichen!!! Genau das war das Problem....manomanoman

    Vielen Dank.

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
  •