Mengenabhängige Bezeichnung bei Artikelanzahl größer als 1

Wo lässt sich die Formel einbauen (muss irgendwo im CSS Code sein o.ä.), dass ab einer Menge größer als 1 die entsprechend korrekte Bezeichnung im Plural steht in der Auswahlbox bei „Menge“ im Frontend, also zum Beispiel bei Flaschen: "Zahl>1 und Einheit = Flasche, dann schreibe „Flaschen“, sonst schreibe „Flasche“ (analog dazu Box, Beutel usw.). Ansonsten steht dort nämlich: 1 Flasche 2 Flasche 3 Flasche usw. Hat jemand eine Idee, wo ich das einbauen kann? Das muss im Template gemacht werden. Der Wert „Flasche“ (oder was auch immer) wird bei uns in das Feld Verpackungseinheit eingesetzt. Plurale sind hier wie auch im Shopware nicht möglich und eine Kombi wie z.B. „Flasche(n)“ soll nicht dort stehen!

also, eine echte Pluralbildung beherrscht shopware nicht. Aber wenn du das nicht allgemein lösen willst, sondern nur für bestimmte Mengeneinheiten wie Flaschen, dann kannst du doch einfach, wenn es mehr als eine ist ein „en“ anhängen.

[quote=„Kerstin83“]also, eine echte Pluralbildung beherrscht shopware nicht. Aber wenn du das nicht allgemein lösen willst, sondern nur für bestimmte Mengeneinheiten wie Flaschen, dann kannst du doch einfach, wenn es mehr als eine ist ein „en“ anhängen.[/quote] Doch, das kann Shopware. Einfach ein „en“ eintragen in das Feld geht ja deshalb nicht, da es dynamisch generiert wird (die Zahl und die Verpackungseinheit sind 2 Variablen, die aus versch. Quellen - mitunter Formeln - gespeist werden). Ich frage den Support…

ich meinte auch nicht ein Feld, sondern das Template. Dort abfragen, ob eine oder mehr Flaschen und dann ein “en” anhängen oder für andere Pluralbildungen eben anderes. Poste mal, was shopware dazu sagt, würde mich auch interessieren.

[quote=“Kerstin83”]ich meinte auch nicht ein Feld, sondern das Template. Dort abfragen, ob eine oder mehr Flaschen und dann ein “en” anhängen oder für andere Pluralbildungen eben anderes. Poste mal, was shopware dazu sagt, würde mich auch interessieren.[/quote] Ja genau das meinte ich, wie ganz oben beschrieben im Template in etwas so: "Zahl>1 und Einheit = Flasche, dann schreibe “Flaschen”, sonst schreibe “Flasche”. Ich muss nur wissen wo und wie die Formel aussieht;-) Ich poste die Lösung hier, sobald verfügbar…

Template: detail/buy in diesem Bereich: <select id="sQuantity" name="sQuantity"> {section name="i" start=$sArticle.minpurchase loop=$maxQuantity step=$sArticle.purchasesteps} <option value="{$smarty.section.i.index}">{$smarty.section.i.index}{if $sArticle.packunit}{ **hier** } {$sArticle.packunit}{/if}</option> {/section} </select> $sArticle.packunit ist deine Packungseinheit. Dort anstelle von {*hier*} folgendes einfügen {if $sArticle.packunit == "Flasche" && {$smarty.section.i.index} != 1}en{/if} Das ist natürlich sehr speziell und sollte vielleicht ein bisschen allgemeiner gemacht werden. Ausserdem wird das nicht mitgenommen. Im Warenkorb u.ä. müsstest du das auch machen. Der Code ist völlig ungetestet, es wird also vielleicht erst einmal der obligatorische Fehler kommen. Aber im Prinzip müsste es so funktionieren und ist schon mal ein Anfang. Liebe Grüße Kerstin

Das sieht doch gut aus, im Warenkorb wird das eh nicht übergeben, dort steht nur noch die Zahl für die Menge, soweit ich das jetzt gesehen habe. Es geht eigentlich nur um die Auswahlbox beim Artikel selbst. Ich prüfe das mal, aber sollte natürlich auch updatesicher sein. Ich poste auch mal den Vorschlag von Shopware, sobald verfügbar!

Updatesicher ist es, wenn du es in deinem eigenen Template machst und nicht unter _emotion. Soll man ja ohnehin.

[quote=„Kerstin83“]Updatesicher ist es, wenn du es in deinem eigenen Template machst und nicht unter _emotion. Soll man ja ohnehin.[/quote] Ja, das stimmt natürlich. Dann müsste man wohl nur diese if-Abfrage im eigenen Template-Ordner unterbringen, ohne die gesamte „buy“-Datei. Damit habe ich mich leider noch nicht ausgiebig beschäftigt, hast du einen Tipp wie das funktionieren könnte? Die Formel aus deinem Beispiel würde ja nur „Flasche“ in „Flaschen“ umwandeln, sonstige Einheiten bleiben so wie sie benannt wurden, korrekt? Der Shopware Support meint übrigens dazu, dass es keine techn. Frage ist, sondern es sich hierbei um eine Templateanpassung handelt, worüber sich natürlich trefflich streiten lässt, denn wenn ich eine Funktion habe, in der man Verpackungseinheiten eingeben kann und diese dann falsch im Frontend ausgegeben werden, sehe ich das als techn. Unzulänglichkeit an, aber wie dem auch sei;-) Vielen Dank für deine Tipps!

[quote]Die Formel aus deinem Beispiel würde ja nur „Flasche“ in „Flaschen“ umwandeln, sonstige Einheiten bleiben so wie sie benannt wurden, korrekt?[/quote] ja, das stimmt, habe ich ja geschrieben. War das ja auch die Anforderung. :wink: Das ist eher als Ansatz gedacht, damit du weißt, wo das steht und wie man das prinzipiell machen könnte. Das kannst du beliebig erweitern. Für eine generelle Pluralbildung, vielleicht auch im Backend, müsste man ein Plugin schreiben. Gibts vielliecht sogar schon. Aber so viele verschiedene Einheiten hast du wahrscheinlich nicht, so dass der Weg über das Template vielleicht der einfachste ist. Lass mal hören, obs funktioniert. Liebe Grüße Kerstin

Funktioniert nicht, es wird ein „en“ hinter die Zahl geschrieben, nicht hinter „Flasche“:wink: Es ist ja schon einmal die richtige Code-Stelle, jetzt muss noch die Formel angepasst werden…

Der Code könnte viele Fehler haben, weil er nicht getestet ist. Wenn aber Flasche ohne diesen Code ausgegeben wird, dann auch mit ihm. Hast du das überhaupt im Backend eingegeben? Oder du hast ihn vielleicht falsch kopiert. Mir hat die Idee gefallen und ich habe vorhin eine kleine Templateerweiterung geschrieben, mit der man im Backend durch ein Semikolon getrennt Singular und Plural eingeben kann. Damit kann zum Beispiel ein Makler im Backend eingeben: Haus;Häuser und es wird dann im Frontend ausgegeben: 1 Haus, 2 Häuser, 3 Häuser… Ist also doch ganz leicht möglich.

Evtl. habe ich den Code falsch einkopiert. „Flasche“ steht bei uns im Feld Verpackungseinheit. Eingeben kann ich dort aber nichts, da wir im Shopware Backend nichts mehr eingeben, sämtliche Felder der DB werden durch die externe Warenwirtschaft gesteuert und die liefert „Flasche“. Deshalb möchte ich das über das Template abbilden. Ich experimentiere noch mal…

Der Code muss lauten: <option value="{$smarty.section.i.index}">{$smarty.section.i.index}{if $sArticle.packunit} {$sArticle.packunit}{/if}{if $sArticle.packunit == "Flasche" &amp;&amp; {$smarty.section.i.index} != 1}n{/if}</option> Getestet und für gut befunden. Wenn man andere Einheiten anhängen möchte, einfach die „if“-Abfrage wiederholen. Jetzt muss ich das nur noch in ein anderes Verzeichnis packen, damit es updatesicher ist. Danke für deine Mühe!!