Aufgabenstellung

Ziel ist es über eine einfache Pflegeschnittstelle über das Frontend an Modulpositionen Werbebanner schalten zu können. Dabei waren folgende Forderungen umzusetzen:

  • Nach einem Login als Admin o.ä. soll an den Modulpositionen an dem Werbebanner zulässig sind Edit-Symbole erscheinen. Über diese läßt sich die Verwaltung der Werbebannerschaltung ausgehend von der gerade aktuell sichtbare Seite aufrufen.
  • Als Werbebanner sollen
    1. ganz normale Joomla-Beiträge, die jedoch nur einer bestimmten festen Kategorie zugeordnet sind, verwendet werden
    2. einzelne VirtueMart-Produkte ausgewählt werden können.
  • Die Schaltung der Banner soll per Ajax durch einfaches Klicken veranlasst werden, d.h. ein Klick auf einen Banner schaltet diesen auf der aktuellen Seite und ein weiterer Klick deaktiviert die Werbeschaltung auch wieder.
  • Es ist keine Backend-Verwaltung vorgesehen.
  • In Abhängigkeit von der gerade aktuell sichtbaren Seite, auf der die Bannerverwaltung aufgerufen wurde, sollen durch einfaches Klicken auf Icons eine Anzeige wahlweise geschaltet werden können für:
    • auf der gesamten Website (allso quasi überall im Projekt)
    • nur auf der HomePage-Startseite
    • auf allen Seiten der gerade aktiven Komponente (wenn man sich also z.B. auf einer com_virtuemart-Seite befindet, dann auf allen Shopseiten, erkannt an option=com_virtuemart im URL)
    • auf der oder allen Unterseiten des gerade aktiven Menüpunktes (ein Menüpunkt kann durchaus mehrere Unterseiten haben, bsp. VirtueMart hat durchweg nur eine aktiven Menüpunkt innerhalb der Joomla-Mainmenüs, i.d.R. ist es jedoch eine konkrete Seite).
    • Innerhalb einer Shopkategorie (nur relevant wenn man sich auch tatsächl. gerade innerhalb des Shop in einem Kategoriezweig o. einer Produktseite befindet)
  • Während die Anzeigen, die auf J!Beiträgen basieren frei gestaltbar sind, basiert die Anzeige von VM-Produkt-Anzeigen auf vorgefertigten Templates, die mit den Produktdaten agieren.

 



Umsetzung im Überblick

  1. Erstellt wurde ein neues Modul mod_place_advertisement basierend z.T. auf dem Modul mod_placehere. Dieses Modul erfüllt beide Hauptaufgaben: Es zeigt die für die Seite zutreffenden Anzeigen/Banner und es bindet im Frontend einen Verwaltungsdialog ein über den die Anzeige/Bannerschaltungen gesteuert werden können.
  2. Dieses Modul besteht aus eine Satz (Controller, Helper, HelperHTML, XML-Modul-Manifest, CSS und JavaScript sowie Icon-Set)  von zugehörigen Dateien/Scripten (s. unten relevante Dateien).
  3. Sämtliche Konfigurationen die in der Bannerverwaltung vorgenommen werden, werden sofort per jQuery-Ajax-Request (load()) aktualisiert und wirken sich damit sofort mit klick auf die jeweiligen Status-Icons aktivierend oder deaktivierend aus. Als Ajax-Request-Script auf dem Server dient dabei das Script ajaxrequestadmin.php welches auch für andere Aufgaben genutzt wird. Über die Parameter tool und func wird gesteuert welches Controllerscript ausgeführt wird und darin welche Methode.
  4. Die Informationen darüber, welche Anzeige auf welcher Seite angezeigt wird (Triggerereignis) wird in einer neuen Datenbanktabelle #__mdsk_place_adv verwaltet. In helper.php gibt es dafür ein Model-Objekt advRowObj() welches die entsprechenden Datensätze/struktur abbildet. Die Methoden dieser Class verwalten die Datentabelle (add(), remove(), update(), getTriggerList())
  5. Im selben Script sind weitere Methode untergebracht, die die notw. Daten modifizieren, filtern, bereitstellen etc.
  6. Im Verwaltungsdialog gibt es derzeit zwei Listen, eine für die Anzeigen, die aus allen Joomla-Beiträgen der im Modul konfigurierten Kategorie kommen und eine für die vorhanden VM-Produkte. Die Listen mit den Daten werden in helper.php aufgebaut und über helperhtml.php als HTML formatiert (modPlaceAdvertisementHMTL::AdvSelList() und modPlaceAdvertisementHMTL::vmPSelList())
  7. Ein Großteil der Intelligenz bei der Administration der Anzeigen im Verwaltungsdialog wird über ein jQuery-Script vorgenommen.

 

Aufbau der DB-Tabell #__mdsk_place_adv

 

 

Umsetzung im Detail

 

 

 

Relevante Dateien:

Nachfolgend eine zusammenfassende Aufstellung aller relevanten Scripte und Dateien und Ihre Bedeutung.

Datei(en) Pfad Bedeutung/Beschreibung/Herkunft
ajaxrequestadmin.php templates/
TEMPLATE/
html/
index/
theme/
Ajax-Request-Gegenstück - dieses Script wird ausgeführt bei Administration der Bannerschaltungen. Es enthält selbst aber keine umfassende Strukturen, sondern anhand der Get-Parameter tool wird entschieden welches Controller-Script ausgeführt wird.
mod_place_advertisement.php modules/
mod_place_advertisement/
Dieses eigentliche Modul-Script hat zwei wichtige sichtbare Aufgaben:
  1. Es zeigt die für diese Seite zutreffenden Anzeigen an der Modulposition.
  2. Abhängig vom User-Login wird der Button zum Aufruf der Anzeigsverwaltung an der Modulposition angezeigt.

Weiterhin hat es folgende Aufgaben:

  • Die GET-Parameter bereitstellen die die aktuelle Seite beschreiben
  • Die User-Rechte ermitteln
  • über ein jQuery-Script den Dialog zur Bannerverwaltung erzeugen und per Ajax-Funktionen den Status von Anzeigen senden und anzeigen
mod_place_advertisement.xml modules/
mod_place_advertisement/
übliches XML-Manifest-Datei mit den Modul-Konfigurationsparametern
helper.php modules/
mod_place_advertisement/
Helper-Script für das Modul-Hauptscript mit dem Class-Object modPlaceAdvertisementHelper und seinen diversen Methoden sowie den Model-Objekten advRowObj() und defRequestParams(), konzentriert sich hauptsächlich auf die Zugriffe (lesen/schreiben) der #__mdsk_place_adv.
helperhtml.php modules/
mod_place_advertisement/
Zusatzscript für helper.php mit dem Class-Object modPlaceAdvertisementHTML und seinen diversen Methoden zur Ausgabe von HTML-Sequenzen.
admin_place_advertisement.css modules/
mod_place_advertisement/
assets/
css/
Stylesheet-Script zur Formatierung des Administrationsdialoges für die Anzeigenverwaltung
jquery.ajax.place_advertisement.js modules/
mod_place_advertisement/
assets/
scripts/
Ausgelagertes jQuery-Script aus mod_place_advertisement.php.
Ist noch zu prüfen ob sinnvoll als dediziertes Script sinnvoll.
de-DE.mod_place_advertisement.ini languages/
de-DE/
Modul-Sprachdatei am Bsp. Deutsch
#__mdsk_place_adv DB-Tabelle In dieser Tabelle werden alle Anzeigen und Ihre Triggerereignisse verwaltet. 
place_advertisement_checkBtn.gif modules/
mod_place_advertisement/
assets/
images/
Ist eine Sammelgrafik, welche für alle auswählbaren Trigger-Ereignisse per CSS-Eigenschaft background-image/background-position die beiden Zustände visualisiert.