Jump to content
pawciak

Sortowanie produktów wewnątrz kategorii

Recommended Posts

Hej,

 

używam wersji 1.5.3.1. Chcę w kategorii posortować produkty wedle własnego uznania. WIem, że wcześniej była metoda ze strzałkami/przeciągnij i upuść. Natomiast w tej wersji ps tego nie ma;/ co robię źle? W ustawieniach odpaliłem sortowanie wg wewnętrznego podziału w kategorii.

 

dzięki!

post-520245-0-54901600-1365966809_thumb.png

Share this post


Link to post
Share on other sites

Chciałbym sie podczepić pod temat, czy jest możłiwe ustawienie sortowania dla kategroii randomowo ?

Edited by mentalspot

Share this post


Link to post
Share on other sites

Wszystko robisz dobrze, to błąd prestashop w wersji 1.5.3.1, niestety. polecałbym zaktualizowanie sklepu, o ile to możliwe.

Zawsze można się pomęczyć w bazie danych, ale wiem że to będzie "katorga"...

 

 

Chciałbym sie podczepić pod temat, czy jest możłiwe ustawienie sortowania dla kategroii randomowo ?

jest możliwie ale szczerze mówiąc nie widzę sensu, jak produkty będą wyświetlane "randomowo"

wówczas na kolejnych podstronach możemy widzieć te same produkty które już widzieliśmy, oraz co najważniejsze: wiele produktów może zostać pominiętych.

 

Wyeliminowanie tego problemu wiązało by się z olbrzymimi przeróbkami core, aż odechciewa mi się o tym myśleć ;)

 

 

 

chyba, że chciałbyś np. dla każdej podstrony wymieszać produkty, ale to nie będzie taki zupełny random

Share this post


Link to post
Share on other sites

no to otwieramy kontrolera kategorii:

 

/controllers/front/CategoryController.php

 

i dodajemy shuffle($this->cat_products); do:

if (!$hookExecuted){
$this->context->smarty->assign('categoryNameComplement', '');
$this->nbProducts = $this->category->getProducts(null, null, null, $this->orderBy, $this->orderWay, true);
$this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts"
$this->cat_products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay);
shuffle($this->cat_products);
}
  • Like 1

Share this post


Link to post
Share on other sites

zaznaczam, że kod ten "miesza" produkty tylko w obrębie podstrony kategorii (nie miesza wszystkich produktów z bazy tylko te które zostały pobrane do wyświetlenia)

Share this post


Link to post
Share on other sites

zaznaczam, że kod ten "miesza" produkty tylko w obrębie podstrony kategorii (nie miesza wszystkich produktów z bazy tylko te które zostały pobrane do wyświetlenia)

 

czyli jak jest dużo produktów o tej samej nazwie a innym atrybucie, to to nic zbytnio nie da.

Share this post


Link to post
Share on other sites

zaznaczam, że kod ten "miesza" produkty tylko w obrębie podstrony kategorii (nie miesza wszystkich produktów z bazy tylko te które zostały pobrane do wyświetlenia)

 

Vekia a co jeżeli na stronie mamy 18 produktów z tej samej kategorii z tą samą nazwą, czyli to mieszkanie nie przyda sie w tym wypadku, czy można wymieszać dla całej kategroii i dopiero wtedy wyświetlić wyniki ?

Share this post


Link to post
Share on other sites

Ewentulanie czy ktoś coś takiego robił, lub czy ktoś chciałby się podjąc napisania takiej przeróbki ? I za ile ?

Share this post


Link to post
Share on other sites

wyobraź sobie sytuację:

 

- masz 20 produktów

- na podstronach wyświetlasz 5 produktów

 

Klient wchodzi na stronę kategorii - przed wyświetleniem produktów "mieszamy" produkty w całej kategorii tj. pobieramy losowe z bazy. Następnie klient przechodzi na stronę numer 2 aby przeglądnąć kolejne produkty. Produkty mieszają się i klient widzi ponownie np. 3 te same produkty, które widział wcześniej (wszak system nie wie co wyświetlał i jakie produkty ma pominąć podczas pobierania z bazy danych) 

 

wiele produktów zostało pominiętych i nie zostały wyświetlone. Tak to mieszanie będzie wyglądać w praktyce.

Share this post


Link to post
Share on other sites

ok :)

 

zatem w pliki classes/Category.php

 

jest funkcja: 

/**
	  * Return current category products
	  *
	  * @param integer $id_lang Language ID
	  * @param integer $p Page number
	  * @param integer $n Number of products per page
	  * @param boolean $get_total return the number of results instead of the results themself
	  * @param boolean $active return only active products
	  * @param boolean $random active a random filter for returned products
	  * @param int $random_number_products number of products to return if random is activated
	  * @param boolean $check_access set to false to return all products (even if customer hasn't access)
	  * @return mixed Products or number of products
	  */
	public function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null)

Jak widzisz jest tam zmienna $random która domyslnie jest wyłączona, zatem musimy ją właczyć ;)

 

w tym celu otwieramy plik controllers/front/CategoryController.php

 

linię:

$this->cat_products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay);

zmieniamy na:

$this->cat_products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay,false,true,true);

(dodałem trzy parametry na koncu wywołania funkcji: dalse, true, true

ten ostatni odpowiada za włączenie funkcji mieszania

  • Like 1

Share this post


Link to post
Share on other sites

U mnie znowu jest jakoś na odwrót. W ver 1.5.3 miałem możliwość przesuwania kategorii i produktów wedle uznania, a po aktualizacji do 1.5.6 już niestety takiej opcji nie posiadam. Największym problemem są kategorie, które muszą być rozmieszczone w logicznej kolejności (czyli wg mnie ;)
Czy ktoś spotkał się z podobnym problemem?

Share this post


Link to post
Share on other sites

czy ktoś rozwiązał problem sortowania wewnątrz kategorii według własnego uznania, tak jak było w starszych wersjach presty?

Share this post


Link to post
Share on other sites

Już wiem jak to zrobić. Najpierw trzeba zaznaczyć "Filtruj według kategorii". Następnie wybrać kategorie, potem kliknąć "Pozycje" i można przesuwać strzałkami w górę, dół

Share this post


Link to post
Share on other sites

 

no to otwieramy kontrolera kategorii:

 

/controllers/front/CategoryController.php

 

i dodajemy shuffle($this->cat_products); do:

if (!$hookExecuted){
$this->context->smarty->assign('categoryNameComplement', '');
$this->nbProducts = $this->category->getProducts(null, null, null, $this->orderBy, $this->orderWay, true);
$this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts"
$this->cat_products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay);
shuffle($this->cat_products);
}

dziękuję działa jak powinno :)

Share this post


Link to post
Share on other sites

Witam dodałem te dwie opcje i tak się składa że w nowych kategoriach które tworzyłem po dodaniu tych linijek mają problem ponieważ wyświetlany jest tylko 1 produkt który  po odświeżeniu się zmiania.

 

A miała się zmieniać kolejność wszystkich i miały być widoczne wszystkie produkty a nie tylko jeden.

 

Edit : 

 

ok po usunięciu  ,false,true,true   zaczęło działać .

Edited by mrbino

Share this post


Link to post
Share on other sites

Proszę niech kto mi pomoże z tematem ustawienia wyświetlania produktów w danej kategorii. Chcę sobie nadać własną kolejność wyświetlania produktów niestety nie wiem jak to zrobić bo produkty były różnie dodawane. I mają różne nie następujące po sobie numery id. Proszę o pomoc. 

Share this post


Link to post
Share on other sites

Przesuwanie produktów w kategorii jest łatwe (tak jak powyżej wytłumaczył to marcelluka (post z March 4, 2014). 

Jednak mam inne pytanie: jak posortować produkty według marki. Jak kliknę w producenta to pokazują mi się wszystkie produkty tego producenta. Ok., jednak wyświetlają się one wtedy już alfabetycznie (to sortowanie wg kategorii dotyczy tylko sortowania wg kategorii). 

Jak można posortować produkty danej marki?  W kluczowym producencie akurat na "A" mam same 'Akcesoria' i słabo jak wyskakują one na samej górze. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More