Hersteller-Filter ohne Attribute

So, nun gibt es Version 1.2.1, aber eigentlich nix wichtiges neues, nur zum “Abrunden” englisch beschrieben und den Code minimal optimiert.

Aber auch interessant könnte [Modul-Link gelöscht] sein, was quasi das Gegenstück ist. Damit kann man dann Herstellerlisten nach Kategorien filtern… :slight_smile:
(Siehe auch diesen Thread)

Tja, was soll ich sagen, aber eine (wohl vorerst letzte) neue Version (1.2.2) habe ich noch anzubieten, da ich eine Sache übersah. :frowning:

Ich hatte ja schon vor längerem im Template eingebaut, nur dann den Filter zu zeigen, wenn mehr als eine Auswahl vorhanden ist, da ich dachte, sonst wäre es ja witzlos. Allerdings ist ja denkbar, dass in einer Kategorie auch Artikel sind, die gar keinen Hersteller eingetragen haben, und dann würde das Filtern evtl. doch wieder Sinn machen, auch mit nur einem Hersteller (man will halt nur dessen Artikel sehen).

Also läuft es jetzt so, dass der Filter auch bei nur einem Hersteller angezeigt wird, aber nur wenn dessen Artikel-Anzahl kleiner als die Gesamtanzahl ist. Somit müssten nun alle Fälle verhindert werden, wo trotz Filter dasselbe Ergebnis käme. :slight_smile:

Da ich teilweise noch mit der Struktur experimentierte, sollte man immer die aktuellste Modulversion komplett (Templates + PHP) installieren, damit es rund läuft.

Beste Grüße
Sascha

So, leider wurde es doch wieder Zeit für ein umfangreicheres Modul-Update 1.3.

In Verbindung mit anderen Attributen ging es nämlich nur, wenn zuerst nach Herstellern gefiltert wurde, aber nicht andersrum. Dann waren nämlich “leere” Hersteller wählbar, sodass anschliessend weder Artikel noch Filter angezeigt wurde.

Auch gibt es es nun einen Reset-Button zum Zurücksetzen aller Filter (siehe auch [Modul-Link gelöscht]), welche auch gelb hinterlegt sind, falls aktiv. So wird es für den Kunden deutlicher wg. der Session-Speicherung und komfortabler zurückzusetzen. Meine beiden Module sind aufeinander angepasst, sodass es immer nur max. einen Reset-Button gibt, egal wieviele Filter eine Kategorie hat. Ist zwar nicht schön mit den Farbwerten im tpl-Code, aber das kann ja jeder selbst anpassen (auch die Buttons)… :slight_smile:

Weiterhin viel Spaß damit!

Finde es klasse, dass du weiterhin Updates veröffentlichst. Werde heute die neue Version einspielen und dir nachher Feedback geben. Beste Grüsse rene

Ja, gerne! Resonanz ist immer willkommen… :slight_smile:

Ich habe übrigens auch endlich mal einen Demo-Shop ins Netz gestellt, in dem alle meine (bisher 3) Module in Aktion begutachtet werden können.
Schaut mal unter [http://oxid.eigenart.org/] (neues Modul).

Coole Sache! Ich werd das mal für die 4.5.1 testen! (Azure) und dann Feedback geben.
Jetzt muss Oxid nur noch schnell eine Lösung schaffen mehreren Artikel das gleiche Attribut zuweisen zu könnnen, ohne mysql crack zu sein…

So, kurze Wiederbelebung dieses Threads, da es eine neue Version 1.4.3 gibt :slight_smile:

Es gab einen Bug, der zwar selten auftrat, aber trotzdem nicht schön war. Wenn man nämlich zusätzlich mit Attributen arbeitete und [B]alle[/B] Artikel in einer Kategorie demselben Hersteller zugeordnet waren, dann passierte folgendes:
Bei ersten Aufruf der Kategorie war alles richtig, d.h. der Herstellerfilter wurde [B]nicht[/B] angezeigt, da nutzlos. Sobald aber ein Attributfilter gesetzt wurde, kam plötzlich doch wieder der Herstellerfilter hinzu, da die Prüfung sich immer auf (ungefilterte) Gesamtanzahl der Artikel bezog.

Das konnte ich beheben, indem ich Prüfung direkt ins SQL verlegt habe und dort die Gesamtanzahl auch mit (oder ohne) Attributfilter auslese.

Das Zusammenspiel beider Filter (Hersteller + Attribute) bleibt aber trotzdem minimal unschön, da der meinige es halt berücksichtigt, ob er (sinnvollerweise) überhaupt angezeigt wird oder nicht, und die Attribute [B]immer[/B] angeboten werden, auch wenn z.b. alle Artikel dasselbe Attribut haben. Dadurch passiert nun im Demoshop folgendes:

  • man geht auf Kategorie Kites (Herstellerfilter wird angezeigt)
  • wählt “Einsatzbereich: Allround” (Herstellerfilter wird immer noch angezeigt)
  • wählt zusätzlich “Lieferumfang: Kite, Backpack, Reparaturset”

Nun wird der Herstellerfilter nicht mehr angezeigt, da es ja nur noch (einen) Artikel gibt, die alle denselben Hersteller haben. Dies ist aber kein Bug mehr, sondern Feature! :stuck_out_tongue:

Edit: Falls [B]zuerst[/B] (zumindest nicht als letztes) jedoch ein Herstellerfilter gesetzt wird, dann bleibt dieses Feld auch immer stehen, da es sonst zu sehr verwirren würde. Man möchte ja evtl. die Auswahl zurücknehmen können.

[QUOTE=mobilemojo;67111]Coole Sache! Ich werd das mal für die 4.5.1 testen! (Azure) und dann Feedback geben.
Jetzt muss Oxid nur noch schnell eine Lösung schaffen mehreren Artikel das gleiche Attribut zuweisen zu könnnen, ohne mysql crack zu sein…[/QUOTE]
Ja, da könnte man eindeutig noch nachbessern, vor allem wenn man oft immer dieselben Attribute-Werte zuweisen muss. Aber eine echte Idee zur Umsetzung hatte ich bisher leider auch noch nicht.

Version 4.5.9 : Pagination funktioniert nicht

Auch in deinem Demoshop:
http://basic.eigenart.org/en/Kiteboarding/Kites/ (Einfach einen Hersteller auswählen)

PS: Danke für deine Arbeit :slight_smile:

Version 4.5.9 : Pagination funktioniert nicht

Stimmt leider, danke fürs Feedback!
Ganz vergessen, die neue _getCategoryCountSelect mit anzupassen… :o

Aber nun sollte es stimmen, im Demo-Shop haut es jedenfalls wieder hin und [hier] kann man die Modulversion 1.4.5 downloaden. Habe es auch gleich mit OXID 4.6.0 abgeglichen, war aber nur eine minimale SQL-Optimierung und sollte abwärtskompatibel bleiben (4.4.3 machte keine Probleme).

Hallo Mitmacher

Ich bin über die Suche auf Dein Modul gestossen, dass genau das ist was ich noch suche…
Ich setze momentan ein abgewandeltes Azure Theme ein und würde gerne den zusätzlichen Filter nach Herstellern einbauen.

Da ja leider die Links in den exchange nicht mehr funktionieren, wäre ich sehr interessiert an einem alternativen Link…

Vielen Dank im Voraus ;o)
Und auch von mir: Vielen Dank für Deine Arbeit!!!

Yep, wird auch Zeit, dass mir mal jmd. in den Ar… tritt und sorry, dass ich so rumtrödel! Ich werde die Tage (evtl. auch heute noch) den neuen eXchange mal ein bisschen füttern, allerdings dauert die Freischaltung dann auch noch etwas. Geht in Kürze aber auf jeden Fall weiter mit meinen Filter-Modulen… :slight_smile:

Das war natürlich nicht als Ar…treter gedacht :wink:

Wie auch immer, Modul ist unterwegs (wird geprüft) und in 1-2 Tagen wieder verfügbar. Den Link werde ich dann hier posten…

So, hier ist er:
[Modul-Link gelöscht]
Ich habe auch mal etwas aufgeräumt im Thread, sodass der gültige Link nur noch im ersten Beitrag gleich am Anfang steht, die alten Links wurden entfernt.

Hallo Mitmacher

Vielen Dank für Deinen zügigen Einsatz!!
Werde das Modul gleich mal einbauen…

Liebe Grüsse aus der Schweiz
David

PS: Hier noch der Zugang zum “noch nicht fertigen” Shop http://shop.bucher-gabele.ch/

Hallo Mitmacher

echt super Module die du gemacht hast. Hab das Tmp-Lösch-Modul, das Attribut schnell entfernen Modul, das nach Kategorie sortieren in der Markenansicht und das nach marken sortieren in der Kategorieansicht installiert.

Nur leider bin ich wahrscheinlich zu dumm um das nach Kategorie sortieren in der Markenansicht-Modul richtig zu installieren bei mir zeigt er nur einen Fehler an (vgl. http://sport-am-schlump.de/Nach-Marke/Arena/). Die anderen Module funktionieren super. Nur das bekomme ich nicht richtig hin :frowning:

Könnte mir jemand sagen woran es liegt das es nicht richtig funktioniert? Würde mich sehr freuen! :slight_smile:

MFG Malte

PS:Bei Bedarf kann ich Codesnippets online stellen wusste nur nich welche ich euch zeigen sollte.

Moin,

habe mal gerade in deinen Quelltext geschaut und dies gefunden:

Smarty error: unable to read resource: “inc/catmanu_options.tpl”

Ich tippe also mal darauf, dass du die vergessen hast zu kopieren (aus dem changed_full/4.6.0-Ordner). Die attributes.tpl hattest du aber bereits. Oder es hilft nochmals den Tmp-Cache zu leeren, musst du mal testen…

Tmp hab ich noch mal geleert. nichts passiert

Da ich ja alle mögliche deiner Module installiert habe. Habe ich mein attributes.tpl wie folgt zusammen kopiert:

[{* START OF EXTENSION SHOW-ATTR *}]
[{if $attributes }]
    <form method="post" action="[{ $oViewConf->getSelfActionLink() }]" name="_filterlist" id="filterList">
    <div class="listFilter js-fnSubmit clear">
        [{ $oViewConf->getHiddenSid() }]
        [{ $oViewConf->getNavFormParams() }]
        <input type="hidden" name="cl" value="[{ $oViewConf->getActiveClassName() }]">
        <input type="hidden" name="tpl" value="[{$oViewConf->getActTplName()}]">
        <input type="hidden" name="fnc" value="executefilter">
        <input type="hidden" name="fname" value="">
        [{oxscript include="js/widgets/oxdropdown.js" priority=10 }]
        [{oxscript add="$('div.dropDown p').oxDropDown();"}]
        [{ assign var="isfiltered" value=0 }]
        [{foreach from=$attributes item=oFilterAttr key=sAttrID name=attr}]
            [{ assign var="usedfilter" value=0 }]
            [{foreach from=$oFilterAttr->getValues() item=sValue}]
                [{ if $oFilterAttr->getActiveValue() == $sValue }]
                    [{ assign var="usedfilter" value=1 }]
                    [{ assign var="isfiltered" value=1 }]
                [{/if}]
            [{/foreach}]
            [{if $usedfilter}]<div style="float:left">[<input type="image" src="[{$oViewConf->getImageUrl()}]logout.png" hspace="1" name="delfilter" value="del" title="[{ oxmultilang ident="LIST_RESETFILTER" }]">] </div>[{/if}]
            <div class="dropDown js-fnSubmit" id="attributeFilter[[{ $sAttrID }]]">
                <p[{if $usedfilter}] style="background-color:#ffffa0"[{/if}]>
                    <label>[{ $oFilterAttr->getTitle() }]: </label>
                    <span>
                        [{if $oFilterAttr->getActiveValue() }]
                            [{ $oFilterAttr->getActiveValue() }]
                        [{else}]
                            [{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]
                        [{/if}]
                    </span>
                </p>
                <input type="hidden" name="attrfilter[[{ $sAttrID }]]" value="[{$oFilterAttr->getActiveValue()}]">
                <ul class="drop FXgradGreyLight shadow">
                    [{if $oFilterAttr->getActiveValue() }]
                        <li><a data-seletion-id="" href="#">[{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]</a></li>
                    [{/if}]
                    [{foreach from=$oFilterAttr->getValues() item=sValue}]
                        <li><a data-seletion-id="[{ $sValue }]" href="#" [{if $oFilterAttr->getActiveValue() == $sValue }]class="selected"[{/if}] >[{ $sValue }]</a></li>
                    [{/foreach}]
                </ul>
            </div>
        [{/foreach}]
    </div>
    </form>
[{/if}]
[{* END OF EXTENSION SHOW-ATTR *}]

[{* START OF EXTENSION SHOW-CAT *}]
[{ if $place ne "bottom" && $oView->getListType()=='manufacturer' && ($oView->getArticleCount() || $catfilter) }]
  [{ assign var="aCatManuList" value=$oView->getCatManuList() }]
  [{ if $oView->getSearchCatTree() && $aCatManuList|@count > 0 }]
    <form method="post" action="[{ $oViewConf->getSelfActionLink() }]" name="_catlist" id="catlist">
    <div class="listFilter js-fnSubmit clear">
        [{ $oViewConf->getHiddenSid() }]
        [{ $oViewConf->getNavFormParams() }]
        <input type="hidden" name="cl" value="[{ $oViewConf->getActiveClassName() }]">
        <input type="hidden" name="tpl" value="[{ $oViewConf->getActTplName() }]">
        <input type="hidden" name="fnc" value="execcatfilter">
        <input type="hidden" name="fname" value="">
        [{oxscript include="js/widgets/oxdropdown.js" priority=10 }]
        [{oxscript add="$('div.dropDown p').oxDropDown();"}]
		[{if $catfilter}]<div style="float:left">[<input type="image" src="[{$oViewConf->getImageUrl()}]logout.png" hspace="1" name="delfilter" value="del" title="[{ oxmultilang ident="LIST_RESETFILTER" }]">] </div>[{/if}]
        <div class="dropDown js-fnSubmit" id="catFilter">
            <p[{if $catfilter}] style="background-color:#ffffa0"[{/if}]>
                <label>[{ oxmultilang ident="MANU_FILTER_CATEGORY" }]: </label>
                <span>
                    [{if $catfilter }]
                        [{ $aCatManuList.$catfilter.title }]
                    [{else}]
                        [{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]
                    [{/if}]
                </span>
            </p>
            <input type="hidden" name="catfilter" value="[{$catfilter}]">
            <ul class="drop FXgradGreyLight shadow">
                [{if $catfilter }]
                    <li><a data-seletion-id="" href="#">[{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]</a></li>
                [{/if}]
                [{include file="inc/catmanu_options.tpl" tree=$oView->getSearchCatTree() sSpacer=""}]
            </ul>
        </div>
    </div>
    </form>
  [{/if}]
[{/if}]
[{* END OF EXTENSION SHOW-CAT *}]

[{* START OF EXTENSION SHOW-MANU *}]
[{ if $place ne "bottom" && $oView->getListType()=='' && ($oView->getArticleCount() || $manufilter) }]
  [{ assign var="aManuCatList" value=$oView->getManuCatList() }]
  [{ if $aManuCatList|@count > 0 }]
    <form method="post" action="[{ $oViewConf->getSelfActionLink() }]" name="_manulist" id="manulist">
    <div class="listFilter js-fnSubmit clear">
        [{ $oViewConf->getHiddenSid() }]
        [{ $oViewConf->getNavFormParams() }]
        <input type="hidden" name="cl" value="[{ $oViewConf->getActiveClassName() }]">
        <input type="hidden" name="tpl" value="[{ $oViewConf->getActTplName() }]">
        <input type="hidden" name="fnc" value="execmanufilter">
        <input type="hidden" name="fname" value="">
        [{oxscript include="js/widgets/oxdropdown.js" priority=10 }]
        [{oxscript add="$('div.dropDown p').oxDropDown();"}]
		[{if $manufilter}]<div style="float:left">[<input type="image" src="[{$oViewConf->getImageUrl()}]logout.png" hspace="1" name="delfilter" value="del" title="[{ oxmultilang ident="LIST_RESETFILTER" }]">] </div>[{/if}]
        <div class="dropDown js-fnSubmit" id="manuFilter">
            <p[{if $manufilter}] style="background-color:#ffffa0"[{/if}]>
                <label>[{ oxmultilang ident="CAT_FILTER_MANUFACTURER" }]: </label>
                <span>
                    [{if $manufilter }]
                        [{ $aManuCatList[$manufilter].oxtitle }]
                    [{else}]
                        [{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]
                    [{/if}]
                </span>
            </p>
            <input type="hidden" name="manufilter" value="[{$manufilter}]">
            <ul class="drop FXgradGreyLight shadow">
                [{if $manufilter }]
                    <li><a data-seletion-id="" href="#">[{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]</a></li>
                [{/if}]
                [{foreach from=$aManuCatList key=sOxid item=aManu}]
                    <li><a data-seletion-id="[{ $sOxid }]" href="#"[{if $manufilter == $sOxid }] class="selected"[{/if}]>[{ $aManu.oxtitle }] ([{ $aManu.artcnt }])</a></li>
                [{/foreach}]
            </ul>
        </div>
    </div>
    </form>
  [{/if}]
[{/if}]
[{* END OF EXTENSION SHOW-MANU *}]

[{if $attributes }]
    <form method="post" action="[{ $oViewConf->getSelfActionLink() }]" name="_filterlist" id="filterList">
    <div class="listFilter js-fnSubmit clear">
        [{ $oViewConf->getHiddenSid() }]
        [{ $oViewConf->getNavFormParams() }]
        <input type="hidden" name="cl" value="[{ $oViewConf->getActiveClassName() }]">
        <input type="hidden" name="tpl" value="[{$oViewConf->getActTplName()}]">
        <input type="hidden" name="fnc" value="executefilter">
        <input type="hidden" name="fname" value="">
        [{oxscript include="js/widgets/oxdropdown.js" priority=10 }]
        [{oxscript add="$('div.dropDown p').oxDropDown();"}]
        [{foreach from=$attributes item=oFilterAttr key=sAttrID name=attr}]
            <div class="dropDown js-fnSubmit" id="attributeFilter[[{ $sAttrID }]]">
                <p>
                    <label>[{ $oFilterAttr->getTitle() }]: </label>
                    <span>
                        [{if $oFilterAttr->getActiveValue() }]
                            [{ $oFilterAttr->getActiveValue() }]
                        [{else}]
                            [{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]
                        [{/if}]
                    </span>
                </p>
                <input type="hidden" name="attrfilter[[{ $sAttrID }]]" value="[{$oFilterAttr->getActiveValue()}]">
                <ul class="drop FXgradGreyLight shadow">
                    [{if $oFilterAttr->getActiveValue() }]
                        <li><a data-seletion-id="" href="#">[{ oxmultilang ident="WIDGET_PRODUCT_ATTRIBUTES_PLEASECHOOSE" }]</a></li>
                    [{/if}]
                    [{foreach from=$oFilterAttr->getValues() item=sValue}]
                        <li><a data-seletion-id="[{ $sValue }]" href="#" [{if $oFilterAttr->getActiveValue() == $sValue }]class="selected"[{/if}] >[{ $sValue }]</a></li>
                    [{/foreach}]
                </ul>
            </div>
        [{/foreach}]
    </div>
    </form>
[{/if}]

Ist daran vllt. was falsch

Ja, du hast jetzt den “attributes”-Teil nun zweimal. Es sind ja im Prinzip 3 Blöcke, und der erste soll eigentlich den dritten (bei dir) ersetzen, bzw. ergänzen. Wenn du da sonst keine weiteren Anpassungen drin hast bisher, kannst du also einfach den letzten Part löschen, dann sollte das schon mal stimmen.

Allerdings ändert das nichts an der Tatsache, dass du halt auch die “tpl/inc/catmanu_options.tpl” brauchst! Weder “inc” noch die Datei gibt es per Default im Azure-Theme…

Was muss in diese Datei rein? Java + Python + HTML kann ich aber bei php scheitere ich.

Servus Sascha,

sag mal, gibts für das Basic Theme 4.6 Dein Modul nun nicht mehr? Hab gerade nen Update Marathon hinter mir, Dein Modul funktioniert immer noch, aber ich würde schon gerne das Aktuelle installieren.