URL für ##view_online_link## modifizieren

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • deerwood
    Contao-Fan
    • 24.11.2009
    • 344

    #1

    URL für ##view_online_link## modifizieren

    Moin,

    aus bestimmten Gründen (Einbettung von Contao in eine andere PHP Software) MUSS ich die URL für "view_online_link" modifizieren. Das könnte ich leicht machen, entweder mit einem preg_replace() oder etwas komplexerem PHP ...

    ... wenn ich denn wüsste, WO ich am besten eingreifen kann. Natürlich möglichst Update-sicher in einem Template, aber notfalls patche ich auch und wiederhole den Patch dann mit jedem Avisota Update.

    Ich gestehe, dass ich durch Avisota und dessen Template-System noch nicht wirklich durchblicke. Da sind ja diverse Frameworks beteiligt und noch kann ich nicht einschätzen, was zu ändern wäre. Im Moment kämen für mich in Frage:
    • die Twig Templates (bevorzugt, weil man die Update-sicher ändern kann)
    • die mailchimp Blueprints (?)
    • die config.php in system/modules/avisota-message-renderer-mailchimp/config/ (?)
    • den Avisota Code an 1 oder mehreren Stellen

    Die URL-Modifikation ist nur nötig, wenn ein Newsletter per Mail endgültig an die Empfänger rausgeht, das wäre dann ein Patch in system/modules/avisota-message/web/send_immediate.php ?

    Ich bin für jeden Tip dankbar.

    LG, Georg
  • tril
    Contao-Urgestein
    • 07.01.2010
    • 2939

    #2
    Hallo deerwood,

    aktuell ist das noch recht schwer, daher hab ich spontan ein Event dafür eingebaut.
    Das Event wird mit dem nächsten Update kommen, aktuell ist es noch nicht veröffentlicht.

    Und so benutzt du das neue Event:

    system/modules/my-module/config/config.php
    PHP-Code:
    <?php
    
    $GLOBALS['TL_EVENT_SUBSCRIBERS'][] = 'MyNamespace\MyEventSubscriber';
    system/modules/my-module/src/MyNamespace/MyEventSubscriber.php
    PHP-Code:
    <?php
    
    use Symfony\Component\EventDispatcher\EventSubscriberInterface;
    use Avisota\Contao\Message\Core\Event\GenerateViewOnlineUrlEvent;
    use Avisota\Contao\Message\Core\MessageEvents;
    
    namespace MyNamespace;
    
    class MyEventSubscriber implements EventSubscriberInterface
    {
      public static function getSubscribedEvents()
      {
        return array(
          MessageEvents::GENERATE_VIEW_ONLINE_URL => 'generateViewOnlineUrl',
        );
      }
    
      public function generateViewOnlineUrl(GenerateViewOnlineUrlEvent $event)
      {
        $message = $event->getMessage();
        $url = $event->getUrl();
    
        // manipulate $url here
    
        $event->setUrl($url);
      }
    }
    Ich hoffe das war halbwegs verständlich.

    MfG Tristan

    Kommentar

    • deerwood
      Contao-Fan
      • 24.11.2009
      • 344

      #3
      Hallo Tristan,

      Zitat von tril Beitrag anzeigen
      Hallo deerwood,

      aktuell ist das noch recht schwer, daher hab ich spontan ein Event dafür eingebaut.
      Das Event wird mit dem nächsten Update kommen, aktuell ist es noch nicht veröffentlicht.

      Und so benutzt du das neue Event:
      Vielen Dank für das Einbauen. Ja, das ist verständlich und eine eigene Mini-Erweiterung dafür ist natürlich viel besser, als irgendwelche Patches.

      Leider hatte ich bei meiner Beschreibung noch nicht erkannt, dass wir auch noch andere Links in den Mails modifizieren müssen, z.B. den Link zur Bestätigung des Newsletter Abbonnements oder zum Abbstellen des Newsletters ... sämtliche Links, die direkt auf das Contao Frontend verweisen.

      Eventuell wäre ein besserer Ansatz, der dann auch für andere Leute nützlich sein könnte, einen Event zu schaffen, der dem Hook "parseFrontendTemplate" ähnelt, halt nur für die Mails. Und für unsere Zwecke würde es auch reichen, wenn dieser Event nur für die komplette Email ausgelöst werden würde, direkt bevor sie versendet wird (nicht für jedes einzelne beteiligte Template).

      Im Event müsste der komplette Mail-Text modifizierbar zur Verfügung stehen und eventuell noch Kontext-Info, also z.B. ob das ein Test-Versand oder ein echter endgültiger Versand ist.

      Oder deckt Dein neu geschaffener Event jetzt schon alle solche URLs ab?

      PS: bezüglich Deines Aufwands hast Du ja schon Kontakt zu rusty

      Danke, LG, Georg

      Kommentar

      • tril
        Contao-Urgestein
        • 07.01.2010
        • 2939

        #4
        Wenn es darum geht, den ganzen NL zu modifizieren, dass geht schon, schau mal wie das bspw. die GoogleAnalytics integration macht

        Kommentar

        Lädt...