Polskie wsparcie PrestaShop

PrestaShop => Polska wersja językowa => Wątek zaczęty przez: Rapajic w Wrzesień 26, 2010, 08:09:23 pm

Tytuł: 5 produktów zamiast 5 produkty
Wiadomość wysłana przez: Rapajic w Wrzesień 26, 2010, 08:09:23 pm
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.  :)

Tytuł: Odp: 5 produktów zamiast 5 produkty
Wiadomość wysłana przez: James w Wrzesień 26, 2010, 09:24:57 pm
To ja sie podczepie  pod pytanie:
Jak dodatkowo zmienic , aby jesli kategoria ma podkategorie to wyswietla sie aktualnie 0 produkty, a chcialbym zeby wyswietlala sie suma wszystkich produktow w kategorii
Tytuł: Odp: 5 produktów zamiast 5 produkty
Wiadomość wysłana przez: lpiob w Październik 13, 2010, 03:31:27 am
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.
Tytuł: Odp: 5 produktów zamiast 5 produkty
Wiadomość wysłana przez: lpiob w Październik 13, 2010, 03:44:41 am
To ja sie podczepie  pod pytanie:
Jak dodatkowo zmienic , aby jesli kategoria ma podkategorie to wyswietla sie aktualnie 0 produkty, a chcialbym zeby wyswietlala sie suma wszystkich produktow w kategorii

To zależy gdzie... Ale tak czy siak należy rozpocząć od utworzenia w klasie Category metody getProductsRecursively, opartej na getProducts, tylko pobierającej rekursywnie, czyli również w podkategoriach.

Później:

Jeśli zmiana ma dotyczyć ilości (i/lub produktów) pokazywanych na stronie kategorii, to należy zmodyfikować category.php:

$nbProducts = $category->getProducts(NULL, NULL, NULL, $orderBy, $orderWay, true,true,false,1);

NA:

$nbProducts = $category->getProductsRecursively(NULL, NULL, NULL, $orderBy, $orderWay, true,true,false,1);

I tak w kilku miejscach.

Nową metodę można wykorzystać teraz prawie wszędzie, np. w takim module kategorii:
(http://www.i64.pl/tmp/kategorie-prest.png)