Ergebnis 1 bis 38 von 38

Thema: Eigene Erweiterung

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

    Standard Eigene Erweiterung

    Hallo zusammen

    heute habe ich meine eigene Erweiterung geschrieben. Man kann eine Liste anlegen und in diese Liste dann Fußballspiele packen.
    Das klappt auch im Backend alles fehlerfrei

    Nun möchte ich die Liste und die Spiele im Frontend per Modul ausgeben. Ich habe das Modul auf eine Unterseite eingebunden. Jedoch wird absolut nichts ausgegeben.
    Was kann ich machen um den Fehler zu finden. Gibt es Fehlerquellen oder ein Debug Tool?

    Danke für eure Hilfe.

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

    Standard

    D.h. Du hast ein Backend-Modul (dpa => Datenbanktabelle und Eingabemaske). Was hast Du denn für das Frontend gemacht? Ohne Details zu wissen wird es schwer, Dir zu helfen.

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

    Standard

    Hallo

    danke für die Frage.
    Laut einer Anleitung habe ich versucht, den Inhalt des Modules (was ich im Backend ausgewählt habe) im Forntend aus zu geben. Leider ohne Erfolg.
    Es wird absolut nichts ausgegeben, auch keine Fehlermeldung. Also ob der was nicht findet.

    Die Eingabe und Datenpflege im BE klappt fehlerfrei

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

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Was hast Du denn für das Frontend gemacht? Ohne Details zu wissen wird es schwer, Dir zu helfen.
    Zitat Zitat von JCreeper Beitrag anzeigen
    habe ich versucht, den Inhalt des Modules (was ich im Backend ausgewählt habe) im Forntend aus zu geben.
    Du hast aber immer noch nicht gesagt was Du gemacht hast (wie Du es gemacht hast). Ich vermute mal, da liegt der Fehler aber ohne Details ...

  5. #5
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Check mal folgendes:
    • in deinem Modul-Ordner: einen Ordner "modules" mit einer PHP-Datei (z.B. ModuleMeinModul.php)
    • in dieser PHP-Datei eine Klasse, die auch so heisst (Also: class ModuleMeinModul)
    • darin eine protected Variable $strTemplate, der du den Template-Name zuweist (Bsp: "mein_template")
    • in deinem Modul-Ordner: einen Ordner "templates", in dem das Template auch vorhanden ist (Also: mein_template.html5)
    • in deiner config/config.php muss das FE-Modul entsprechend angegeben werden
    • wenn das alles stimmt, den Autoload-Creator im Backend für dein Modul ausführen (Bestehende Dateien überschreiben)
    • anschliessend noch Systemwartung > Internen Cache leeren

    Wird es jetzt angezeigt?

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

    Standard

    Vielen Dank für die Antowrten und die Anleitung der Fehlerbehebung.
    Es lag echt daran, das die class falsch geschrieben was

    DANKE DANKE DANKE
    ------
    Ich speicher in meiner Tabelle ein Datum mit Zeit (DatePicker) in einem varchar Feld.
    Wie gebe ich das nun im Frontend korrekt aus? Weiß das jemand?

    So siehts in der Tabelle aus: 1445967060
    Ich wills so: 01.01.2015 14:15
    Geändert von JCreeper (27.10.2015 um 17:34 Uhr)

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    So siehts in der Tabelle aus: 1445967060
    Ich wills so: 01.01.2015 14:15
    Gespeichert wird ein Timestamp, den Du noch formatieren musst:

    PHP-Code:
    $timestamp 1445967060// Dein Timestamp; wie auch immer die Variable bei Dir heißt

    echo Date::parse($GLOBALS['TL_CONFIG']['datimFormat'], $timestamp); // formatieren und ausgeben 
    $GLOBALS['TL_CONFIG']['datimFormat'] ist das, was Du im Backend unter System -> Einstellungen angibst.

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

    Standard

    Vielen Dank. Hat alles geklappt!

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

    Standard

    Im Backend kann ich in meinem Datensatz ein Bild einfügen.
    Das habe ich im Code unter dem Punkt Fields so gelöst:

    PHP-Code:
    'logo' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_vorteilspartner']['logo'],
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('files'=>true'filesOnly'=>true'fieldType'=>'radio'),
                
    'sql'                     => "binary(16) NULL"
            
    ), 
    Der Wert wird auch gespeichert und im Backend sehe ich das Bild im Datensatz (nach dem ich gespeichert habe)

    Nun komme ich leider nicht auf die Lösung, wie ich den Wert fürs Frontend umwandel. Kann mir jemand helfen

    Danke

  10. #10
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.516
    User beschenken
    Wunschliste
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Danke für die schöne Beschreibung. Nun wird auch etwas ausgegeben, aber leider aus meiner Sicht noch fehlerhaft.
    Was habe ich denn falsch gemacht?

    Datenbank
    singleSRC = binary(16) NULL

    DCA
    PHP-Code:
    'singleSRC' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_vorteilspartner']['singleSRC'],
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('files'=>true'filesOnly'=>true'fieldType'=>'radio'),
                
    'sql'                     => "binary(16) NULL"
            
    ), 
    Module.php
    PHP-Code:
    protected function compile()
        {
            
    $objVorteilspartner Database::getInstance()
                -> 
    prepare('SELECT *
                             FROM tl_vorteilspartner
                             ORDER BY category'
    )
                -> 
    execute($this->vorteilpartner_auswahl1);

                
    $this->Template->vorteilspartner $objVorteilspartner->fetchAllAssoc();

            
    // Check for version 3 format
            
    if (!is_numeric($this->singleSRC))
            {
                return 
    '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
            }

            
    $objFile = \FilesModel::findByPk($this->singleSRC);
            
    $this->singleSRC $objFile->path;

        } 
    Template
    PHP-Code:
    <?php foreach ($this->vorteilspartner as $vorteilspartner_element):
                
    ?>
    <tr>
       <td><img src="<?php echo $vorteilspartner_element['singleSRC']; ?>"></td>
        <td><?php echo $vorteilspartner_element['name']; ?><br><?php echo $vorteilspartner_element['address']; ?></td>
        <td><?php echo $vorteilspartner_element['description']; ?></td>
        <td><?php echo $vorteilspartner_element['benefit']; ?></td>
        <td><?php echo $vorteilspartner_element['category']; ?></td>
    </tr>
    <?php endforeach; ?>
    Ausgabe im HTML-Code
    HTML-Code:
    <img src="files/pictures/r">
    Geändert von JCreeper (30.10.2015 um 07:47 Uhr)

  12. #12
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    In $this->singleSRC steht die UUID und nicht der PK.
    Du musst das z.B. so schreiben:

    PHP-Code:
    $objFile = \FilesModel::findByUuid($this->singleSRC);
    $objFile->path//hier hast du den Path 
    Geht denn der Code in deiner Methode noch weiter? Weil du weisst die Datenbank-Daten bereits oben dem Template zu:
    PHP-Code:
    $this->Template->vorteilspartner $objVorteilspartner->fetchAllAssoc(); 
    Du könntest die Umwandlung auch direkt im Template machen:
    PHP-Code:
    <td><img src="<?php echo \FilesModel::findByUuid($vorteilspartner_element['singleSRC'])->path?>"></td>
    Geändert von marcos (30.10.2015 um 08:44 Uhr)

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

    Standard

    Du könntest die Umwandlung auch direkt im Template machen:
    PHP-Code:
    <td><img src="<?php echo \FilesModel::findByUuid($vorteilspartner_element['singleSRC'])->path?>"></td>
    Hier wird gar nichts ausgeben!
    -----
    So sieht mein Modul aus
    PHP-Code:
    <?php

    /**
     * Contao Open Source CMS
     *
     * Copyright (c) 2005-2015 Leo Feyer
     *
     * @license LGPL-3.0+
     */

    namespace Contao;


    /**
     * Class ModuleVorteilspartner
     *
     * @author Leo Feyer <https://github.com/leofeyer>
     */
    class ModuleVorteilspartner extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'vorteilspartner';

        
    /**
         * Generate the module
         */
        
    protected function compile()
        {
            
    $objVorteilspartner Database::getInstance()
                -> 
    prepare('SELECT *
                             FROM tl_vorteilspartner
                             ORDER BY category'
    )
                -> 
    execute($this->vorteilpartner_auswahl1);

                
    $this->Template->vorteilspartner $objVorteilspartner->fetchAllAssoc();

            
    // Check for version 3 format
            
    if (!is_numeric($this->singleSRC))
            {
                return 
    '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
            }

            
    $objFile = \FilesModel::findByPk($this->singleSRC);
            
    $this->singleSRC $objFile->path;

        }


    }

  14. #14
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Bei deinem SQL-Query fehlen noch die Wildcards bzw. eine WHERE-Clause für deine Variablen, die du in execute() angibst. Darum erhältst du vermutlich auch noch keine Werte.
    Siehe: Datenbank_Klasse_verwenden

    Ich würde es z.B. so machen:

    Module:
    PHP-Code:
    class ModuleVorteilspartner extends \Module 
    {
        
    /** 
         * Template 
         * @var string 
         */ 
        
    protected $strTemplate 'vorteilspartner';
        
        
    /** 
        * Generate module 
        */
        
    protected function compile()
        {   

            
    $this->import('Database')

            
    //hier fehlen noch die Wildcards
            
    $objVorteilspartner $this->Database
                
    -> prepare('SELECT *
                             FROM tl_vorteilspartner
                             ORDER BY category'
    )
                -> 
    execute($this->vorteilpartner_auswahl1);

            
    $this->Template->vorteilspartner $objVorteilspartner->fetchAllAssoc();       

        }


    Template
    PHP-Code:
    <?php foreach ($this->vorteilspartner as $vorteilspartner_element):  ?>
    <tr>
       <td><img src="<?php echo \FilesModel::findByUuid($vorteilspartner_element['singleSRC'])->path?>"></td>
        <td><?php echo $vorteilspartner_element['name']; ?><br><?php echo $vorteilspartner_element['address']; ?></td>
        <td><?php echo $vorteilspartner_element['description']; ?></td>
        <td><?php echo $vorteilspartner_element['benefit']; ?></td>
        <td><?php echo $vorteilspartner_element['category']; ?></td>
    </tr>
    <?php endforeach; ?>

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

    Standard

    Habe es nun so gemacht wie du beschrieben hast. Nun wird im HTML Code folgendes ausgegeben

    HTML-Code:
    <img src="">

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    Habe es nun so gemacht wie du beschrieben hast.
    und wier hast Du dabei marcos Anmerkung

    PHP-Code:
     //hier fehlen noch die Wildcards 
    umgesetzt? Vielleicht liegt da ja das Problem.

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

    Standard

    Danke für den Hinweis.
    Was ist denn mit Wildcards gemeint? Das habe ich wirklich nicht drin

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

    Standard

    In diesem Stück Code
    PHP-Code:
     //hier fehlen noch die Wildcards
            
    $objVorteilspartner $this->Database
                
    -> prepare('SELECT *
                             FROM tl_vorteilspartner
                             ORDER BY category'
    )
                -> 
    execute($this->vorteilpartner_auswahl1); 
    übergibst Du im execute() zwei Parameter, die in Deinem SQL eingesetzt werden sollen. Du hast im SQL aber nirgends den Platzhalter ? (Wildcard), der angibt wo etwas eingesetzt werden soll.

    Da wir Deine Tabelle tl_vorteilspartner (insbes. die Spaltennamen) nicht kennen können wir Dir nicht sagen, wie und wo.

    Du solltest aber doch wissen, was die Werte $this->vorteilpartner_auswahl und 1 in diesem Kontext bedeuten -- Du hast es ja hingeschrieben ;-)

    Wahrscheinlich willst Du etwas machen wie

    PHP-Code:
     //hier müssen noch die Spaltennamen angepast werden
            
    $objVorteilspartner $this->Database
                
    -> prepare('SELECT *
                             FROM tl_vorteilspartner
                             WHERE auswahl=? AND noch_etwas=?
                             ORDER BY category'
    )
                -> 
    execute($this->vorteilpartner_auswahl1); 
    Das würde dann in der Filterbedingung "auswahl=$this->vorteilpartner_auswahl AND noch_etwas=1" resultieren.
    Die Spaltennamen auswahl und noch_etwas habe ich mangels Kenntnis deiner Strukturen vollkommen frei erfunden.
    Geändert von fiedsch (30.10.2015 um 16:24 Uhr)

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

    Standard

    Vielen Dank für die Hilfe.
    Bekomme nun eine Ausgabe vom Bild

    Wofür steht denn das "?" in der WHERE Abfrage? Für eine Variable?!

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

    Standard

    Das ? steht für den Wert einer Variablen.

    Die Werte übergibst Du als Paremeter im execute(). Einer je verwendetem Fragezeichen und zwar genau in der Reihenfolge der Verwendung der Fragezeichen im SQL-Statement.

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

    Standard

    Sehr gut erläutert vielen Dank.

    Was mache ich denn falsch, wenn der mir bei der Ausgabe des Datums auch eine Uhrzeit mit ausgibt (obwohl es nur ein Datumsfeld oder Uhrzeit ist
    PHP-Code:
    <?php echo Date::parse($GLOBALS['TL_CONFIG']['datimFormat'], $datum); ?>
    DCA
    PHP-Code:
    'date' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_hubisspiele']['date'],
                
    'default'                 => time(),
                
    'exclude'                 => true,
                
    'filter'                  => true,
                
    'sorting'                 => true,
                
    'flag'                    => 8,
                
    'inputType'               => 'text',
                
    'eval'                    => array('rgxp'=>'date''doNotCopy'=>true'datepicker'=>true'tl_class'=>'w50 wizard'),
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'"
            
    ), 

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    Was mache ich denn falsch, wenn der mir bei der Ausgabe des Datums auch eine Uhrzeit mit ausgibt (obwohl es nur ein Datumsfeld oder Uhrzeit ist
    PHP-Code:
    <?php echo Date::parse($GLOBALS['TL_CONFIG']['datimFormat'], $datum); ?>
    In dem

    PHP-Code:
            'sql'                     => "int(10) unsigned NOT NULL default '0'" 
    wird ein timestamp gespeichert. Den kannst Du mit

    PHP-Code:
    <?php echo Date::parse($GLOBALS['TL_CONFIG']['datimFormat'], $datum); ?>
    formatieren und ausgeben.

    PHP-Code:
    $GLOBALS['TL_CONFIG']['datimFormat'
    ist dabei das, was Du im Backend unter Einstellungen -> Datums- und Zeitformat angegeben hast (datim ... date time).

    Wenn Du nur das Datum willst das der Timestamp repräsentiert, dann musst Du

    PHP-Code:
    $GLOBALS['TL_CONFIG']['dateFormat'
    nehmen (ebenfalls im Backend, dann aber unter Einstellungen -> Datumsformat).

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

    Standard

    Danke dir fiedsch für die tolle und schnelle Hilfe/Erläuterung

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

    Standard

    Noch mal kurz zum Datum
    Wie kann ich das denn in eine WHERE Abfrage packen?

    Sprich Select * FROM XX WHERE datum > date()

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    Select * FROM XX WHERE datum > date()
    date() schon mal nicht, da das ein Datum formatiert (kuckst Du hier: http://php.net/manual/de/function.date.php).

    Wenn Du das aktuelle Datum (als Timestamp) haben willst, nimm time() (http://php.net/manual/de/function.time.php).

    In Contao dann mit den oben bereits diskutierten Abfragen mit Platzhaltern etwa so:

    PHP-Code:
     $objMeineAbfrage $this->Database-> prepare('SELECT * FROM XX WHERE datum > ?")-> execute(time()); 
    Deinen Tabellennamen musst Du natürlich noch anpassen und ebenso checken ob in der Spalte datum überhaupt timestamps gespeichert sind -- der Vergleich also Sinn ergibt.

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

    Standard

    Ok, das würde heissen, für das "?" müsste ich noch einen Wert übergeben?

    PHP-Code:
    protected function compile()
        {
            
    $arrListe = array();
            
    $objListe $this->Database->execute("SELECT * FROM tl_hubisliste WHERE published = 1 AND start > ?")-> execute(time());
            while (
    $objListe->next())
            {
              
    $newArr = array
              (
                
    'title' => trim($objListe->title),
                
    'start' => trim($objListe->start),
                
    'stop' => trim($objListe->stop),
              );

              
    $arrListe[] = $newArr;
            }
            
    $this->Template->liste $arrListe;

        } 

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    Ok, das würde heissen, für das "?" müsste ich noch einen Wert übergeben?
    Machst Du doch schon. Du übergibst das Ergebnis des Aufrufs von time() als Parameter an execute().

    Ergänzung:

    Bist Du Dir bei Deiner Variablen start sicher? In Deinem DCA-Beispiel aus #21 hieß sie date.
    Geändert von fiedsch (31.10.2015 um 13:51 Uhr)

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

    Standard

    Ja bin mir bei start sehr sicher
    Date war bei dem anderen Template

    Was steht denn in execute(time()) drin? Uhrzeit?

  29. #29
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.516
    User beschenken
    Wunschliste

    Standard

    time — Gibt den aktuellen Unix-Timestamp/Zeitstempel zurück

    http://php.net/time
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Ok, habs ja nun so geschrieben
    PHP-Code:
    $objListe $this->Database->execute("SELECT * FROM tl_hubisliste WHERE published = 1 AND start > ?")-> execute(time()); 
    und bekomme dann folgende Fehlermeldung:
    Fatal error: Uncaught exception Exception with message Too few arguments to build the query string thrown in system/modules/core/library/Contao/Database/Statement.php on line 331
    #0 system/modules/core/library/Contao/Database/Statement.php(262): Contao\Database\Statement->replaceWildcards(Array)
    #1 system/modules/core/library/Contao/Database.php(194): Contao\Database\Statement->execute()
    #2 system/modules/hubisliste/modules/ModuleHubisList.php(34): Contao\Database->execute('SELECT * FROM t...')
    #3 system/modules/core/modules/Module.php(282): Contao\ModuleHubisList->compile()
    #4 system/modules/core/elements/ContentModule.php(59): Contao\Module->generate()
    #5 system/modules/core/library/Contao/Controller.php(476): Contao\ContentModule->generate()
    #6 system/modules/core/modules/ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao \ContentModel), 'main')
    #7 system/modules/core/modules/Module.php(282): Contao\ModuleArticle->compile()
    #8 system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate()
    #9 system/modules/core/library/Contao/Controller.php(409): Contao\ModuleArticle->generate(false)
    #10 system/modules/core/library/Contao/Controller.php(269): Contao\Controller::getArticle(Object(Contao\Articl eModel), false, false, 'main')
    #11 system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main')
    #12 system/modules/core/controllers/FrontendIndex.php(267): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #13 index.php(20): Contao\FrontendIndex->run()
    #14 {main}

  31. #31
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.516
    User beschenken
    Wunschliste

    Standard

    du rufst zweimal execute auf,so besser:
    PHP-Code:
    $objListe $this->Database->prepare("SELECT * FROM tl_hubisliste WHERE published = 1 AND start > ?")->execute(time()); 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Vielen Dank noch mals für eure Geduld und Hilfe.
    Informiere mich viel im Netz und versuche es dann umzusetzen. Was auch sehr gut klappt. Bin mit dem Ergebnis zu frieden

    Nach was kann ich denn suchen/googlen damit ich folgendes finde.
    Meine Erweiterung hat eine Listenansicht und pro Datensatz weitere Infos. Quasi eine Reader Seite wie bei den News. Die Reader Seite gibt auch die Infos aus.
    Nur weiss ich nicht, wie ich die Verlinkung vom Datensatz (Listenansicht) auf die Reader Seite setzen muss (im Code).
    Sprich www.domain.de/reader.php?id=123

    Danke für den Hinweis schon mal

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

    Standard

    Weiss jemand Rat wo ich mich belesen kann was die Verlinkung von der Liste zur Detailansicht angeht?

  34. #34
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    So kompliziert ist das ja eigentlich nicht.

    Bei der Auflistung den Link mit der ID als GET-Parameter generieren:
    PHP-Code:
    <a href="www.meinlink.com?id=<?php echo $id?>" >Link</a>
    ...und auf der Detailseite kannst du in deinem Modul/im Template die GET-Variable wieder abfragen und damit dann eine DB-Abfrage usw. starten.

    PHP-Code:
    $id = \Input::get('id');
    //...
    $result $this->Database->prepare("SELECT name FROM tl_xy WHERE id=?")->execute($id);
    //... 

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

    Standard

    Ich muss noch mal auf die Datums Abfrage kommen:
    PHP-Code:
    class ModuleHubisList extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'hubisliste';

        
    /**
         * Generate the module
         */
        
    protected function compile()
        {
            
    $arrListe = array();
            
    $objListe $this->Database->prepare("SELECT * FROM tl_hubisliste WHERE published = 1 AND start > ?")-> execute(time());
            while (
    $objListe->next())
            {
              
    $newArr = array
              (
                
    'title' => trim($objListe->title),
                
    'start' => trim($objListe->start),
                
    'stop' => trim($objListe->stop),
              );

              
    $arrListe[] = $newArr;
            }
            
    $this->Template->liste $arrListe;

        }

    Mein DB Feld start ist ein varchar Feld in dem Steht zB "1447090260"

    Nun soll der mir ja Datensätze anzeigen der Published und wo start größer als heute ist.
    Leider gibt der mir nix aus

    Muss ich etwas umwandeln oder anders formatieren?

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

    Standard

    Zitat Zitat von marcos Beitrag anzeigen
    So kompliziert ist das ja eigentlich nicht.

    Bei der Auflistung den Link mit der ID als GET-Parameter generieren:
    PHP-Code:
    <a href="www.meinlink.com?id=<?php echo $id?>" >Link</a>
    ...und auf der Detailseite kannst du in deinem Modul/im Template die GET-Variable wieder abfragen und damit dann eine DB-Abfrage usw. starten.

    PHP-Code:
    $id = \Input::get('id');
    //...
    $result $this->Database->prepare("SELECT name FROM tl_xy WHERE id=?")->execute($id);
    //... 

    Vielen Dank. Das klappt einwandfrei!
    Wie würde ich das denn realisieren, dass in der URL nicht die ID steht, sondern der Titel
    So wie man das bei den News zum Beispiel hat. Speaking URL
    www.domain.de/liste/europapokal.html

    Anmerkung!!!!!!!

    Habe das hier gefunden, jedoch wüsste ich jetzt nicht wo ich das wie einsetze
    PHP-Code:
    $pageId 1
    $pageModel = \PageModel::findByPK($pageId); 

    if (
    $pageModel) { 
       
    $url = \Controller::generateFrontendUrl($pageModel->row()); 

    Geändert von JCreeper (10.11.2015 um 13:00 Uhr)

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

    Standard

    Zitat Zitat von JCreeper Beitrag anzeigen
    Anmerkung!!!!!!!

    Habe das hier gefunden, jedoch wüsste ich jetzt nicht wo ich das wie einsetze
    PHP-Code:
    $pageId 1
    $pageModel = \PageModel::findByPK($pageId); 

    if (
    $pageModel) { 
       
    $url = \Controller::generateFrontendUrl($pageModel->row()); 

    Das kannst Du verwenden, wenn Du in Deiner Modulkonfiguration eine Seitenauswahl hast (die "Readerseite" oder "weiterleitungsseite"). Die ID dieser Seite verwendest Du dann als $pageid (in deinem Beispiel fix eine 1) und bekommst so via generateFrontendUrl() eine schöne URL, die auch berücksichtigt, ob URLs umschreiben aktiv ist etc. An diese URL müsstest Du dann noch wie oben besprochen deine Weiteren Parameter anhängen.

    Edit: bzgl "Speaking URL" hilft Dir das aber nicht weiter.

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

    Standard

    Ok und wo kann ich mich belesen, wenn es um eine Speaking URL geht in meiner Erweiterung
    Sprich für die Detailsseite

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
  •