Jak zrobić aby produkty na stronie wyświetlały się w kolejności dodania do sklepu Ale od najnowszych do najstarszych Chciałbym aby lista zaczynała się od produktów ostatnio dodanych bo numeracja produktów jeśli są przydzielone do różnych kategorii mija się z celem
Edytuj plik db/pl_products.def.php zmień kolejność elementów w tablicy $aFieldsSort tak żeby pierwsze pole to było iProduct. Zapisz wszystkie produkty jeszcze raz i powinno śmigać.
Bo sortowanie jest "w górę". Czyli lista zaczyna się od 1, 2, ... 4. A 4 dodałeś jako ostatni i jest też na końcu. Musisz zrobić "kuku" i przeinaczyć kod tak, aby czwarty produkt (jego "iProduct") miał niższą wartość od produktu pierwszego. Poszukaj jakie masz ograniczenie na liczbę produktów (999 ?) i zrób tak aby iProduct w arrayu FieldsSort miał wartość "999 - iProduct". Wtedy produkt 4 będzie miał mniejszą wartość (995) niż produkt 1 (998) i będzie wyświetlany jako pierwszy na liście.
Według porady Makarona wystarczyło w tablicy aFieldsSort zamienić kolejność żeby sortowanie było w kolejności od najnowszego do najstarszego
Też wydaje mi się to nielogiczne bo skoro sortujemy po iProdukt to chyba będzie się sortować alfabetycznie lub w kolejności dodania czyli efekt ten sam co w orginalnym Quicku
Wiem że mogę sobie przypisać iPosition do każdego produktu ale to nie rozwiązuje problemu lub komplikuje obsługę do tego stopnia że dodatek jest w zasadzie nie tylko bezużyteczny ale też można nim sobie nieźle w głowie namieszać - sprubój to wytłumaczyć komuś w biurze kto będzie sklep już w efekcie obsługiwał
O ile dla stron(kategorii) to świetne rozwiązanie bo kategorie nie są przypisane do różnych kategorii - o tyle dla produktu to bezużyteczne - chyba że jedna kategoria jedne produkty
Weźmy dla przykładu
kategoria WYPIEKI: -----DROBNE WYPIEKI: -----OZDOBNE WYPIEKI -----PIECZYWO NA ZAMÓWIENIE:
i dajmy na to że produktami są: DROŻDZÓWKA CHAŁKA PLECIONA ROGAL PÓŁ METROWY DEKORACYJNY CHLEB BUŁKA
etc
Produkty są w bardzo wielu kategoriach http://salongejsza.pl/?pielegnacja-stop,26 tu zrobiliśmy sortowanie na podstawie iPosition przypisując każdemu produktowi numerek, nawet musiałem powiększyć z 999 na 9999 w ilości wpisanych etc
Wszystko jest jak trzeba - w/g założeń - do momentu jak nie zobaczył tego administrator sklepu docelowy. Zadał proste pytanie A czy nie może być tak po prostu że najnowsze produkty są pierwsze na liście?
Ten CMS - jest bardzo prosty w obsłudze dla administratowa sklepu i to jest jego NAJWIĘKSZA zaleta, dlatego też zdecydowałem się dwa lata temu budować na nim strony i sklepy,
a i przy każdej okazji jak klienta na to stać staram się kupować płatne wersje bo wiem że żeby narzędzie się rozwijało to OpenSolution musi po prostu zarabiać.
boboo - ja nie bardzo kumam jakie "kuku" mam zrobić? myślę jednak że problem nie leży w tablicy tylko w funkcji która ją odczytuje tak by to było w AS
boboo Może zróbmy tak - ja Ci zapłacę za napisanie takiej poprawki do tego narzędzia ale ty zgodzisz się żeby opublikować to na forum żeby to było niejako publiczne dla wszystkich. Bo ten skrypt sklepu powinien się rozwijać
Albo jak wolisz ty napiszesz kod a ja zrobię darmową skórkę na Quicka z takimi gadżetami jak tu ludzie potrzebują i zadają o nie pytania
Jest w QC3.6 taka śliczna funkcja (core/products.php) o nazwie: function sortProducts() z dwoma parametrami: 1. Array do posortowania; 2. String z kluczem. Jeśli się jej przyjrzymy, to widać, że w przypadku nieprzekazania klucza, sortuje ona wedłud ID produktu (i o to chodzi). Czyli mamy już: sortProducts( $aProducts, null ); Dodatkowo widać w tej funkcji, że raz używany jest: $sFunctionSort = 'sort'; a raz: $sFunctionSort = 'rsort'; Ten 'rsort' to nic innego, jak reverse sort. W przypadku QC < 3.6 kopiujemy sobie tę funkcję do core/products.php i wywołujemy ją w funkcji (w tym samym pliku) function listProducts() wpisując nad linijką: $iCount = count( $aProducts ); linijkę: $aProducts = $this->sortProducts( $aProducts, null );
I to cała filozofia. Jako, że jestem nowicjuszem w php, nie wiedziałem (do dziś) o funkcji RSORT i chciałem liczyć do tyłu od "iMaxProducts". A tu prask, gotowy prezencik.
Fatal error: Call to undefined method Products::throwLastProduct() in /home/personal/domains/personaldesign.pl/public_html/templates/themes/default.php on line 4
Zostaw tę funkcję, tak jak jest w oryginale. Ona już jest ustawiona aby array z produktami był sortowany odwrotnie (rsort)
Przed chwilą sprawdziłem na QC3.4 Działa. Wyświetla produkty na stronie (klienta) w kolejności od najwyższego ID-produktu.
Jeszcze raz: wklej tę funkcję z QC3.6 (bez żadnych zmian!!!) na końcu pliku products.php w katalogu /core/ Na końcu pliku: mam na myśli przed!!! tym konstruktem: } ?>
Następnie w funkcji (dalej w tym samym pliku ale wyżej) function listProducts
znajdź linijkę: $iCount = count( $aProducts ); i NAD nią wklej: $aProducts = $this->sortProducts( $aProducts, null );
I to wszystko. W QC3.4 działa i na stronkach produkty są od najnowszego (z najwyższym Id).