Automatische Kategoriebilder in XTCommerce

Nicht jeder, der einen XTCommerce – Shop betreibt, findet auch die Zeit für jede Produktkategorie ein Bildchen festzulegen – gerade, wenn man es mit einer recht komplexen Kategoriestruktur zu tun hat.

Davon abgesehen birgt die normale XTC-Kategoriebildfunktion ein weiteres Problem: Die Kategoriebilder müssen für jede Kategorie einzeln hochgeladen werden. Was nun, wenn man ein Produktbild als Kategoriebild verwendet hat und dieses Produkt später evtl. gar nicht mehr im Shop existiert?

Ich bevorzuge daher die automatische Ausgabe von Kategoriebildern. Wo kommen diese Bilder her? Es sind Produktbilder von Produkten, die in dieser Kategorie liegen.

Zwar ist es relativ schwierig XTC um Funktionen wie diese zu erweitern, aber es gibt doch einen recht bequemen Weg: Über Smarty-Plugins.

Die gut dokumentierte und flexible Parsing-Engine bietet die Möglichkeit verschiedene Plug-Ins zu verwenden und damit XTC zu erweitern ohne Core-Dateien hacken zu müßen.

Wie funktioniert das Ganze?

Schritt 1/2 – Plug-In installieren

Das Smarty-Plug-In hier herunterladen, entpacken und in das Verzeichnis [XTC-root directory]/includes/classes/Smarty_2.6.14/plugins/ auf den Server hochladen.

Schritt 2/2 – Template anpassen

Öffnen Sie die Datei

[XTC-WUrzelverzeichnis]/templates/[Ihr Template]/module/categorie_listing/categorie_listing.html

und finden Sie diese Zeile:

{if $module_data.CATEGORIES_IMAGE} <a href=”{$module_data.CATEGORIES_LINK}”><img src=”{$module_data.CATEGORIES_IMAGE}” alt=”{$module_data.CATEGORIES_NAME}” /></a>{/if}

und kommentieren Sie diese aus (Einfach davor {* und danach *} einfügen).

Fügen Sie danach

<a href=”{$module_data.CATEGORIES_LINK}”><img src=”{$module_data.CATEGORIES_LINK|auto_category_image:true}” alt=”" /></a>

ein und speichern Sie die Datei ab.

Fertig

Das Attribut :true steht für automatische Ausgabe. Sie können entscheiden, ob die Anzeige zufällig geschehen soll (:true) oder immer das erste gefundene Bild angezeigt werden soll (:false).

Achtung: Das Skript sucht in der Datenbank rekursiv nach Produktbildern. Sollten Sie also viele verschachtelte Unterkategorien ohne Produkte mit Bildern verwenden, sollten Sie aus Performancegründen auf die Verwendung dieses Skripts verzichten.

Tags: , , ,

15 Antworten zu “Automatische Kategoriebilder in XTCommerce”

  1. Webagentur sagt:

    Ist auch auch möglich, in der Kategorie-Navigation vor jeden Navi-Punkt ein anderes Bild anzuzeigen?

  2. metti sagt:

    Falls du die Kategorie-Navi in der Box meinst, geht das nicht so einfach, weil der Inhalt der Kategorie-Box aus einer PHP-Datei raus erstellt wird.

    Diese PHP-Datei liegt aber auch im Template-Verzeichnis (templates/dein_template/source/inc/xtc_show_category.inc.php). Die kannst du ja entsprechend anpassen und die Funktion aus dem Smarty-Plugin benutzen oder sie halt so basteln, dass die Navi auch über Smarty gerendert wird.

    Wir können dir dabei gerne helfen.
    Cheers

  3. christian sagt:

    feine sache! :-)

    ich möchte aber bei einigen kategorien selber bestimmen, welche bilder da reinkommen und die auch ganz normal über den admin hochladen. die anderen kategorien möchte ich mit den passenden produktbildern aus dem ordner thumbnails befüllen.

    geht das? :-/

    besten gruss

    christian

  4. metti sagt:

    Jo das geht. Kommentiere dazu nicht wie beschrieben diese Zeile:

    {if $module_data.CATEGORIES_IMAGE}
    <a href="{$module_data.CATEGORIES_LINK}" ><img src="{$module_data.CATEGORIES_IMAGE}" alt="{$module_data.CATEGORIES_NAME}" /></a>{/if}

    aus, sondern ändere das {/if} in {else}, füge danach wie beschrieben den neuen Code ein und schreib direkt danach {/if} ein.

    —-

    If you want to set category images for some categorys and let the others be chosen by this script you can manage this like that:

    {if $module_data.CATEGORIES_IMAGE} <a href="{$module_data.CATEGORIES_LINK}" rel="nofollow"><img src="{$module_data.CATEGORIES_IMAGE}" alt="{$module_data.CATEGORIES_NAME}" /></a>
    {else}
    <a href="{$module_data.CATEGORIES_LINK}"><img src="{$module_data.CATEGORIES_LINK|auto_category_image:true}" alt="" /></a>
    {/if}
  5. metti sagt:

    Es gab in dem Skript bisher Probleme mit SEF-URL’s. Dieser Bug ist jetzt gefixt und der Download aktualisiert.

    There was a problem with SEF URL’s. This bug is now fixed and the download upon is updated.

  6. christian sagt:

    klasse skkript. spart jede menge arbeit! danke sagt

    der

    christian

  7. Andreas sagt:

    das Script funktioniert leider nicht bei aktivierung des Moduls Direct URL von http://www.bluegate.at.

    Es werden einfach irgendwelche Bilder aus dem Shop genommen nicht jedoch die aus der korrekten Kategorie.

    Nach der Deaktivierung geht alles einwandfrei.

  8. metti sagt:

    Das liegt daran, dass die Kategorie-ID’s aus den Links ausgelesen werden. Ist die Kategorie-ID, wie durch das Bluegate-SEF-Modul, nicht direkt im Link enthalten, erkennt das Plugin diese natürlich nicht und gibt Bilder für die Kategorie 0 aus.

    In so einem Fall ist die schnellste Lösung, die Kategorie-ID an’s Template zu übergeben. (includes/modules/default.php::118). Und zwar so:

    ‘CATEGORIES_ID’ => ”c_’.$categories['categories_id'].’_’

    Im Template die automatischen Bilder dann so erzeugen:

    {$module_data.CATEGORIES_ID|auto_category_image:true}

  9. johnny sagt:

    hallo metti,
    kann es sein das in der

    ‘CATEGORIES_ID’ => ”c_’.$categories['categories_id'].’_’

    ein Fehler ist, denn ich bekomm immer eine fehlermeldung

    johnny

  10. metti sagt:

    Ja. Die Anführungszeichen hauen nicht hin. Es muss dann so aussehen:

    $categories_content[]=array(
    'CATEGORIES_NAME' => $categories['categories_name'],
    'CATEGORIES_IMAGE' => $image,
    'CATEGORIES_LINK' => xtc_href_link(FILENAME_DEFAULT, $cPath_new),
    'CATEGORIES_DESCRIPTION' => $categories['categories_description'],
    'CATEGORIES_ID' => 'c_'.$categories['categories_id'].'_'
    );
  11. Andreas sagt:

    Hallo,

    wie richtet man das Script ein damit es auch mit den SEO Urls von Shopstat funktioniert?

    Die Links sehen so aus: http://www.domain.de/Kategorie/Unterkategorie:::723_606.html

    Es werden aber immer falsche Bilder verwendet.

    Grüße
    Andreas

  12. Benny sagt:

    Hi,

    nutze bisher keine SEO-URL.

    Habe aber leider immernoch das Problem das die Bilder aus der Cat 0 gezogen werden, obwohl ich in der default.php “‘CATEGORIES_ID’ => ‘c_’.$categories['categories_id'].’_'” nachgepflegt habe und in der listing.html ID statt LINK nutze.

    Gibt es da eventuell etwas woran es noch liegen kann?

    Gruß,
    Benny

  13. Benny sagt:

    Ok Problem gefunden ^^

    FALSCH!!!:
    ‘CATEGORIES_ID’ => ‘c_’.$categories['categories_id'].’_’

    RICHTIG!!!:
    ‘CATEGORIES_ID’ => ‘c’.$categories['categories_id'].’_’

    Bei mir (Jung/Gestalten XTC-Version) funktioniert es dann.

    Gruß Benny

  14. Benny sagt:

    Hier Benny nochmal XD

    Hab da nochmal die Frage, wenn eine Cat aktuell keine Produkte erhält, das dann ein hinterlegtes Bild verwendet wird?

    Oder allgemein gesagt, wenn kein Bild gefunden wird, dann nehme das Hinterlegte Bild?

    Wäre sehr dankbar für eine Antwort.

  15. metti sagt:

    Naja – meistens findet das Skript ja trotzdem Bilder. Du kannst das Bild auf jeden Fall erstmal in eine Smarty-Variable schreiben:

    {assign var=”cimage” value=$module_data.CATEGORIES_IMAGE|auto_category_image:true}

    Dann kannst du sie mit Smarty untersuchen (Mit IF)

    Sollte das nicht ausreichen, bleibt es dir ja unbenommen, die Funktion in modifier.auto_category_image.php deinen Wünschen entsprechend anzupassen.

    Gruß,
    Metti

Hinterlasse eine Antwort