Oxid 6.5.4 Hilfe bei Filtern nach Attributen ohne Modul

Hallo zusammen,

ich bin noch nicht so erfahren mit OXID und hoffe, hier Unterstützung zu finden. Ich möchte einen Filter in die widget/product/list.tpleinbauen, um das Produktlisting auf Kategorienseiten (z. B. „Stoffe“) nach Attributen wie Farbe und Muster zu filtern. Leider stoße ich trotz mehrerer Versuche auf Schwierigkeiten und bin mir unsicher, ob ich den richtigen Ansatz verfolge.

Folgendes habe ich bereits umgesetzt:

• Ich habe die entsprechenden Attribute im Backend angelegt.

• Diese Attribute habe ich sowohl den Produkten als auch den Kategorien zugewiesen (wobei ich nicht sicher bin, ob dies für Kategorien überhaupt nötig ist).

Mein Ziel ist es, dass Kunden das Listing auf der Kategorienseite anhand der Attribute (z. B. Farbe und Muster) filtern können. Hat jemand Erfahrung mit einem solchen Vorhaben und könnte mir einen Ansatz oder ein Code-Snippet zur Verfügung stellen?

Ich möchte ungern ein Modul verwenden, es sei denn, es gibt eine relativ günstige Lösung mit einer Lifetime-Lizenz.

Hier ist der aktuelle Code meiner widget/product/list.tpl, in die ich den Filter integrieren möchte:

[{if !$type}]
[{assign var=“type” value=“infogrid”}]
[{/if}]

[{if !$iProductsPerLine}]
[{assign var=“iProductsPerLine” value=4}]
[{/if}]

[{if $type == ‘infogrid’}]
[{assign var=“iProductsPerLine” value=2}]
[{elseif $type == ‘grid’}]
[{assign var=“iProductsPerLine” value=4}]
[{elseif $type == ‘line’}]
[{assign var=“iProductsPerLine” value=1}]
[{/if}]

[{if !$testid }]
[{assign var=testid value=$oView->getViewParameter(‘testid’)}]
[{/if}]
[{if !$listId }]
[{assign var=listId value=$oView->getViewParameter(‘listId’)}]
[{/if}]

[{if $head}] [{if $header == "light"}]
[{$head}]
            [{if $subhead}]
                <small class="subhead">[{$subhead}]</small>
            [{/if}]
        </div>
    [{else}]
        <div class="page-header">
            <h2>
                [{$head}]
                [{if $rsslink}]
                    <a class="rss" id="[{$rssId}]" href="[{$rsslink.link}]" target="_blank">
                        <i class="fa fa-rss"></i>
                    </a>
                [{/if}]
            </h2>

            [{if $subhead}]
                <small class="subhead">[{$subhead}]</small>
            [{/if}]
        </div>
    [{/if}]
[{/if}]

<!-- PHP Include für den Filter -->
<?php include('out/sitzsack/src/php/filter.php'); ?>

[{if $products && !empty($products)}]
    [{assign var="productsCount" value=$products|@count}]
    [{math equation="x / y" x=12 y=$iProductsPerLine assign="iColIdent"}]

    <div class="list-container" id="[{$listId}]">

        [{foreach from=$products item="_product" name="productlist"}]
            [{counter print=false assign="productlistCounter"}]
            [{assign var="testid" value=$listId|cat:"_"|cat:$smarty.foreach.productlist.iteration}]

            [{if $productlistCounter == 1}]
                <div class="row [{$type}]View newItems">
            [{/if}]


            <div class="productData col-xs-12[{if $type != 'line'}] col-sm-6 col-md-[{$iColIdent}][{/if}] productBox">
                <div class="myproductbox">
                    [{oxid_include_widget cl="oxwArticleBox" _parent=$oView->getClassName() nocookie=1 _navurlparams=$oViewConf->getNavUrlParams() iLinkType=$_product->getLinkType() _object=$_product anid=$_product->getId() sWidgetType=product sListType=listitem_$type iIndex=$testid blDisableToCart=$blDisableToCart isVatIncluded=$oView->isVatIncluded() showMainLink=$showMainLink recommid=$recommid owishid=$owishid toBasketFunction=$toBasketFunction removeFunction=$removeFunction altproduct=$altproduct inlist=$_product->isInList() skipESIforUser=1 testid=$testid}]
                </div>
            </div>


            [{if $productlistCounter%$iProductsPerLine == 0 || $productsCount == $productlistCounter}]
                </div>
            [{/if}]

            [{if $productlistCounter%$iProductsPerLine == 0 && $productsCount > $productlistCounter}]
                <div class="row [{$type}]View newItems">
            [{/if}]
        [{/foreach}]

        [{* Counter resetten *}]
        [{counter print=false assign="productlistCounter" start=0}]
    </div>
[{/if}]

Ich bin für jede Hilfe und jeden Hinweis sehr dankbar!

Vielen Dank im Voraus für eure Unterstützung!

Beste Grüße,

Aaron