Ergebnis 1 bis 9 von 9

Thema: Seite setzten in index.php

  1. #1
    Contao-Nutzer Avatar von dcm75
    Registriert seit
    21.06.2009.
    Beiträge
    96

    Standard Seite setzten in index.php

    Hallo,

    ich habe ein eigenes Suchmodul geschrieben und dieses ist ganz prima unter http://127.0.0.1/suche/ erreichbar.

    Jetzt soll http://127.0.0.1/suche/jacke die Seite http://127.0.0.1/suche/ ausgeben, im Browser soll weiterhin http://127.0.0.1/suche/jacke angezeigt werden.

    In der index.php habe ich folgende Zeile hinzugefügt:
    PHP-Code:
    public function run() {
      ...
      
    // Suche mit Parameter lesen
      
    $pathArr explode("/",htmlentities(\Environment::get('request')));
      if((
    $pageId == "suche" && $pathArr[0] =="suche"))
      {
        if(
    $query == "") {
        
    $objPage PageModel::findPublishedByIdOrAlias('suche');
        
    $objPage->targetUrl $pathArr[0];
        
    $query htmlentities($pathArr[1]);
        }
      }
      ...

    Es wird allerdings die 404 Seite angezeigt. Wie kann ich in der index.php die Seite direkt auf die Seite mit alias "suche" setzten?

    Danke für Eure Hilfe!

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.198
    Partner-ID
    10107

    Standard

    Warum machst du nicht einfach eine reguläre Seite namens "Suche" und holst dir den Search Parameter mit
    PHP-Code:
    \Input::get('auto_item'
    ?

  3. #3
    Contao-Nutzer Avatar von dcm75
    Registriert seit
    21.06.2009.
    Beiträge
    96

    Standard

    Hi Spoony,

    Danke für die Rückmeldung.

    Weil der Aufbau der URL genau so aussehen soll: http://127.0.0.1/suche/jacke und nicht http://127.0.0.1/suche/?query=jacke.

    Die Seite mit Alias "suche" existiert, allerdings liefert http://127.0.0.1/suche/jacke ein 404.

    Viele Grüße
    Daniel

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.198
    Partner-ID
    10107

    Standard

    Ja schon klar... Wenn du eine reguläre Seite namens "suche" hast, dann ist unter der URL "suche/jacke" auf der Seite "suche" der Wert von auto_item "jacke".

    Bei mehreren Parametern wird es dann aber schwieriger - kannst du aber trotzdem mit einem getPageIdFromUrl Hook lösen.

  5. #5
    Contao-Nutzer Avatar von dcm75
    Registriert seit
    21.06.2009.
    Beiträge
    96

    Standard

    Hi Spooky,

    danke für die Rückmeldung! Wert "auto_item" hilft schon weiter beim auslesen :-)

    Ein Problem ist noch, dass ich bei http://127.0.0.1/suche/jacke ein 404 Fehler bekomme.

    Hast Du ein Tipp für mich, wie ich in der index.php die Seite "suche" als Ausgabeseite wähle?

    Danke und Viele Grüße
    Daniel
    Geändert von dcm75 (17.03.2017 um 13:42 Uhr)

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.198
    Partner-ID
    10107

    Standard

    Ok, nochmal von vorne .

    1. Programmiere dein Suchmodul so, dass es in der generate() Methode den GET Parameter "auto_item" nimmt.
    2. Lege in deiner Seitenstruktur eine Seite an mit dem Alias "suche".
    3. Lege dein Suchmodul an.
    4. Füge das Suchmodul als Inhaltselement vom Typ "Modul" auf der Seite "suche" ein.


    Die index.php zu ändern ist nicht Zielführend.

    Du kannst dir als Beispiel das Newsreader Modul der news Extension des Contao Cores ansehen.

  7. #7
    Contao-Nutzer Avatar von dcm75
    Registriert seit
    21.06.2009.
    Beiträge
    96

    Standard

    Danke Spooky,

    der getPageIdFromUrl-HOOK ist sicherlich genau das was ich brauche.

    in der config.php hab ich eingefügt:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('ModuleSearchResult''myGetPageIdFromUrl'); 
    im Modul hab ich eingefügt:
    PHP-Code:
    class ModuleSearchResult extends \Module
    {
      ...
          
    // MyClass.php
        
    public function myGetPageIdFromUrl($arrFragments)
        {
            
            
    var_dump($arrFragments);
            return 
    array_unique($arrFragments);
        }
       ...

    Jetzt bekomm ich die Fehlermeldung beim Aufruf von http://127.0.0.1/suche/led/ :
    HTML-Code:
    Warning: Missing argument 1 for Contao\Module::__construct(), called in ...\system\modules\core\library\Contao\System.php on line 142 and defined in E:\Daten\Dropbox\development\repositories\contao3\...\system\modules\core\modules\Module.php on line 67
    #0 E:\Daten\Dropbox\development\repositories\contao3\...\system\modules\core\modules\Module.php(67): __error(2, 'Missing argumen...', 'E:\\Daten\\Dropbo...', 67, Array)
    #1 E:\Daten\Dropbox\development\repositories\contao3\...\system\modules\core\library\Contao\System.php(142): Contao\Module->__construct()
    #2 E:\Daten\Dropbox\development\repositories\contao3\...\system\modules\core\classes\Frontend.php(246): Contao\System::importStatic('ModuleSearchRes...')
    #3 E:\Daten\Dropbox\development\repositories\contao3\...\index.php(121): Contao\Frontend::getPageIdFromUrl()
    #4 E:\Daten\Dropbox\development\repositories\contao3\...\index.php(571): Index->run()
    #5 {main}
    
    Fatal error: Call to a member function row() on null in E:\Daten\Dropbox\development\repositories\contao3\...\system\modules\core\modules\Module.php on line 80
    (vgl. https://docs.contao.org/books/api/ex...IdFromUrl.html)

    Was mach ich falsch?

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

    Standard

    Wie sieht denn die generate()-Methode aus, welche Spooky erwähnt hat?

    Wie sieht denn die __construct()-Methode aus?

    Bzw. poste doch mal die ganze Klasse...
    Tippfehler unterliegen nicht dem Copyright und können frei weitergegeben werden.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.198
    Partner-ID
    10107

    Standard

    Du darfst deine Klasse nicht einfach so von \Module ableiten, außer du machst das aus einem bestimmten Grund.

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
  •