Ergebnis 1 bis 6 von 6

Thema: Funktionen getFormats, getDatesFromFormat erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard Funktionen getFormats, getDatesFromFormat erweitern

    Guten Morgen,

    ist es möglich diese beiden Core Funktionen zu erweitern?

    Ziel:
    Ich möchte im Backend im Anzeigeformat einer Eventliste zusätzliche Parameter (z.B. alle Events der vergangenen und der kommenden Woche,) einfügen (diese werden ja scheinbar in der getFormats definiert und in der getDatesFromFormat ausgewertet)

    auf den getAllEvents Hook kann ich mich einhaken und könnte die entsprechenden Events bearbeiten bzw. filtern, aber wie komme ich an die beiden genannten Funktionen um dort die Filterauswahl zu erweitern? gibt es da auch einen Hook oder ist das Vorgehen da anders (oder nicht möglich) ?

    Danke für die Hilfe

  2. #2
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hi,

    ja, das ist möglich. Du kannst du Klasse Events.php erweitern, und die Funktion getDatesFromFormat dann überschreiben. Für die andere Funktion kannst du ebenfalls das vorhandene erweitern. Dafür musst du dir eine eigene klein Erweiterung schreiben.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  3. #3
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Beitrag

    Danke für die Info, ich dachte mir schon dass das irgendwie geht.

    Ich steh bloß grad auf dem Schlauch!

    In einer Erweiterung lade ich mir ja eine eigene Klasse und hänge die neue Funktion an einen Hook der die ursprüngliche Funktion dann durch meine neue Funktion ersetzt. Wie bringe ich aber Contao dazu generell meine eigene Funktion an Stelle der Corefunktion zu verwenden?

    also
    class Events extents Events
    {
    function getDatesFromFormat ()
    meine neue Funktion
    }
    oder
    Geändert von rwinkler (26.07.2017 um 11:24 Uhr)

  4. #4
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    bei mir sieht das so aus.

    Die Event Klasse...
    PHP-Code:
    class EventsExt extends \Events
    {
    // dein PHP Code

    z.B. Evenliste...
    PHP-Code:
    class ModuleEventlist extends \EventsExt
    {
    // Dein PHP Code

    Dann sieht deine autoload.php etwa so aus...
    PHP-Code:
        // Modules
        
    'Contao\ModuleCalendar'          => 'system/modules/calendar_extended/modules/ModuleCalendar.php',
        
    'Contao\ModuleEventlist'         => 'system/modules/calendar_extended/modules/ModuleEventlist.php',
        
    'Contao\ModuleEventMenu'         => 'system/modules/calendar_extended/modules/ModuleEventMenu.php',
        
    'Contao\ModuleEventReader'       => 'system/modules/calendar_extended/modules/ModuleEventReader.php'
    Das war's, soweit ich mich erinnere...

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  5. #5
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    Hallo Kester,

    das verstehe ich prinzipiell, für die Events habe ich es auch geschafft

    PHP-Code:
    use Contao\Events as CoreClass_Events;
    abstract class 
    Events extends CoreClass_Events
    {
     protected function 
    getDatesFromFormat(\Date $objDate$strFormat)
     {
    hier meine veränderte Funktion}

    Was sich mir momentan nicht erschließt ist, was muss ich tun, dass Contao meine getFormats Funktion verwendet?

    PHP-Code:
    use Contao\tl_module_calendar as CoreClass_tl_module_calendar;
    class 
    tl_module_calendar extends CoreClass_tl_module_calendar 
    tut's jedenfalls nicht!

    gibt's eine Übersicht der Klassen und Namespaces für den Contao Core?
    Geändert von rwinkler (27.07.2017 um 12:33 Uhr)

  6. #6
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Lächelndes Gesicht gelöst

    so habs geschafft!

    hier die kurze Auflösung für die getFormats
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['fields']['cal_format'] = array();
    ...
    'options_callback'        => array('MyEvents''getMyFormats'),
    ... 
    das in eine neue Klasse gepackt und darin die Originalfunktion um 'cal_own' => array('past_7_next_7') erweitert

    PHP-Code:
    public function getMyFormats(DataContainer $dc)
        {
            if (
    $dc->activeRecord->type == 'eventmenu')
            {
                return array(
    'cal_day''cal_month''cal_year');
            }

            return array
            (
                
    'cal_list'     => array('cal_day''cal_month''cal_year''cal_all'),
                
    'cal_upcoming' => array('next_7''next_14''next_30''next_90''next_180''next_365''next_two''next_cur_month''next_cur_year''next_next_month''next_next_year''next_all'),
                
    'cal_past'     => array('past_7''past_14''past_30''past_90''past_180''past_365''past_two''past_cur_month''past_cur_year''past_prev_month''past_prev_year''past_all'),
                
    'cal_own'     => array('past_7_next_7')
            );
        } 
    ausgegeben wird's dann über

    PHP-Code:
    use Contao\Events as CoreClass_Events;
     abstract class 
    Events extends CoreClass_Events
     
    {
        protected function 
    getDatesFromFormat(\Date $objDate$strFormat)
        {
            
    $Original parent::getDatesFromFormat($objDate$strFormat);

            switch (
    $strFormat)
            {
                case 
    'past_7_next_7':
                    return array((
    strtotime('-7 days') - 1), (strtotime('+7 days') - 1), $GLOBALS['TL_LANG']['MSC']['cal_empty']);
                    break;
                default:
                    return 
    $Original;
                    
            }
        }     

    die languages anpassen
    PHP-Code:
    ...
    <
    trans-unit id="tl_module.cal_own">
            <
    source>Own events</source>
            <
    target>Eigene Events</target>
          </
    trans-unit>
          <
    trans-unit id="tl_module.past_7_next_7">
            <
    source>- 1 week / + 1 week</source>
            <
    target>- 1 Woche / + 1 Woche</target>
    </
    trans-unit>
    ... 

    und dann kommts auch in schön:

    das Ganze natürlich ohne Gewähr...


    Event.png
    Geändert von rwinkler (28.07.2017 um 16:55 Uhr)

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
  •