Grzegorz Jasiński

Grzegorz Jasiński Mdukuo kuko, said
the note

Temat: Problem z Prestashop 1.5.2 Webservices - sortowanie ceną

Cześć, słuchajcie, ma może ktoś z Was na rozruchu instalację Prestashop 1.5.2 z włączonym Webservices żeby to sprawdzić?

Nie wiem, czy coś robię źle (część rzeczy minęła się dokumentacji) czy to jest może błąd Presty, ale Webservices przestaje zwracać mi wyniki produktów gdy tylko włączę sortowanie 'ceną', np:

 http://www.strona.gdzies/api/products/?display=full&sort=[price_ASC] 


Podobnie w przypadku jeszcze paru kilku innych pól z listy dozwolonych. Ktoś się może z tym zetknął? Na swoje potrzeby napisałem łatkę, która dodaje dodatkowy parametr i sobie sortuje ale nurtuje mnie dlaczego to nie działa od ręki :/Grzegorz Jasiński edytował(a) ten post dnia 15.11.12 o godzinie 00:51
Grzegorz Jasiński

Grzegorz Jasiński Mdukuo kuko, said
the note

Temat: Problem z Prestashop 1.5.2 Webservices - sortowanie ceną

Gdyby komuś miało się przydać to to jest moja łatka: aktywuje się ją dołączając parametr '?baziprice=ASC' lub 'baziprice=DESC' do wywołania.

Łatkę należy wkleić do pliku:
/override/classes/webservice/WebserviceRequest.php



public function getFilteredObjectList()
{
$objects = array();
$filters = $this->manageFilters();
$this->resourceConfiguration['retrieveData']['params'][] = $filters['sql_join'];
$this->resourceConfiguration['retrieveData']['params'][] = $filters['sql_filter'];
$this->resourceConfiguration['retrieveData']['params'][] = $filters['sql_sort'];
$this->resourceConfiguration['retrieveData']['params'][] = $filters['sql_limit'];
//list entities

$tmp = new $this->resourceConfiguration['retrieveData']['className']();
$sqlObjects = call_user_func_array(array($tmp, $this->resourceConfiguration['retrieveData']['retrieveMethod']), $this->resourceConfiguration['retrieveData']['params']);

if ($sqlObjects)
{
$comparo = array();

/* THE CHANGE: */

foreach ($sqlObjects as $sqlObject) {

$newProdo = new $this->resourceConfiguration['retrieveData']['className']((int)$sqlObject[$this->resourceConfiguration['fields']['id']['sqlId']]);
$objects[] = $newProdo;
$comparo[] = (float)$newProdo->price;
}
if(!empty($this->urlFragments['baziprice'])) {

if ($this->urlFragments['baziprice']=='DESC')
array_multisort($comparo, SORT_DESC, $objects);
else
array_multisort($comparo, $objects);
}
return $objects;
}
}

Następna dyskusja:

Problem ze sklepem Prestashop




Wyślij zaproszenie do