+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Mit einem Plugin ein Module kurzeitig deaktivieren.

  1. #1
    Neu an Board
    Registriert seit
    05.02.2010
    Beiträge
    3
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Mit einem Plugin ein Module kurzeitig deaktivieren.

    Hallo liebe gemeinde,

    Ein Modul soll nicht gerendert werden zu einer bestimmten Situation. Diese Situation wird von einem System Plugin bestimmt. Ich befinde mich neu in die Joomla API Welt. Ich habe versucht durch debuggen des System heraus zu finden wo der günstige Einstiegspunkt ist. Klar kann ich in dem Modul ohne Ausgabe zurück geben lassen. Aber dann bleibt noch im Quelltext die <div class="modul"> Contender mit Module-Title übrig.
    Von technischen her wäre es schön wenn das Plugin das rendern vom Module verhindert könnte. Leider habe ich keine Möglichkeit gefunden es vorzeitig zu verhindern. Es gibt ein Event, beim System Plugin, "onAfterRender". Hat jemand Ahnung wie ich dort drinen Arbeiten kann? es gibt keine offensichtliche Parameter oder variable. Meine Idee wäre: irgend wo in der Gesammt Ausgabe die Module-Ausgabe im nachhinein zu löschen.

    Ich hoffe ich habe es nicht zu schwer erklärt?!

    by
    Tobi
    Geändert von TumTum (18.02.2011 um 12:23 Uhr) Grund: Text verbessert

  2. #2
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    Was macht zur Zeit das Modul und was das Plugin? Warum soll das (ein) Plugin die Sichtbarkeit des Moduls beeinflussen?

  3. #3
    Neu an Board
    Registriert seit
    05.02.2010
    Beiträge
    3
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Das Modul gibt einen HTML Code aus für bestimmte Personen. Für den Rest der Welt soll dieser Text nicht erscheinen. Klar man könnte es mit CSS weg schalten oder im HTML code die leeren <div><div class="moduletile"></div></div> belassen. Aber von meiner persönliche Ethik her finde ich als schlechte programmierung sowas da stehen zulassen.

    Ja ich dachte mit dem Plugin greife ich noch weiter am Anfang an um überhaupt die renderung der Moduls zu verhindern. Wenn es im Modul auch geht gut, dann ist es noch besser.

  4. #4
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    Es gibt verschiedene Loesungsansaetze:
    Die einfachste: Die Sichtbarkeit des Moduls im Backend auf "registriert" oder hoeher stellen.

    Wenn es sich bei allen Besuchern um Benutzer einer der Gruppen handelt:

    - In der index.php des aktuellen Templates eine Abfrage auf Benutzer Id
    PHP-Code:
    $haystack = Array(23, 42, ...);

    <?php if (in_array(JFactor::getUser()->get('id'), $haystack) && $this->countModules('bazquirk')) : ?>
    <div id="foobar">
      <jdoc:include type="modules" name="bazquirk" style="xhtml" />
    </div>
    <?php endif; ?>
    Ob nun innerhalb der Abfrage der Div-Container ebenso verschwinden soll, muss man schauen, ansonsten ausserhalb setzen. Die Abfrage liesse sich auch auf die Gruppen Id legen: Registriert, Editor etc. (->get('gid')) - Fuer mehr als eine Gruppe das Array anpassen oder die Abfrage auf eine einzelne (g)Id begrenzen.

    Auch wenn der Code nicht getestet ist, sollte es so funktionieren. Der Nachteil hier: man muss per Hand die Liste der Ids erstellen und in den Code sobald neue Ids hinzukommen oder alte verschwinden.

    Deine Möglichkeit mit dem Plugin geht auch, allerdings wuerd ich so nicht vorgehen. Die gerenderte Ausgabe sollte man nur anfassen, wenn es gar nicht anders geht.

    Fast mit Kanonen auf Spatzen aber dennoch mein Favorit ist die letzte Methode, der Adanced Module Manager. Hier kann komfortabel im Backend eingestellt werden, wie sich ein Modul zu verhalten hat. Die Komponente ersetzt den Core-Module Manager, und bindet sich nahtlos ins Backend ein.

    Alle Einstellungen hier aufzuzaehlen waere bloed, darum hier eine Uebersicht:

  5. Erhielt Danksagungen von:


  6. #5
    Hat hier eine Zweitwohnung Avatar von timkeller
    Registriert seit
    15.12.2009
    Ort
    Südschweden(also nördl. der Elbe)
    Beiträge
    1.684
    Bedankte sich
    63
    Erhielt 457 Danksagungen
    in 429 Beiträgen

    Standard

    Wenn es darum geht einzelen Module für bestimmte User sichtbar zu machen oder eben für andere auszublenden benutze doch diese Erweiterung: http://www.nonumber.nl/extensions/advancedmodulemanager

    Diese stellt dir zusätzliche Funktionen in den Parametern zu jedem Modul zur Verfügung eben auch eine gute Benutzersteuerung.

    Helft uns Euer Leben zu retten!
    Besorgt Euch die Rettungskarte für euer Fahrzeug.
    Denn Zeit ist Euer größter Feind!


  7. Erhielt Danksagungen von:


+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein