Witam !
W preście 1.3.1 jest problem z poprawną odmianą słowa "produkty" w koszyku. Jak to zmienić, żeby przy ilości produktów w koszyku równej lub większej niż 5 wyświetlało się 5, 6, 7... produktów zamiast 5,6,7 produkty?
Z góry dziękuję za pomoc.
Odmiana rzeczowników odliczebnikowych w j. polskim nie jest taka prosta - przynajmniej z punktu widzenia obcokrajowca. Twórcy presty nie przewidzieli, że form może być więcej niż dwie. Na dodatek założono, że jedna forma jest dla ilości = 1, a druga dla każdej większej od 1. Tak prosto w języku polskim jednak nie jest.
Oto pseudokod realizujący wybór odpowiedniej formy:
function dli2($x,$a,$b,$c) {
if ($x==1) return $a;
elseif (
($x%10>1) && ($x%10<5) &&
!(($x%100>=10) && ($x%100<=21))
) return $b;
return $c;
};
Te kilka linii jest mojego autorstwa, zachęcam do korzystania i rozpowszechniania bez ograniczeń.
Użycie:
dli(1,"strona","strony","stron")
=> strona
dli(2,"kilogram","kilogramy","kilogramów")
=> kilogramy
dli(38,"sztuka","sztuki","sztuk")
=> sztuk
Następnie, w skrócie: powyższą funkcję podpinamy jako funkcję lub modifier Smarty, wywolujemy z szablonu wraz z 3 odmianami rzeczownika (np. {$product->quantity|dli:"sztuka":"sztuki":"sztuk"}), oprocz tego implementujemy to samo w JavaScripcie, gdyz ten aktualizuje ilosc przy zmianie kombinacji atrybutow.
Ilosc zmian niestety jest zbyt duza abym wszystko tu umiescil, ale kazda osoba pracujaca dluzej przy kodzie Presty sobie z tym poradzi.