Ergebnis 1 bis 6 von 6

Thema: Best practices zum Setzen von Links

  1. #1
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard Best practices zum Setzen von Links

    Hallo zusammen,

    ich habe nochmal eine Frage zu einem best practices Thema.
    Folgende Ausgangssituation: Ich habe eine Contao Erweiterung mit mehreren modules erstellt. In der Seitenstruktur habe ich für jedes der erstellten modules eine Seite angelegt, auf der ich dieses als Artikel-Modul eingefügt habe.

    So weit so gut. Auf den einzelnen Seiten habe ich jetzt ein paar Links zu den anderen angelegten Seiten. Die Links erstelle ich wie folgt:

    In der localconfig.php im system/config Ordner definiere ich die Inserttags global:

    Code:
    define("INSERTTAG_LINK_IMPRESSUM", "{{link_url::3}}");
    In den Modulen erstelle ich die Links für die Templates über:
    Code:
    \FrontendTemplate::replaceInsertTags(INSERTTAG_LINK_IMPRESSUM);
    Grund des Ganzen: Wenn ich meine Erweiterung in eine andere Contao Installation einbinden möchte, muss ich die Links zu den verschiedenen Seiten anpassen, da sich die Seiten-IDs natürlich geändert haben können.

    Ich füge also meine Erweiterung in eine neue Contao Installation ein und passe die IDs in der localconfig.php an. Das funktioniert, ist aber umständlich. Und ich kann mir sehr gut vorstellen, dass es hierfür einen deutlich besseren Weg gibt.

    Hat jemand eine Lösung für dieses Vorgehen bzw. welche Methode verwendet ihr um Links zu Contao Seiten zu setzen ohne bei einem Contao-Wechsel etliche ungültige Links in eurer Erweiterung zu haben?

    Vielen Dank und viele Grüße
    *igi*

  2. #2
    Alter Contao-Hase Avatar von Messa
    Registriert seit
    19.01.2011.
    Ort
    Vorarlberg, Österreich
    Beiträge
    1.423

    Standard

    Du könntest auch in dein Modul ein PageTree Field einbauen und diese ID dann nehmen.
    So kann bei jeder Contao Installation das angepasst werden. Hier sieht du ein Beispiel für eine DCA.
    https://github.com/contao/core/blob/..._form.php#L149

    PHP-Code:
    'impressumlink' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_XXXXXXXX']['impressumlink'],
                
    'exclude'                 => true,
                
    'inputType'               => 'pageTree',
                
    'foreignKey'              => 'tl_page.title',
                
    'eval'                    => array('fieldType'=>'radio''tl_class'=>'clr'),
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'",
                
    'relation'                => array('type'=>'hasOne''load'=>'eager')
            ), 
    Liebe Grüße
    Matthias
    Full Service Agentur - Grafikdesign, Screendesign, Webdesign, Webentwicklung, SEO, Weiterbildung, persönliches Coaching
    http://www.matthiasgmeiner.com

  3. #3
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Was Du mit Erweiterung und Modulen meinst, bin ich mir jetzt nicht so sicher, aber egal.

    Warum setzt Du nicht auf den Namen anstatt der id? Wenn Du in jeder Installation die Namen gleich setzt (alias ist hier gemeint), dann kannst Du einfach nur ein Inserttag setzen:
    PHP-Code:
    {{link_name::impressum}} 

  4. #4
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Hallo,

    also mit "Erweiterungen" meine ich ein Contao Plugin, dass unter "/system/modules/example_stuff/..." eingerichtet wurde und im "Modules" Ordner mehrere Module enthält, die in einem Artikel auf einer jeweils eigenen Seite ausgegeben bzw eingebunden werden.

    Das mit den Inserttags hatte ich auch schon im Kopf. Noch schöner hätte ich es gefunden, wenn ich das Ganze dynamischer halten könnte. So müssen die Seiten natürlich auf allen Contao Instanzen, auf denen das Plugin betrieben wird, gleich heißen. Ist für mich aber auch erstmal okay so.

    @Messa: Du meinst also den Link per DCA in der Datenbank vorhalten und dann von dort aus nutzen? Wäre auch eine Möglichkeit, sollte ich das Prinzip richtig verstanden haben.
    Problem wäre hier, dass ich dann auch hier irgendeine Art Unterscheidung realisieren müsste. Die DCA Komponenten sind bei mir ja alle mit in mein git Repository eingebunden, das dann für jede Contao Instance unterschiedliche Status vorhalten müsste.

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

    Standard

    Zitat Zitat von *igi* Beitrag anzeigen
    In der localconfig.php im system/config Ordner definiere ich die Inserttags global:

    Code:
    define("INSERTTAG_LINK_IMPRESSUM", "{{link_url::3}}");
    Wenn Du bei Deiner Erweiterung auch noch die tl_settings.php erweiterst und dort z.B.
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_settings']['fields']['impressumpage'] = [
        
    'label'      => &$GLOBALS['TL_LANG']['tl_settings']['impressumpage'],
        
    'inputType'  => 'pageTree',
        
    'exclude'    => true,
        
    'search'     => false,
        
    'filter'     => false,
        
    'sorting'    => false,
        
    'eval'       => ['mandatory' => false'multiple'=>false'fieldType'=>'radio''tl_class'=>'w50'],
        
    //'sql'        => "blob NULL",
    ]; 
    einbaust, hast Du eine Möglichkeit geschaffen, Deine Einträge in der localconfig.php im BVackend zu verwalten anstelle sie hart diort rein zu schreiben.

    PHP-Code:
    \Config::get('impressumpage'
    würde in Deinem Fall dann die 3 liefern, die Du verwenden könntest um den Inserttag (oder direkt den Link zur Seite) zu generieren.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hört sich alles etwas seltsam an. Wenn man eine Erweiterung programmiert benutzt man eigentlich keine Inserttags. Wenn man das Ziel deines Vorhabens kennen würde, könnte man vielleicht besser helfen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

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
  •