Guten Tag, wir möchten gern die Hauptkategorien unseres Shops grafisch hervorheben und für jede Hauptkategorie im Menü links eine seperate Grafik als Hintergrund definieren. Zugleich sollen auch die Hauptkategorien immer „ausgeklappt“ sein da es nur eine Ebene Unterkategorien gibt. So ungefähr soll es aussehen: Ist dies möglich, und wenn ja wie? Besten Dank Thomas
Hallo. das ist ist schon möglich. Das Bild bzw. den Bildpfad würde ich in einem Kategorie-Freitext-Feld speichern. Den kompletten Kategoriebaum kannst du dann z.B. in der myCore.php, Funktion sCustomRenderer, mit folgendem Befehl auslesen. foreach ($this-\>sSYSTEM-\>sMODULES["sCategories"]-\>sGetMainCategories() as $category){ $id = $category["id"]; $result[] = array("link"=\>$category["link"],"name"=\>$category["description"],"sub"=\>$this-\>sSYSTEM-\>sMODULES["sCategories"]-\>sGetWholeCategoryTree($id)); } $sRender['variables']["sCategoryTree"] = $result;
In der Navigation machst du dann einen Foreach über die Smarty Variable $sCategoryTree, dort sind die Kategorien wie folgt hinterlegt. Hauptkategorie (Mit Freitext-Feld welches z.B. die HG-Grafik enthält) |_ Unterkategorie… |_ Unterkategorie… Hauptkategorie … Vom Aufbau her also genau das was du benötigst. Du musst natürlich noch einige Änderungen im Template dafür durchführen.
Hallo, vielen Dank für die Hilfe. Aber mit Folgendem komme ich nicht richtig klar: [quote]In der Navigation machst du dann einen Foreach über die Smarty Variable $sCategoryTree, dort sind die Kategorien wie folgt hinterlegt. Hauptkategorie (Mit Freitext-Feld welches z.B. die HG-Grafik enthält)[/quote] Wie muss der Foreach genau aussehen? Und welche Änderungen muss ich noch im Template vornehmen?
Okay, dann hier etwas umfangreicher. Kann dir das aber jetzt nicht als fix und fertige Einbaulösung präsentieren, das wird so oder so angepasst werden müssen - also auch vom Layout her. Code für die myCore.php Einfügen in sCustomRenderer,vor return $sRender foreach ($this-\>sSYSTEM-\>sMODULES["sCategories"]-\>sGetMainCategories() as $category){ $id = $category["id"]; $result[] = array("image"=\>"ac\_attr1",link"=\>$category["link"],"name"=\>$category["description"],"sub"=\>$this-\>sSYSTEM-\>sMODULES["sCategories"]-\>sGetWholeCategoryTree($id)); } $sRender['variables']["sCategoryTree"] = $result;
Du würdest also nun in deinen Hauptkategorien, im Freitext-Feld1 der Kategorien (ac_attr1) den Namen / Pfad des Bildes hinterlegen, welches zusammen mit dem Namen der Hauptkategorie angezeigt werden soll. Im Template würdest du das wie folgt bauen: Datei index\index.tpl Suchen nach: (ca. ab Zeile 285) [code]
{if !\_GET.sCategory OR _GET.sCategory == $sCategoryStart} {* Auf Startseite Hauptkategorien *}
{foreach from=$sMainCategories item=sMainCategory} - {$sMainCategory.1}
{/foreach}
{else} {* Ansonsten Ausgabe der Unterkategorein *}
{foreach from=$sMainCategories item=sMainCategory} - {$sMainCategory.1}
{if $sMainCategory.flag}
{if $sCategories} {* Rekursives Laden der verschiedenen Hierarchie-Ebenen *} {include file=“category/category_maincategories.tpl” sCategories=$sCategories} {/if} {/if} {/foreach}
{/if} [/code] ersetzen durch: [code]
{foreach from=$sCategoryTree item=sMainCategory}- {$sMainCategory.name}
{if $sMainCategory.sub} {foreach from=$sMainCategory.sub item=sSubCategory} - {$sSubCategory.name}
{/foreach} {/if}
{/foreach}
[/code]
Vielen Dank für die freundliche Unterstützung, nun funktioniert es so wie es soll. Es hatte sich aber ein kleiner Fehler in Deinen Code für die myCore.php eingeschlichen. Hab das mal ausgebessert, der korrekte Code lautet: foreach ($this-\>sSYSTEM-\>sMODULES["sCategories"]-\>sGetMainCategories() as $category){ $id = $category["id"]; $result[] = array("image"=\>$category["ac\_attr1"],"link"=\>$category["link"],"name"=\>$category["description"],"sub"=\>$this-\>sSYSTEM-\>sMODUL ES["sCategories"]-\>sGetWholeCategoryTree($id)); } $sRender['variables']["sCategoryTree"] = $result;
Hi, wie binde ich denn hier eine weitere, also dritte Kategorieebene ein? Oder wird tatsächlich der gesamte Tree in $sCategoryTree geschrieben? Falls ja, wie lese ich die dritte Ebene wieder aus? Vielen Dank im Voraus und viele Grüße, Jörg
Hi Jörg, da wird der gesamte Tree reingeschrieben. Normalerweise würde man die Baumerzeugung über eine rekursive Funktion abwickeln, in diesem Fall kannst du aber auch einfach eine dritte Foreach-Schleife integrieren. [code] {foreach from=$sCategoryTree item=sMainCategory}
- [{$sMainCategory.name}]({$sMainCategory.link} "{$sMainCategory.name}") ![]({$sMainCategory.image})
{if $sMainCategory.sub} {foreach from=$sMainCategory.sub item=sSubCategory}- {$sSubCategory.name}{if $sSubCategory.sub}
{foreach from= $sSubCategory.sub item=sSubSubCategory} - {$sSubSubCategory.name}
{/foreach}{/if}
{/foreach} {/if}
{/foreach} [/code]
Hallo, und wie funktioniert das in Shopware 3.5.2?
Hallo, ich muss nochmal nachfragen. Wie bekomme ich folgende Ansicht der Kategorien hin? Also Hauptkategorien haben Hintergrundbild und Kategorien sind immer aufgeklappt. Mehr als 2 Ebenen gibt es nicht. Im Shopware 3.0.x hat es ja funktioniert, wie funktioniert es in Shopware 3.5.x? Vielen Dank Thomas