Global gibt es das auch für $idmod

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Global gibt es das auch für $idmod

Beitrag von derSteffen » Do 14. Nov 2013, 07:47

Hallo Gemeinde,

ich habe eine Frage. Ich nutze ein Plugin spamspan, mit dem möchte ich jetzt sagen: "Output nicht verändern wenn in Modul-ID xy das vorkommt."
Das klappt soweit bei $idart und $idcat. Jetzt möchte ich das auch beim $idmod machen.

Code: Alles auswählen

global $cfg, $idart, $idcat, $idmod;
Gibt es sowas für $idmod überhaupt oder kann ich das über global gar nicht nutzen?

Ein Beispiel für $idcat wo es funktioniert:

Code: Alles auswählen

function spamspan_skipProtection()
{
        global $cfg, $idart, $idcat, $idmod;
        $excludeIdcats = getEffectiveSetting('pi_spamspan', 'excludeidcats', false);
        if ($excludeIdcats && strlen($excludeIdcats) > 0) {
            $excludeIdcats = preg_replace("/[^0-9,]/", '', $excludeIdcats);
            $excludeIdcats = explode(',', $excludeIdcats);
            if (in_array($idcat, $excludeIdcats)) {
                return true;
            }
        }       
        return false;		
    }
Vielen Dank

MfG Steffen

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

Re: Global gibt es das auch für $idmod

Beitrag von xmurrix » Do 14. Nov 2013, 08:48

Morgen der Steffen,

es gibt keine globale $idmod. Bei jedem Modul, das im Template konfiguriert ist, wird immer eine globale Variable $cCurrentModule gesetzt, die die aktuelle Id des Moduls hat, aber kurz vor dem Modulcode und diese Variable wird immer überschrieben. Es hat immer die Id des aktuell ausgeführten Moduls, am Ende des Templates die Id des zuletzt konfigurierten Moduls. Damit kannst du vermutlich nichts anfangen, da du die Information am Ende brauchst, um die HTML-Ausgabe entsprechend anzupassen.

Es ist möglich, das Modul in der aktuellen Kategorie oder im aktuellen Artikel zu finden, aber es bedarf einiges an Schreibarbeit.

Für dich wäre es einfacher, wenn du in der Modulausgabe einfach eine globale Variable setzen tust, den kannst du dann in deiner Funktion prüfen.

In der Modulausgabe:

Code: Alles auswählen

...
global $spamspanSkipProtection;
$spamspanSkipProtection = true;
...
Dann kannst du in deiner Funktion dies prüfen:

Code: Alles auswählen

function spamspan_skipProtection()
{
        global $cfg, $idart, $idcat, $idmod, $spamspanSkipProtection;
        $excludeIdcats = getEffectiveSetting('pi_spamspan', 'excludeidcats', false);
        if ($excludeIdcats && strlen($excludeIdcats) > 0) {
            $excludeIdcats = preg_replace("/[^0-9,]/", '', $excludeIdcats);
            $excludeIdcats = explode(',', $excludeIdcats);
            if (in_array($idcat, $excludeIdcats)) {
                return true;
            }
        }
        if (isset($spamspanSkipProtection) && true === $spamspanSkipProtection) {
            unset($spamspanSkipProtection);
            return true;
        }
        return false;
    }
}
Wenn die globale Variable $spamspanSkipProtection in einem oder mehreren Modulen auf true gesetzt wird, kannst du darauf in deiner Funktion reagieren.

Gruß
xmurrix
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.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Global gibt es das auch für $idmod

Beitrag von derSteffen » Do 14. Nov 2013, 10:00

Ja ... TOP!

Vielen Dank xmurrix ... das hilft mir total! Vielen Dank ... Ich werde Deine Antwort gleich mal bei dem Plugin (http://forum.contenido.org/viewtopic.php?f=66&t=31229) hier im Forum ergänzen.

Danke nochmals!

MfG Steffen

Gesperrt