AlphaContent, aber ohne AlphaContent ;-)

alphaKürzlich stand ich vor der Aufgabe, in einer Joomlainstallation für verschiedenen Kategorien einen Alpha-Filter bereitstellen zu müssen.

Nun gibt es ja für diesen Zweck die Komponente AlphaContent, aber die bietet mir ganz ehrlich gesagt viel zu viel “Firlefanz” den ich gar nicht brauche, ich will doch nur in ein paar Kategorien einen Filter setzen, sonst nix ;-)

Also, es steht mal wieder “Handarbeit” an, kann ja so schwer nicht sein.

Und in der Tat, es war nicht schwer und erfüllt seinen Zweck so wie gewünscht, siehe Beispiel auf GameTotal.de.

Hinweis: Bei diesem Hack werden Core-Dateien von Joomla verändert. Bitte vorher unbedingt von diesen Dateien eine Sicherungskopie anlegen. Nach jedem Joomla-Update muss, sofern diese Dateien beim Update betroffen sind, die Änderung erneut durchgeführt werden.

Vorbereitung

Damit nicht zu viel in den Core-Dateien geändert werden muss, legen wir uns im Joomla-Root ein Verzeichnis myIncludes an.

In dieses Verzeichniss kommt, wie sollte es anders sein, eine leere index.html.


Als nächstes erstellen wir in diesem Verzeichnis eine Datei für unsere Änderungen, nennen wir sie my_alpha_content.php.

Die Funktionen

myAlphaContentInit( $catid, $mode )

Setzt diverse Parameter und ruft je nach Bedarf ( $mode ) die Funktion der betreffenden Änderung auf.

$catid = die aktuelle Kategorie-Id

$mode = Parameter zur Ausswahl der betr. Änderung:

  • 1 = Änderung in der Model-Datei
  • 2 = Änderung in der tmpl-Datei
  • 
    

    myAlphaContentModel( $alphaState )

    Erweitert in der Model-Datei die WHERE-Klausel der SQL-Abfrage

    $alphaState = aktueller Alpha-Request

    
    

    myAlphaContentHtml( $alphaState )

    Erstellt die HTML-Ausgabe

    $alphaState = aktueller Alpha-Request

    
    

    Das ganze Script anzeigen

    Der Einbau

    Damit unser Script auch funktioniert, benötigen wir einen kleinen medizinischen Eingriff in den Core-Code von Joomla.

    1. die Model-Datei: components/com_content/models/category.php

    Funktion: function _buildContentWhere()

    ca. Zeile: 446

    vor: switch ($state)

    folgendes einfügen:

    
    

    2. Die Template-Datei

    Hier gibt es wiederum 2 Möglichkeiten, entweder es wird direkt die Core-Datei verändert:

    - components/com_content/views/category/tmpl/blog.php

    oder, falls Template-Overriding besteht, die Datei:

    - templates/<aktives-template>/html/com_content/category/blog.php

    folgendes einfügen:

    
    

    Wo dieses (oben oder unten) in die Template-Datei eingefügt wird, kann man sich selbst aussuchen, ich habe mich dazu entschieden dieses direkt nach der folgenden if-Abfrage zu tun, also ganz oben:

    
    

    So, nun noch ein bissle Kosmetik und das Werk ist vollbracht.

    Die Kosmetik

    Damit die Alpha-Leiste auch ein bissle gestylt wird, kann dieses in der Template-Css-Datei noch defiiert werden, z.B.

    
    

    Ich hoffe, der kleine Hack ist für den ein oder anderen nützlich.

    Natürlich gilt wie immer OHNE GEWÄHR ;-)

    Download des Include-Verzeichnis: [download id="1"]

    Foto: Gisbert Heim @ pixelio.de

    Reblog this post [with Zemanta]
    1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (No Ratings Yet)
    Loading ... Loading ...

    Einen Kommentar schreiben