Ergebnis 1 bis 3 von 3

Thema: Eigenes Modul mit 2 Templates - im Frontend das richtige Template anzeigen

  1. #1
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard Eigenes Modul mit 2 Templates - im Frontend das richtige Template anzeigen

    Hallo, ich hab ein Modul, welches 2 Templates hat. Ich kann die Templates bei den Modulen im Backend auch auswählen und zuordnen. Das funktioniert.

    Im Backend habe ich bei der Eingabemaste meiner Daten 2 Felder. Die Felder heißen "alle" und "compliance"

    Jetzt möchte ich, dass je nach Feld das richtige Template angesprochen wird, und hier stecke ich fest.

    aktuell wird immer das Template angesprochen, weche unter $strTemplate eingetragen ist. In den Templates selbst habe ich eine IF-Anweisung, wo ich das Feld "alle" bzw. "compliance" abfrage. Für's Frontend hab ich dafür 2 Module eingebunden, mit dem jeweiligen Template.

    PHP-Code:
    namespace Steinkellner\Webmails;

    class 
    ModuleWebmailList extends \Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'webmail_list_all';

        public function 
    generate()
        {
            if (
    TL_MODE == 'BE')
            {
                
    $objTemplate = new \BackendTemplate('be_wildcard');
     
                
    $objTemplate->wildcard '### ' utf8_strtoupper($GLOBALS['TL_LANG']['FMD']['webmail'][0]) . ' ###';
                
    $objTemplate->title $this->headline;
                
    $objTemplate->id $this->id;
                
    $objTemplate->link $this->name;
                
    $objTemplate->href 'contao/main.php?do=themes&table=tl_module&act=edit&id=' $this->id;
     
                return 
    $objTemplate->parse();
            }
            return 
    parent::generate();
        }
        
        
    /**
         * Compile the current element
         */
        
    protected function compile()
        {
            global 
    $objPage;
            
            \
    System::loadLanguageFile('tl_webmail');
                    
            
    $webmailCount = \WebmailModel::findAllByPublished();
            
    $rows = array();    
            while(
    $webmailCount->next())
            {
                
    $rows[] = $webmailCount->row();
            }
            
            
    $total = \count($rows);
            
    $limit $total;
            
    $offset 0;
                    
            
    // Pagination
            
    if ($this->perPage 0)
            {
                
    $id 'page_e' $this->id;
                
    $page Input::get($id) ?? 1;
     
                if (
    $page || $page max(ceil($total/$this->perPage), 1))
                {
                    throw new 
    PageNotFoundException('Page not found: ' Environment::get('uri'));
                }
     
                
    $offset = ($page 1) * $this->perPage;
                
    $limit min($this->perPage $offset$total);
     
                
    $objPagination = new Pagination($total$this->perPageConfig::get('maxPaginationLinks'), $id);
                
    $this->Template->pagination $objPagination->generate("\n  ");
            }

            
    /**
             * Abfragen der Tabelle
             **/
            
    $webmails = array();

            
    $result = \WebmailModel::findAllByPublished();
                    
            while (
    $result->next())
            {
                            
                
    $webmails[] = array
                (
                    
    'title' => \StringUtil::specialchars($result->title),
                    
    'url'    => htmlspecialchars($result->url),
                    
    'alle'    => $result->alle,
                    
    'compliance' => $result->compliance,
                    
    'date'    => $result->date
                
    );

            }
            
            
    //Template
            
    $this->Template->title = \StringUtil::specialchars($GLOBALS['TL_LANG']['tl_webmail']['header_title']);
            
    $this->Template->date = \StringUtil::specialchars($GLOBALS['TL_LANG']['tl_webmail']['header_date']);
            
    $this->Template->webmails $webmails;
        }

    LG, Andi

  2. #2
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Ich glaube, ich gehe es sowieso falsch an. Irgenwie hab ich nen Wurm drin.

    Folgendes habe ich im BE:
    Ich hab eine Eingabemaske wo ich 2 zusätzliche Checkboxen habe. Einmal mit "alle" und einmal mit "compliance"

    Die Checkbox "alle" ist immer angehackt und ab und zu bei einem Eintrag auch die Checkbox "compliance". Das passt alles und funktioniert wunderbar.

    Jetzt möchte ich im FE auf einer Seite alles mir anzeigen lassen, da ja die Checkbox "alle" angehackt ist.

    Auf einer anderen Seite möchte ich mir aber NUR jene Datensätze anzeigen lassen, wo die Checkbox "compliance" angehackt ist. Da hänge ich.

    Wenn ich jetzt so nachdenke, bräuchte ich die 1. Checkbox gar nicht, denn auf einer Seite sollen ja sowieso alle angezeigt werden.

    Aber wie kann ich das mit der andren Seite lösen, so dass wirklich nur jene Datensätze angezeigt werden, wo die "checkbox" angehackt ist?
    LG, Andi

  3. #3
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So, hab es nun mit einem 2. Modul gelöst. Ist zwar nicht die ganz elegante Art aber es funktioniert so wie es funktionieren sollte.
    LG, Andi

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
  •