Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Generierung von URLs aus Daten von externer API

  1. #1
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    130

    Standard Generierung von URLs aus Daten von externer API

    Hallo,

    mein Kunde hat zwei Seiten, eine für sein Business (läuft mit Contao) und einen Wordpress-Blog, auf dem er Interviews veröffentlicht. Jedes dieser Interviews hat auf dem Blog eine eigene Unterseite.

    Diese Interviews sollen nun automatisiert auf der Contao Seite eingebunden werden. Ich habe ein PHP Script bekommen, das mir die Daten aller Interviews als Array liefert inkl. Link zu den entsprechenden Wordpress Unterseiten bzw. deren Slug. Dieses Script habe ich als Template in die Contao Seite eingebunden unter

    Code:
    domain.tld/interviews
    Ich möchte nun erreichen, dass man über saubere URLs der Contao Seite mit diesen Slugs die einzelnen Interviews abrufen kann. Z.B. soll

    Code:
    domain.tld/interviews/peter-meier
    das Interview mit Peter Meier abrufen.

    Wie kann ich das Routing so einrichten, dass diese Domains im Prinzip zur Seite

    Code:
    domain.tld/interviews
    weiterleiten und das jeweilige Slug (in diesem Beispiel 'peter-meier') dort als Variable im Template zur Verfügung steht? (Im Adressfeld soll weiterhin die URL mit Slug stehen)

    Ich habe versucht, mich in der Developer Dokumentation in das Routing einzuarbeiten. Ist es notwendig, hier quasi eine eigene Erweiterung zu schreiben, um das Routing zu beinflussen, oder wäre meine Anforderung auch simpler umzusetzen?

  2. #2
    Contao-Nutzer Avatar von BennyBorn
    Registriert seit
    10.06.2011.
    Ort
    Edenkoben
    Beiträge
    239
    Partner-ID
    6916

    Standard

    Wenn ich Deine Anforderung richtig verstehe kann man sich eigentlich ums Routing, was m.M.n. nur per Bundle klappt, auch drum herum mogeln.

    1. Auf der Seite mit dem Alias /interviews ein Inhaltselement vom Typ HTML anlegen
    2. Diesem Element ein extra angelegtes Template zuweisen
    3. Innerhalb des Templates dann mit <?php $slug = \Input::get('auto_item'); ?> auf das entsprechende Interview zugreifen
    4. Den Rest des gelieferten Scripts auch in das Template verfrachten


    Somit bleibt alles in Contao und man muss sich nicht mit dem Routing beschäftigen.

    Disclaimer: Ist definitiv keine schöne Lösung aber für quick 'n' dirty sollte es reichen

  3. #3
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    130

    Standard

    Das hat funktioniert, vielen Dank!

    Was bräuchte es denn noch um nicht quick'n'dirty zu sein? Was ich hinzugefügt habe, ist ein Check, ob der abgegriffene URL Parameter überhaupt Sinn macht, also zu einem existierendem Interview gehört. Sonst 404:

    Code:
      $inputSlug = \Input::get('auto_item');
    
      if (!in_array($inputSlug, $slugs) && !$inputSlug == '') 
      {
        throw new \CoreBundle\Exception\PageNotFoundException( 'Page not found: ' . \Environment::get('uri') );
      };

  4. #4
    Contao-Nutzer Avatar von BennyBorn
    Registriert seit
    10.06.2011.
    Ort
    Edenkoben
    Beiträge
    239
    Partner-ID
    6916

    Standard

    Freut mich zu hören das es geklappt hat

    Die "saubere" Lösung wäre ein eigenes Bundle mit entsprechendem Frontend-Modul.
    Dazu sollte sich in den Docs etwas finden lassen (ab 4.9 kann man das einfach in /src packen).

  5. #5
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    130

    Standard

    Alles klar, das mit dem eigenen Bundle kommt dann auch irgendwann. Aber schön, dass es hier ohne geklappt hat

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
  •