Ergebnis 1 bis 9 von 9

Thema: Backend Modul - Ausgabe

  1. #1
    Contao-Nutzer
    Registriert seit
    30.07.2014.
    Beiträge
    163

    Standard Backend Modul - Ausgabe

    Hallo zusammen,

    ich habe eine eigene Erweiterung geschrieben, wo der Kunde Immobilien einpflegen kann.
    Nun möchte ich, dass er über das Backend Modul einstellen kann, wie viele Immobilen zB auf der Startseite ausgegeben werden soll
    Die Zahl "0" steht für alles ausgeben.

    Wie lautet das Zauberwort bzw wo kann ich mich da belesen?

    Danke

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.949

    Standard

    Das machst Du als Option in einer Erweiterung von dca/tl_content.php (für Content Elemente) bzw. tl_module.php (für Module)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    30.07.2014.
    Beiträge
    163

    Standard

    Ok vielen Dank.

    Habe nun eine Datei tl_module.php mit folgendem Code angelegt:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['palettes']['immolist']    = '{title_legend},name,headline,type;{config_legend},numberOfItems;{expert_legend:hide},guests,cssID,space'
    Nun kann ich in meinem Modul die Anzahl der Beiträge einstellen.

    In welcher Datei, mache ich denn nun die Abfrage, dass dann auch wirklich nur diese Anzahl der Beiträge ausgegeben wird?
    Geändert von JCreeper (19.02.2017 um 02:42 Uhr)

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.949

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    In welcher Datei, mache ich denn nun die Abfrage, dass dann auch wirklich nur diese Anzahl der Beiträge ausgegeben wird?
    In Deinem Modul. Dort, wo Du auch die Beiträge zusammenstellt. (Dort als $this->numberOfItems).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Nutzer
    Registriert seit
    30.07.2014.
    Beiträge
    163

    Standard

    Tut mir leid...finde da keinen Lösungsansatz

    PHP-Code:
    class ModuleImmolist extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'immolist';

        
    /**
         * Generate the module
         */
        
    protected function compile()
        {

            
    $this->import('Database') ;

            
    $objImmo $this->Database
                
    -> prepare('SELECT *
                             FROM tl_immo
                             WHERE published = 1
                             ORDER BY id DESC'
    )
                -> 
    execute($this->numImmos1);

            
    $this->Template->immo $objImmo->fetchAllAssoc();

        }




  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.949

    Standard

    In Deinem SQL Query übergibst Du execute() die Parameter $this->numImmos und 1, verwendest sie aber nirgends.

    PHP-Code:
     $objImmo $this->Database 
                
    -> prepare('SELECT * 
                             FROM tl_immo 
                             WHERE published = 1 
                             ORDER BY id DESC
                             LIMIT ?'

                -> 
    execute($this->numImmos); 
    Edit: sehe gerade noch: in Deiner DCA Definition die Du oben gezeigt hast nennst Du den Parameter numberOfItems. Damit wäre das dann

    PHP-Code:
    ->execute($this->numberOfItems); 
    Geändert von fiedsch (19.02.2017 um 19:31 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Nutzer
    Registriert seit
    30.07.2014.
    Beiträge
    163

    Standard

    Du hast recht...das hatte ich aber schon geändert. Leider wird aber nichts ausgegeben.

    tl_module.php
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['fields']['numImmos'] = array(
        
    'label'             => &$GLOBALS['TL_LANG']['tl_immo']['numImmos'],
        
    'inputType'         => 'text',
        
    'default'           => 6,
        
    'eval'              => array(
                                    
    'mandatory'   => true,
                                    
    'tl_class'    => 'w50',
                                ),
        
    'sql'            => "int(10) NOT NULL"
    ); 
    ModuleImmolist.php
    PHP-Code:
    class ModuleImmolist extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'immolist';

        
    /**
         * Generate the module
         */
        
    protected function compile()
        {

            
    $this->import('Database') ;

            
    $objImmo $this->Database
                
    -> prepare('SELECT *
                             FROM tl_immo
                             WHERE published = 1
                             ORDER BY id DESC
                             LIMIT ?'
    )
                -> 
    execute($this->numImmos);

            
    $this->Template->immo $objImmo->fetchAllAssoc();

        }



    Fehlermeldung
    PHP Fatal error: Uncaught exception 'Exception' with message 'Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3'' at line 5 (SELECT *
    FROM tl_immo
    WHERE published = 1
    ORDER BY id DESC
    LIMIT '3')' thrown in /Users/Torsten/Projekte/gosebrink/internet/system/modules/core/library/Contao/Database/Statement.php on line 295

    Hinweis: Wenn ich in die PHP Datei nach Limit die Zahl 3 in den Code eingebe, bekomme ich eine Ausgabe von 3 Objekten
    Geändert von JCreeper (19.02.2017 um 21:17 Uhr)

  8. #8
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Limit 3 gehört auch nicht in den prepare-Part:
    PHP-Code:
    $objImmo $this->Database 
                
    -> prepare('SELECT * 
                             FROM tl_immo 
                             WHERE published = 1 
                             ORDER BY id DESC'

                -> 
    limit($this->numImmos)
                -> 
    execute( ); 

  9. #9
    Contao-Nutzer
    Registriert seit
    30.07.2014.
    Beiträge
    163

    Standard

    Vielen Dank. Das war der Fehler!

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
  •