Sortierung ändern nicht günstigster Artiekl sonder teuersten anzeigen

Hallo zusammen,

ich habe für meinen Artikel eine Anzahl an unterschiedlichen Varianten erstellt. Nun möchte ich, dass bei Anzeige dieses Artikels in der Vorschau nicht der günstigste Betrag mit “ab 10,99€” angezeigt wird sondern ich möchte dort den höhsten Betrag angezeigt bekommen “bis 19,99€”.

Ich glaube, dass das hier der Code sein müsste der angepasst werden muss.


[{block name="widget_product_listitem_line_price_value"}]
					
<label id="productPrice_[{$testid}]" class="price">                            
<span>
    [{if $product->isRangePrice()}]
          [{ oxmultilang ident="PRICE_FROM" }]
               [{if !$product->isParentNotBuyable() }]
                   [{ $product->getFMinPrice() }]
               [{else}]
                   [{ $product->getFVarMinPrice() }]
               [{/if}]
     [{else}]
            [{if !$product->isParentNotBuyable() }]
                [{ $product->getFPrice() }]
             [{else}]
                 [{ $product->getFVarMinPrice() }]
             [{/if}]
      [{/if}]
 </span> [{ $currency->sign}]
 [{if $oView->isVatIncluded() }]
 [{if !($product->hasMdVariants() || ($oViewConf->showSelectListsInList() && $product->getSelections(1)) || $product->getVariants())}]*[{/if}]
   [{/if}]
 </label>
[{/block}]

Wenn das der korrekte Bereich sein sollte, was muss denn dort geändert werden?

Wenn nicht, kann mir jemand helfen das Problem zu lösen?

Gruß Frank

Hi Frank,
der kleinste Preis einer Variante wird beim Elternartikel direkt in der Artikeltabelle in einem eigenen Feld abgelegt. Das heißt wenn man darauf zugreifen will, hat man die kleinsten Preis direkt am Elternartikel und muss nicht zuerst alle Varianten durchsuchen und den kleinsten Preis rausfinden.
Meines Wissens gibt es das für den höchsten Variantenpreis nicht. So dass man hier selbst anlegen muss und ein Modul schreiben muss.
Arbeitest du auch mit A, B, C Preisen und verwendest du nur das normale Preis-Feld?
Wenn du nur das normale Preisfeld verwendest, kann man im Modul sogar per SQL den Preis abfragen. Ansonsten müsste man sich von jeder Variante den Preis ziehen und dann vergleichen. Die SQL-Variante ist in der Performance um einiges besser, kann aber von der Logik nicht so viel.

Grüße
Fabian

Hallo Fabian,

ja ich nutze einfach nur je Variante einen Preis, also ohne A,B,C! Wie gesagt wäre es super, wenn ich das auf einen unkomplizierten Weg ändern könnte. Gibt es dazu einen bestehenden SQL-Code und wenn ja, wo muss ich diesen dann einbinden?

Gruß Frank

Hat nicht jemand einen Lösungsweg für mich? :slight_smile:

Hi Frank,
Ganz so einfach ist es nicht. Du musst hierfür ein Modul schreiben, dass dir per SQL den höchsten Preis ausliest.
Hast du denn schon mal nen Modul geschrieben?
Wenn nicht dann solltest du dir als erstes das Tutorial von OXID anschauen. Bei fragen kannst dich ja dann wieder melden.

Grüße
Fabian

Hallo Fabian,

also nein, ich habe so etwas noch nicht geschrieben!:o
Anscheinend habe ich mir das zu einfach vorgestellt, denn ich dachte, wenn ich zu einem Artikel 3 Varianten angegeben habe (1,99 € , 2,99 € , 3,99 € ) und das System mir immer automatisch den geringsten Betrag anzeigt also 1,99 € das ich irgendwo nur etwas anstatt “min” auf “max” in der Abfrage umstellen müsste, damit ich dann mein Ergebnis erhalte. Ist dem nicht so? Evtl. hatte ich mich falsch ausgedrückt!?

Kann es kaum glauben, dass ich der Erste sein sollte der nicht den geringsten sondern den höhsten Betrag angezeigt bekommen möchte. Leider konnte ich jedoch noch nichts passendes im Forum finden. Evtl. hat jemand auch einen Tipp wie ich das Problem lösen kann?

Gruß Frank

Hi,

seit Version 4.7 gibt es eine neue Spalte namens “oxvarmaxprice”.

Darin wird, wie der Name schon sagt, automatisch der höchste Variantenpreis eingetragen.

Ich denke, das vereinfacht dein Vorhaben gewaltig. :wink:

Du könntest z. B. einen OXID Freelancer engagieren, der das dann für dich programmiert. Wenn du natürlich Zeit und Muße hast, kannst du dich selbst dran setzen.

Danke für die Tipps (besonders nickname)! Was müsste ich denn dann an dem entsprechenden Block ändern? Hier der dazugehörige Block:


[{block name="details_productmain_price"}]
                    [{oxhasrights ident="SHOWARTICLEPRICE"}]
                        [{if $oDetailsProduct->getFPrice()}]
                            <label id="productPrice" class="price">
                                [{assign var="sFrom" value=""}]
                                [{assign var="fPrice" value=$oDetailsProduct->getFPrice()}]
                                [{if $oDetailsProduct->isParentNotBuyable() }]
                                    [{assign var="fPrice" value=$oDetailsProduct->getFVarMinPrice()}]
                                    [{if $oDetailsProduct->isRangePrice() }]
                                        [{assign var="sFrom" value="PRICE_FROM"|oxmultilangassign}]
                                    [{/if}]
                                [{/if}]
                                <strong >
                                    <span>[{$sFrom}] [{$fPrice}]</span>
                                    <span>[{ $currency->sign}]</span>
                                    [{if $oView->isVatIncluded() }]
                                    <span>*</>
                                    [{/if}]
                                </strong>
                            </label>
                        [{/if}]
                        [{oxscript include="js/widgets/oxamountpriceselect.js" priority=10 }]
                        [{if $oDetailsProduct->loadAmountPriceInfo()}]
                            [{include file="page/details/inc/priceinfo.tpl"}]
                        [{/if}]
                    [{/oxhasrights}]
                [{/block}]

[QUOTE=Franky73;115503]…anstatt “min” auf “max” in der Abfrage umstellen…[/QUOTE]

(wenns einen “varmaxprice” gibt, dann wahrscheinlich auch einen “varminprice”)

Ich habe das schon mal gemacht ohne Erfolg! Wo muss ich denn von “min” auf “max” umstellen? Hier?


 [{assign var="fPrice" value=$oDetailsProduct->getFVarMinPrice()}]

Sorry bin halt ein Newbie :slight_smile:

Sorry, aber kann mir denn neimand hier bei diesem Problem helfen? Ich kann das kaum glauben!?
Würde mich wirklich über einen entscheidenden Tipp freuen!

Die entscheidenden Tipps gabs schon von nickname und ChristophH.
Was Du meinst, hört sich eher nach “eine fertige kostenlose Lösung, die ich einfach kopieren und bei mir einfügen kann” an.

Hättest Du die Tipps befolgt, müsstest Du nur die erwähnte Spalte “oxvarmaxprice” aus der Datenbank abfragen.
Hättest Du Keine Ahnung, wie das geht, könntest Du die Forensuche benutzen.
Hättest Du ohne lange nachzudenken z.B: “Datenbank Spalte anzeigen” eingegeben und abgeschickt,
hätte die Forensuche auf Platz 1 der Suchergebnisse ein Thema mit dem Namen “Zugriff auf neue Datenbank-Spalte in oxarticles” angezeigt.
Dann hättest Du draufdrücken können.
Dann hättest Du die Lösung sehen können.
Dann hättest Du die angegebene Zeile Code kopieren und bei sich einfügen können.
Dann hättest Du die Änderung speichern können.
Dann hättest Du die Seite neuladen können.
Und dann hättest Du Dich gewundert, was man alles mit Hilfe der Forensuche erreichen könnte.

Hallo Vanilla Thunder,

ok, dann werde ich mal den ganzen “dann” folgen und hoffen das ich das hinbekomme! Danke!

So und für alle anderen Newbies hier jetzt mal der Code aus dem soooo ein Geheimnis gemacht wurde:

[{ $product->oxarticles__oxvarmaxprice->value }]

:slight_smile:

Danke - der nächste freut sich!

Und nimms “uns” nicht übel, denn jetzt hast Du wieder etwas gelernt mit unserer Hilfe zur Selbsthilfe.

hallo,
leider freut sich der nächste nicht wirklich, weil einfach mal die Hälfte fehlt :frowning: Bin ein Oxid Neuling und beschäftige mich mit diesem Problem jetzt schon mehrere Tage, leider ohne Erfolg… was ich aus diesen Beiträgen nicht rauslesen kann, in welcher Datei wird dieser Code eingefügt? Ich benutze die CE 4.8.1/5.1.1 und nach fünf mal durschauen der Templatedateien finde ich keine product.tpl (wie bei dem Tipp von vanilla thunder beschrieben.) Zudem wäre ich auch dankbar für einen Tipp wo man diesen Code dann einfügt. Ist einfach statt oxvarminprice mit oxvarmaxprice zu ersetzen oder? Welche Dateien ich bis jetzt bei mir alles gefunden (und mehrfach durchgeschaut hab):
productmain.tpl, fullproductinfo.tpl, oxamountpriceselect.js und price.tpl. Ach ja die boxproduct.tpl und die boxproducts.tpl hab ich mir auch schon angeschaut.
am vielversprechensten sieht ja die productmain.tpl aus
da steht von Zeile 237-273 das hier:
[{block name=“details_productmain_tprice”}]
[{oxhasrights ident=“SHOWARTICLEPRICE”}]
[{if $oDetailsProduct->getTPrice()}]
<p class=“oldPrice”>
<strong>[{oxmultilang ident=“REDUCED_FROM_2”}] <del>[{oxprice price=$oDetailsProduct->getTPrice() currency=$currency}]</del></strong>
</p>
[{/if}]
[{/oxhasrights}]
[{/block}]

        &lt;div class="tobasketFunction clear"&gt;
            [{block name="details_productmain_price"}]
                [{oxhasrights ident="SHOWARTICLEPRICE"}]
                    [{if $oDetailsProduct-&gt;getPrice()}]
                        &lt;label id="productPrice" class="price"&gt;
                            [{assign var="sFrom" value=""}]
                            [{assign var="oPrice" value=$oDetailsProduct-&gt;getPrice()}]
                            [{if $oDetailsProduct-&gt;isParentNotBuyable() }]
                                [{assign var="oPrice" value=$oDetailsProduct-&gt;getVarMinPrice()}]
                                [{if $oDetailsProduct-&gt;isRangePrice() }]
                                    [{assign var="sFrom" value="PRICE_FROM"|oxmultilangassign}]
                                [{/if}]
                            [{/if}]
                            &lt;strong &gt;
                                &lt;span&gt;[{$sFrom}] [{oxprice price=$oPrice currency=$currency}]&lt;/span&gt;
                                [{if $oView-&gt;isVatIncluded() }]
                                &lt;span&gt;*&lt;/span&gt;
                                [{/if}]
                            &lt;/strong&gt;
                        &lt;/label&gt;
                    [{/if}]
                    [{oxscript include="js/widgets/oxamountpriceselect.js" priority=10 }]
                    [{if $oDetailsProduct-&gt;loadAmountPriceInfo()}]
                        [{include file="page/details/inc/priceinfo.tpl"}]
                    [{/if}]
                [{/oxhasrights}]
            [{/block}]

ist das was ich ändern muss dort dabei? Zumindest ist das die einzige Datei wo ich überhaupt was von VarMinPrice finden konnte… oder lieg ich völlig daneben? Wäre wirklch für jeden Tipp dankbar…

Abgesehen davon, dass ich in dem Tipp von Vanilla Thunder nichts von product.tpl sehe, musst Du das Template anpassen, in welchem die von Dir gesuchte Ausgabe steht…
Wie man das Template herausfindet, steht in diversen Dokus sowie auch in vielen Forenbeiträgen:
In der config.inc.php muss debug=8 gesetzt werden, dann /tmp geleert und der Shop neu aufgerufen werden. Dann wird überall angezeigt, welches Template gerade ausgegeben wird.
Wenn Du mehr dazu wissen möchtest, such einmal nach “Debug-Modus”.
Weiterhin muss man manchmal auch einfach etwas ausprobieren, sprich einfach einmal die Stelle, die Du gefunden hast, ändern, /tmp leeren und nachschauen, ob sich an der Ausgabe etwas geändert hat.

so hallo
schonmal danke für die Tipps, leider bin ich damit auch nicht wirklich weiter. Die erwähnte product.tpl ist hier http://forum.oxid-esales.com/showthread.php?t=14091&page=2 als Lösung genannt. solch eine datei finde ich bei mir aber nirgends. kann es sein das das mit der version 4.8.1/5.1.1 zu tun hat? heißt sie jetzt vielleicht nur anders? Andererseits geht es dort auch um zusätzliche info anzeigen. bei mir geht es ja darum den max preis statt den min. preis in der Artikelvorschau zu zeigen. Hab mir mittlerweile schon einiges was oxid angeht aneignen können, aber aus dem oben genannten post meine problemlösung abzuleiten gestaltet sich für meine kenntnisse so gut wie unmöglich… was mir auch immer noch unklar ist, wird diese codezeile zusätzlich irgendwo eingefügt? evtl. anstatt einer anderen? oder soll einfach nur das oxvarminprice mit oxvarmaxprice ersetzt werden? Das mit dem Debug modus hab ich jetzt gelesen das es ab einer bestimmten version nicht mehr geht. Brauchte es aber auch nicht weil ich immer hier schau
http://oxid-tpl-debug.stahlwarenhaus-hebsacker.de/azure/Kiteboarding/Kites/Kite-CORE-GTS.html
habe mir nun alle erdenklichen templates angeschaut jedoch ohne erfolg. auch mit firebug komm ich zu keinem ergebnis. Hat vielleicht noch jemand einen entscheidenden Tipp für mich? weiß nicht was ich noch probieren sollte…

Eine fertige Lösung kann ich Dir leider nicht liefern. poductmain.tpl könnte aber korrekt sein.
Ich würde aber genau das ausprobieren: getVarMinPrice durch getVarMaxPrice ersetzen ( und die dazugehörige Sprachvariable (statt “ab” muss dann “bis” erscheinen).