AMR-Plugin und Newsletterversand

Gesperrt
xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

AMR-Plugin und Newsletterversand

Beitrag von xmurrix » Di 6. Jul 2010, 22:53

Hallo zusammen,

bei manchen von euch gab es schon mal Probleme mit dem Newsletterversand, wenn das AMR Plugin installiert und aktiviert ist.

Nach etwas Analyse des Newsletterversands lässt sich das Problem auf die Duplicated-Content Einstellung des AMR-Plugins zurückführen.

Die Newsletterartikel werden vor dem Versand über einen GET-Request geholt. Der Newsletterversand schickt also folgenden GET-Request ab:

Code: Alles auswählen

http://www.hostname.de/cms/front_content.php?client=1&lang=1&idcat={IDCAT}&idart={IDART}&noex=1&send=1
Wobei die {IDCAT} die Kategorieid und {IDART} die Artikelid des Newsletterartikels ist.

Ist nun beim AMR-Plugin die Option "Duplicated-Content verhindern" aktiviert, überprüft das Plugin die ankommende URL mit dem Sollwert.
Es kommt also die URL (ohne Parameter)

Code: Alles auswählen

/cms/front_content.php?client=1&lang=1&idcat={IDCAT}&idart={IDART}&noex=1&send=1
an.

Die URL soll aber

Code: Alles auswählen

/kategoriepfad/artikelname.html
sein.

Das Ist-URL und Soll-URL nicht übereinstimmen und im Plugin ist "Duplicated-Content verhindern" aktiviert, gibt es eine Weiterleitung zur Startseite oder zur Fehlerseite. Somit bekommt der Newsletterversand keinen Newsletterartikel und schickt leere E-Mails raus.

Lösungsvorschlag:
Der Newsletterartikel wird mit dem Parameter noex=1 aufgerufen. Wir können also im AMR-Plugin auf diesen Parameter prüfen und das Plugin anrsprechend anpassen.
In der Datei contenido/plugins/mod_rewrite/classes/class.modrewritecontroller.php kann die Zeile 522 (betrifft AMR Version 0.5.5) von

Code: Alles auswählen

        if (parent::getConfig('startfromroot') == 1 && parent::getConfig('prevent_duplicated_content') == 1) {
in

Code: Alles auswählen

        if (parent::getConfig('startfromroot') == 1 && parent::getConfig('prevent_duplicated_content') == 1 && !isset($_GET['noex'])) {
geändert werden.

Somit findet die Duplicated-Content Überprüfung nur dann statt, wenn kein noex-Parameter per GET existiert. Wird eine Seite mit diesem Parameter aufgerufen, wird die Duplicated-Content Überprüfung umgangen, die Seite wird dann wie gewünscht ausgegeben.

Danach sollen Newsletterartikel auch unter AMR versendet werden können...

Nachtrag (15.07.2010):
Das hier beschriebene Beispiel reicht leider nicht ganz aus, dazu muss doch etwas mehr angepasst werden. Eine korrigierte Version der betroffenen Datei aus der AMR-Version 0.5.5 gibt es in diesem Beitrag als Anhang. Eine vorhandene contenido/plugins/mod_rewrite/classes/class.modrewritecontroller.php ist gegen die gefixte Version zu ersetzen. Bitte verwendet dies nicht gleich auf einer Liveumgebung, die Änderungen müssen noch intensiver getestet werden.

Grüße
xmurrix
Dateianhänge
class.modrewritecontroller.php.zip
Korrigierte Version der class.modrewritecontroller.php
(3.97 KiB) 380-mal heruntergeladen
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: AMR-Plugin und Newsletterversand

Beitrag von Oldperl » Mo 26. Jul 2010, 19:16

:!: Gepinnt. :-)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Gesperrt