Kategorie-Filter

Hallo zusammen,

wie das Leben es so will, sitze ich gerade vor einem Design/Konzept für einen Onlineshop, bei dem eine Filterung der Artikel nicht nur über einzelne Kategorien funktionieren soll, sondern auch über 2+ Kategorien.

Das heißt der Besucher soll sozusagen eine Kategorie auswählen können, die als Basis-Filter für die Listenansicht gilt.
Hintergrund ist, dass der Kunde verschiedene Produkte für verschiedene Branchen anbietet. Sagen wir es gibt eine Kategorie Spachtel, wo diverse tolle Spachtel drin sind. Nun gibt es aber Spachtel für Maurer und für Restaurateure. Der Maurer wird sich nicht für die Spachtel vom Restaurateur interessieren und umgekehrt. Somit kann er seine Branche auswählen und sieht dann nur noch Produkte, die für ihn relevant sind.

Das ganze habe ich nun so gelöst, dass man eine Kategorie bestimmen kann (per Radio-Button im Backend), die als sgg. Filter-Hauptkategorie definiert werden kann - alle Unterkategorien sollen dann als Filter fungieren. Im FrontEnd fange ich diesen Parameter der Hauptkategorie ab und lasse eine vom Besucher angeklickte Unterkategorien mithilfe eines AJAX-Aufrufs und einem kleinen Funktionsaufruf in der base.tpl in die Session eintragen. Ab da weiß der Shop dann “nur Artikel anzeigen, die in dieser Filter-Kategorie sind”.

Man hätte das sicher auch über Attribute lösen können, allerdings lässt sich das relativ kompliziert pflegen, würde ich meinen. Das mit den Kategorien halte ich für eine recht elegante Lösung. Was meint ihr?

Ich hab das ganze mal bei GitHub gepostet, falls es jemanden interessiert:

Grüße

Gregor

Hallo Gregor,

super, danke!

Wie so oft stellt sich im Laufe der Zeit heraus, dass man irgendwas vergessen hat. So auch hier … die Artikelanzahl in den Artikellisten, die für die Pagination wichtig ist, wurde vom Modul noch nicht korrekt verändert. Da wurde noch immer die Artikelanzahl der Hauptkategorie angezeigt.
… ich habe das Modul aktualisiert.

Das Modul funktioniert (noch) nicht im Rahmen der Suchfunktion.

Demnächst folgt wahrscheinlich ein Preisfilter, der dann ähnlich funktionieren wird.

Grüße

Gregor

Hallo Gregor,

ich möchte dein Modul gerne ausprobieren. Wie kann ich die Filterkategorie an jede Kategorie in categorylist.tpl “dranhängen”? Wenn man die gefilterte Kategorie auswählt, sollen alle Artikel einer Kombination von Kategorien angezeigt werden:

  • Hauptkat1
    – Unterkat1
    — Filterkat1
    — Filterkat2
    — Filterkat3
    Hauptkat2
  • Unterkat2
    — Filterkat1
    — Filterkat2
    — Filterkat3

So soll das Menü aussehen. Filterkat1-3 sind Unterkategorien, einer versteckten Kategorie, die mit dem Radio-Button “Ist Filter-Hauptkategorie” angeklickt wurde.

Wie gebe ich die Filterkat1-3 aus und wie zeige ich bei Klick darauf die korrekten Artikel an?

Viele Grüße,

Catarina.

[QUOTE=cat@home;121839]Hallo Gregor,

ich möchte dein Modul gerne ausprobieren. Wie kann ich die Filterkategorie an jede Kategorie in categorylist.tpl “dranhängen”? Wenn man die gefilterte Kategorie auswählt, sollen alle Artikel einer Kombination von Kategorien angezeigt werden:

  • Hauptkat1
    – Unterkat1
    — Filterkat1
    — Filterkat2
    — Filterkat3
    Hauptkat2
  • Unterkat2
    — Filterkat1
    — Filterkat2
    — Filterkat3

So soll das Menü aussehen. Filterkat1-3 sind Unterkategorien, einer versteckten Kategorie, die mit dem Radio-Button “Ist Filter-Hauptkategorie” angeklickt wurde.

Wie gebe ich die Filterkat1-3 aus und wie zeige ich bei Klick darauf die korrekten Artikel an?

Viele Grüße,

Catarina.[/QUOTE]

Hallo Catarina,

hast Du das Modul schon installiert bekommen?

Das ganze ist natürlich noch nicht sooo 100%ig ausgereift, dass es out of the box einfach so funktioniert.

Du musst die Frontend-Templates noch ein wenig anpassen.

Hier mal ein Auszug aus meiner categorylist.tpl:


[{if $ocat->get_is_filter_parent_category()}]
    [{if $ocat->getSubCats()}]
    	<div class="category-filter-select-box">
        	[{if !$oViewConf->get_filter_category()}]
        		<ul class="category-filter-selected">
            		<li><a href="#" class="current">- keine Auswahl -</a></li>
        		</ul>
        	[{else}]
        		<ul class="category-filter-selected">
	                [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=SubCat}]
	                    [{if $osubcat->getId() == $oViewConf->get_filter_category() }]
                            <li>
                            	<a class="current" href="#">[{$osubcat->oxcategories__oxtitle->value}]</a>
                            </li>
	                    [{/if}]
	                [{/foreach}]
        		</ul>
        	[{/if}]
			<ul class="categoryfilter-dropdown">
                <li><a href="delete" class="delete[{if !$oViewConf->get_filter_category()}] selected-filtercategory-link[{/if}]" rel="delete">- keine Auswahl -</a></li>
                [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=SubCat}]
                    [{if $osubcat->getIsVisible() }]
                        [{* Kategorien *}]
                        [{if $osubcat->getIsVisible() }]
                            <li>
                            	<a class="[{$osubcat->getId()}][{if $oViewConf->get_filter_category() == $osubcat->getId()}] selected-filtercategory-link[{/if}]" href="#" rel="[{$osubcat->getId()}]">[{$osubcat->oxcategories__oxtitle->value}]</a>
                            </li>
                        [{/if}]
                    [{/if}]
                [{/foreach}]
            </ul>
		[{/if}]
	</div><!-- .category-filter-select-box -->
[{/if}]

Mit diesem Teil der categorylist.tpl wird pro Filterkategorie ein Drowdown ausgegeben. (das muss natürlich noch mit JavaScript und CSS zum funktionieren gebracht werden.

Ganz wichtig ist natürlich noch folgendes, um dem Shop überhautp eine Filterkategorie mitzuteilen (base.tpl):


[{if isset($smarty.get.filtercategory)}]
	<div class="setfiltercategory">[{$oViewConf->set_filter_category($smarty.get.filtercategory)}]</div>
[{/if}]

Hier sieht man auch schon, dass Dein Plan mit mehreren Filter-Kategorien so noch nicht ganz funktionieren wird. Grundsätzlich ist das schon im Ansatz so programmiert aber ich hatte es für die spezielle Umsetzung, für die ich das kleine Modul gebaut habe, nicht benötigt, deshalb ist das Filtern über mehrere Kategorien so noch nicht umgesetzt.

Ich hoffe das hilft schon mal ein wenig weiter…

Viele Grüße

Gregor