Frage zur Anzeige der Kategorien links

Hallo, ich möchte auf der Startseite links keinen Kategoriebaum angezeigt bekommen und bei Auswahl einer Kategorie soll nur die ausgewählte Kategorie incl. der Unterkategorien angezeigt werden. Alle anderen sollen ausgeblendet sein. Wie wird das eingestellt, bzw. muss dazu das Template bearbeitet werden? Ich hoffe meine Frage wurde verstanden. Danke Maik

Hallo, das geht ohne Templateanpassungen noch nicht, ich entwickel aber gerade ein Plugin dafür, das kann aber noch etwas dauern. Du kannst dir mal die left.tpl und die categories_left.tpl ansehen, wenn du das ändern möchtest.

Hallo, habe in meinem Testshop die linke Kategorienanzeige so umgestrickt, dass nur die erste Ebene der Unterkategorien der aktiven Hauptkategorie angezeigt wird. Ist es das, was du dir vorgestellt hast? Man könnte auch weitere Unterebenen einblenden.

Hi, ich möchte es so wie z.B. bei http://www.belliatulus.de Wenn ich oben Wohnmöbel anklicke sehe ich links keine Gartenmöbel usw. Maik

Ja, gleiche Funktion. Allerdings, wenn man keine Hauptkategorie auswählt, z.B. auf ‘Home’ klickt, erscheinen nicht die Hauptkategorien. Das müsstest du noch anpassen. Wenn du dich ein wenig in PHP, HTML, Smarty auskennst, kann ich den Code aus dem Plugin und meine Änderungen am Template ja mal posten?

Ich habe zwar nur Grundkentnisse, aber schick ruhig mal. Am Testshop kann ich ja nix kaputt machen. Maik

Funktion in Plugin - teilweise aus anderen Plugins übernommen. Schau mal, ob du was damit anfangen kannst. Tipps und Verbesserungsvorschläge werden dankend angenommen. <?php class Shopware_Plugins_Frontend_PluginName_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { $event = $this->createEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); $this-\>subscribeEvent($event); return true; } public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); if (!$request-\>isDispatched() || $response-\>isException() || $request-\>getModuleName() != 'frontend') { return; } $baseCat = Shopware()-\>System()-\>sLanguageData[Shopware()-\>System()-\>sLanguage]['parentID'] ? Shopware()-\>System()-\>sLanguageData[Shopware()-\>System()-\>sLanguage]['parentID'] : Shopware()-\>System()-\>sCONFIG['sCATEGORYPARENT']; $category = Shopware()-\>System()-\>\_GET['sCategory']; $path = array(); if (!empty($category)) { $path = self::getCatogeryPath($category, $baseCat); } $view = $args-\>getSubject()-\>View(); $view-\>sCategoryPath = $path; } protected static function getCatogeryPath($category, $end) { if ($category == $end) { return array(); } $category = (int) $category; $sql = 'SELECT parent FROM s\_categories WHERE id=?'; $prev = Shopware()-\>Db()-\>fetchOne($sql, array($category)); if (empty($prev) || $category == $prev) { return array($category); } $result = self::getCatogeryPath($prev, $end); $result[] = $category; return $result; } }

Templateerweiterung. [code] {extends file="…/_default/frontend/index/left.tpl"} {block name=‚frontend_index_left_categories‘} {function name=categories level=0} {if $level == 1}

{/if} {foreach from=$categories item=category} {assign var=„trail“ value=$category.id|in_array:$sCategoryPath} {if $level == 1} - [{if $trail} {$category.description} {else}{$category.description}{/if}]({if $category.external}{$category.external}{else}{$category.link|rewrite:$category.description}{/if})
{/if} {if $trail && $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if} {/foreach} {if $level == 1} {/if} {/function} {call name=categories categories=$sCategories} {/block} [/code]

Man müsste noch abfangen, dass ’

’ ausgegeben wird, wenn keine Kategorien angezeigt werden - seh ich gerade. PS.: Fehlerhafte Ausgabe ’
’ beseitigt.

1 Like