Polskie wsparcie PrestaShop

PrestaShop => Moduły => Wątek zaczęty przez: tarentil w Czerwiec 02, 2009, 01:42:27 pm

Tytuł: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 02, 2009, 01:42:27 pm
Bardzo mnie denerwował brak wyszukiwarki opartej na atrybutach, więc sobie zacząłem robić własną. Jest jeszcze nieco niedopracowana, bo nie znam się na szablonach smarty, php znam odlegle a i framework prestashop jest mi obcy, ale coś tam udało mi się stworzyć.

Uwaga - ten moduł wyszukuje po jednym atrybucie, choć wyświetla do wyboru wszystkie grupy atrybutów. Dopiero planuję zrobić wyszukiwanie po wielu atrybutach.

Teraz konkretnie:
~ Moduł jest obecnie przypinany tylko do lewej kolumny.
~ Moduł publikuję za zasadzie Open-Source, więc pomóżcie mi go rozwijać, jesli chcecie i potraficie.
~ Moduł do poprawnego działania wymaga modyfikacji plików Prestashopu LUB przekopiowania gotowych plików ode mnie (są to zmodyfikowane pliki z PrestaShop PL BETA rewizja 118). Opis niżej.
~ Moduł jest napisany na szybko i dlatego warstwa prezentacji nie jest rozdzielona od warstwy kodu. Przykro mi, ale nie znam na tyle smarty, aby dać sobię radę z pewnymi rzeczami. Liczę na pomoc.
~ Moduł obecnie obsługuje dwa języki: angielski i polski.
~ Znany mi bug: przy wyświetlaniu wyników content ma tytuł Szukaj 'Array'. Popracuję nad tym w wolnej chwili - trzeba zmienić w szablonie, w pliku 'search.tpl', aby poprawnie obsługiwał zmienną 'id_attribute'.

Screenshot:

(http://dervish.wit.edu.pl/~kowalsg0/blocksearchbyattribute01.png)

A teraz odnośnie niezbędnych modyfikacji w plikach. Nie znam frameworku PrestaShop i zrobiłem to tak, że zmodyfikowałem plik "search.php" w folderze głównym oraz "/classes/Search.php". Zmiany są następujące:

W "search.php" należy nad komentarzem /* Tags */ dodać następujący kod:

/* Attribute IDs */
elseif ($attribute_id = Tools::getValue('attribute_id'))
{
$search = new Search();
$nbProducts = intval($search->attribute_id(intval($cookie->id_lang), $attribute_id, true));
include(dirname(__FILE__).'/pagination.php');
$smarty->assign(array(
'attribute_id' => $attribute_id,
'products' => $search->attribute_id(intval($cookie->id_lang), $attribute_id, false, $p, $n),
'nbProducts' => $nbProducts));
}

W "/classes/Search.php" trzeba zaś dodać nową funkcję do klasy:

/**
* @param integer $id_lang Language id for results
* @param string $attribute_id Attribute ID to find
* @param boolean $count Only to get number of results (optional)
* @param string $pageNumber Current page (optional)
* @param string $pageSize Results per page (optional)
* @return array Attribute ID search results
*/
public function attribute_id($id_lang, $attribute_id, $count = false, $pageNumber = 0, $pageSize = 10)
{
global $link;

if (!is_numeric($pageNumber) OR !is_numeric($pageSize)
OR !Validate::isBool($count) OR !Validate::isValidSearch($tag))
die(Tools::displayError());

if ($pageNumber < 0) $pageNumber = 0;
if ($pageSize < 1) $pageSize = 10;

/* Only if we need total results number */
if ($count)
{
$result = Db::getInstance()->getRow('
SELECT
COUNT(DISTINCT p.`id_product`) AS nb
FROM
`'._DB_PREFIX_.'product` AS p,
`'._DB_PREFIX_.'product_attribute` AS ppa,
`'._DB_PREFIX_.'product_attribute_combination` AS ppac
WHERE
ppac.`id_attribute` = '.$attribute_id.' AND
ppa.`id_product_attribute` = ppac.`id_product_attribute` AND
p.`id_product` = ppa.`id_product` AND
p.`active` = 1');
return isset($result['nb']) ? $result['nb'] : 0;
}

$result = Db::getInstance()->ExecuteS('
SELECT
p.*,
pl.`description_short`,
pl.`link_rewrite`,
pl.`name`,
tax.`rate`,
i.`id_image`,
il.`legend`
FROM
`'._DB_PREFIX_.'product` AS p,
`'._DB_PREFIX_.'product_attribute` AS ppa,
`'._DB_PREFIX_.'product_attribute_combination` AS ppac,
`'._DB_PREFIX_.'product_lang` AS pl,
`'._DB_PREFIX_.'image` AS i,
`'._DB_PREFIX_.'image_lang` AS il,
`'._DB_PREFIX_.'tax` as tax
WHERE
ppac.`id_attribute` = '.$attribute_id.' AND
ppa.`id_product_attribute` = ppac.`id_product_attribute` AND
p.`id_product` = ppa.`id_product` AND
p.`id_product` = pl.`id_product` AND
pl.`id_lang` = '.intval($id_lang).' AND
i.`id_product` = p.`id_product` AND
i.`cover` = 1 AND
p.`id_tax` = tax.`id_tax` AND
p.`active` = 1
GROUP BY
p.`id_product`');

if (!$result) return false;

return Product::getProductsProperties($id_lang, $result);
}

Po tych zmianach wywołanie takiego linku http://mojsklep.pl/search.php?id_atrybutu=13 da w wyniku wypis wszystkich produktów zawierających atrybut o ID 13.

Swoją drogą, można łatwo dostosować powyższy kod do wyszukiwania nie po id atrybutu ale bo jego nazwie.

Przetestujcie moduł - u mnie działa wyśmienicie.

W załączeniu do tego posta jest właśnie paczka z modułem oraz ze zmodyfikowanymi plikami do PrestaShop PL BETA rewizja 118 i instrukcja po angielsku.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 03, 2009, 02:40:30 pm
Aktualizacja! Po godzinach spędzonych nad bazą danych udało mi się zmodyfikować mój moduł, aby wyszukiwał po wielu atrybutach!

Wygląda to tak:
(http://dervish.wit.edu.pl/~kowalsg0/blocksearchbyattribute02.png)

Wybieramy sobie wartości atrybutów i klikamy Szukaj. :-)

Wszystkie uwagi tyczące się poprzedniej wersji (opisane w mojej pierwszej wypowiedzi w tym wątku) tyczą się też i tej wersji, czyli jest wiele do poprawienia i przydałaby mi się pomoc kogoś zdolnego.

Dodatkowe uwagi:
~ Zmianie ulegają trzy pliki związane bezpośrednio z PrestaShopem, w tym jeden plik należący do jądra i związany z komunikacją z bazą danych. Prestashop ma czarną listę słów, których nie wolno użyć w wyrażeniach SQL i owa lista jest zmorą ludzi tworzących moduły, o czym można poczytać na oficjalnym forum Prestashop. Główny problem to umieszczenie na czarnej liście dyrektywy UNION. Aby mój moduł mógł działać, owa dyrektywa musi być dopuszczona do użytku, albowiem bez niej realizacja pewnych zapytań nie jest możliwa na bazie MySQL, która nie obsługuje dyrektywy INTERSECT.
~ Jeśli aktualizujecie wersję poprzednią mojego modułu do aktualnej, to musicie wprowadzić poprawki w KAŻDYM z plików.
~ Znany bug, który zostanie poprawiony w najbliższym czasie: wynikiem wyszukiwania jest zawsze OBLICZONY na 10 elementów, ale elementów może być 0. To nieco mylące. Poprawię to jak wrócę od dentysty. :-)

Ponownie, proszę o informację, czy moduł wam działa i jeśli tak to czy działa poprawnie.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 03, 2009, 08:05:04 pm
W poście wyżej załączyłem zipa ze złym plikiem szablonu dla modułu. Teraz poprawiony plik. Jestem też w trakce robienia kolejnego uaktualnienia. Poprawi ono zliczanie elementów w wyszukiwaniu, doda możliwość sortowania wyników i stronicowanie.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 04, 2009, 10:07:31 am
Wersja 1.2!

Nowości:
~ Zliczanie - teraz jest poprawne
~ Stronicowanie - wyniki są dzielone na strony
~ Sortowanie - domyślnie jest po nazwie, ale można używać standardowej rozwijanej listy z typem sortowania

Wszystkie pozostałe uwagi, które się tyczyły wersji 1.0 i 1.1 wciąż aktualne. Tym nie mniej moduł można już z czystym sercem instalować we własnym serwisie i korzystać z niego.

Moduł jest na licencji OSL, czyli jest darmowy i otwarty na zmiany, a także każda praca wyprowadzona od niego musi być darmowa i otwarta na zmiany. Korzystajcie z tego do woli - to mój wkład w PrestaShop. Jeśliby ktoś miał problem z instalacją, to proszę pisać tutaj, a opiszę wszystko dokładnie. Jeśliby ktoś mimo to sobie nie radził, to za symboliczną opłatą zainstaluję osobiście.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: sanser w Czerwiec 04, 2009, 03:45:06 pm
Fajny modulik bardzo przydatny:)
Ideałem byłoby gdyby atrybuty po których szukasz zależały od wybranej kategorii.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 04, 2009, 04:04:44 pm
Fajny modulik bardzo przydatny:)
Ideałem byłoby gdyby atrybuty po których szukasz zależały od wybranej kategorii.
Dodam ten pomysł to listy rzeczy do zrobienia. :-) Jak mi się dobrze czas ułoży, to na jutrzejsze popołudnie będzie to wdrożone.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: mef w Czerwiec 04, 2009, 04:59:34 pm
modulik cacuszko :) ale jeszcze lepiej bylo by gdyby modul ten wyswietlal sie tak jak w magento czyli z boku pelna lista atrybutow rozwinięta... i wtedy po wybrnaiu atrybutu z danej listy zwija sie lista i pozostaje atrybut wybrany i z boku <X> ze mozna go usunac i spowrotem pojawia sie zakres atrybutow z danej listy...

nie wiem czy napisalem ze zrozumieniem najwyzej wstawie link do fotki modulu pisanego przez kogos z rosji http://www.prestashop.com/?ACT=29&fid=10&aid=7283_SnNwQKTgISYdFREZhQDn&board_id=1 (http://www.prestashop.com/?ACT=29&fid=10&aid=7283_SnNwQKTgISYdFREZhQDn&board_id=1) cos w tym stylu ale jak w magento :)

ciekawe czy mzoliwe cos takiego ... ps .. zabieram sie powoli do pisania modulu integrujacego presta z allegro ... czekam na ewentualne zmiany api ktore mialy nastapic dzis i przy odrobinie wolnego czasu napisze go

pozdr
 
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tarentil w Czerwiec 04, 2009, 10:00:44 pm
ale jeszcze lepiej bylo by gdyby modul ten wyswietlal sie tak jak w magento czyli z boku pelna lista atrybutow rozwinięta... i wtedy po wybrnaiu atrybutu z danej listy zwija sie lista i pozostaje atrybut wybrany i z boku <X> ze mozna go usunac i spowrotem pojawia sie zakres atrybutow z danej listy...
Ciekawy pomysł. :-) Nie jestem takim specem od JavaScriptu, aby to zrobić szybko, ale tak w ogóle to pewnie kwestia czasu, aby to zrealizować. :-)
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: charm w Lipiec 02, 2009, 03:28:22 pm
Parę drobnych uwag ;-)

-> w Search.php powinno być w selekcie jeszcze  AND ppa.`quantity` > 0, żeby nie wyświetlało tych, które są niedostępne ;-)
-> w blocksearchbyattribute.tpl w sekcji input dodatkowo class="button"  - lepiej wygląda, bo korzysta z takich przycisków jak reszta sklepu ;-)
-> dołożenie w blocksearchbyattribute.php  w select  style="width: ...."   załatwia sprawę rozjeżdżania się ;-)

aczkolwiek to takie kosmetyczne (powiedzmy "kobiece") uwagi ;-)

Generalnie świetna robota (uprzedziłeś mnie, bo też zaczęłam robić, ale ostatnia sesja mnie oderwała od rzeczywistości... ;-) )
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: kris w Lipiec 30, 2009, 07:54:09 am
A mógłby ktoś napisać jak przerobić ten sam moduł, żeby szukał po cechach?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: motorider w Wrzesień 22, 2009, 07:27:09 pm
Czy ktoś mógłby dostosować ten moduł do najnowszej wersji presty?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: marian76 w Wrzesień 22, 2009, 08:04:27 pm
Zajefajny moduł tylko co by szukał po kategoriach--->potem podkategoriach itd, idzie cos takiego zrobić? Np. wybieram Markę na Amica--> potem mam dostępne np, Prlaki, Lodówki, kuchenki, i jeszcze niżej np. szerokości danych produktów.
Amica
Pralki
60cm
szukaj <-----

da rade coś takiego zrobić?
Pozdrawiam i liczę na waszą pomoc, sam gdybym znał choć trochę język programowania z miłą chęcią bym pomógł.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: przemek_rek w Październik 03, 2009, 08:19:44 pm
Jesteś moim bogiem. Tego modułu mi właśnie brakowało w prestashopie.
W zasadzie jest on tak niezbędny, że nie rozumiem dlaczego brakuje go oficjalnym wydaniu.

Proponuję, żeby go dodać do polskiej wersji skryptu
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: niezdara w Październik 14, 2009, 08:14:47 pm
Próbowałem dołączyć ten moduł do swojego sklepu, który właśnie stawiam, niestety zainstalowałem wersję 1.2 i nie działa :(. Czy ktoś ma może ten moduł przerobiony dla wersji 1.2.2 ?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: przemx w Grudzień 10, 2009, 11:10:37 pm
Kurde, mam problem otóż chce zrobić tą wyszukiware z boku, w lewej kolumnie, jednak nie wiem jak zrobić odstępy pomiędzy atrbutami tj

atrybut
przerwa
atrybut
przerwa

www.tanieopony.nazwa.pl
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: Paweł Sokołowski w Grudzień 11, 2009, 06:55:44 pm
przemx - zglos sie do mnie na gg - rozwiazemy to
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: gck w Styczeń 07, 2010, 02:43:26 pm
Witam
Ja także mam problem z tym modułem po zainstalowaniu i podmienieniu plików oraz dodaniu atrybutów do produktów majać np dwa rozmiary butów 36 wyświetla mi tylko jeden a pokazuje że znaleziono dwa... a także gdy dodam nowy produkt i dam mu atrybuty znajduje go ale nie pokazuje jego obrazka ani nieda sie na niego wejsc a takze dodac do koszyka !! prosze o pilna pomoc nawet zaplace !!!
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: agawi w Styczeń 14, 2010, 01:14:51 am
U mnie jest cos nie tak z modulem. Po atrybucie nie dziala, dodatkowo przestala dzialac normalna wyszukiwarka :/
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: gvtek w Styczeń 24, 2010, 03:20:47 pm
Świetny moduł. Dzięki wielkie za stworzenie takiego cacka :)
Mam jednak jedno pytanie: Po instalacji modułu, gdy chce zapisać zmiany edycji produktu (np. po zmianie opisu) pojawia mi się następujący komunikat:

Fatal error: Call to undefined method Search::indexation() in /srv/home/j92628jo/public_html/sklep-bewell/admin1/tabs/AdminProducts.php on line 722

Czy ktoś może mi pomóc z tym błędem?
Pozdrawiam
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: vodnik w Luty 05, 2010, 12:33:53 am
Czy ktoś mógłby dostosować ten moduł do najnowszej wersji presty?

Dołączam się do prośby. Jeśli ktoś się zna, to prosiłbym o pomoc.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: lof w Luty 06, 2010, 12:25:04 pm
1.2?
ogolnie działa ten moduł jak należy bo  feature :D
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: agawi w Luty 06, 2010, 11:48:46 pm
W 1.2.3 nie chce działać poprawnie. Podaje ilosc wyszukanych przedmiotów ale ich nie pokazuje  :( Macie jakies rady?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: gvtek w Luty 07, 2010, 11:18:19 pm
lof czy mógłbyś szerzej rozwinąć swoją wypowiedź... dzięki
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: vodnik w Luty 07, 2010, 11:24:12 pm
Sorki, pomyłka w cytowaniu.
Chodziło mi o Szukanie po cechach. (Search by Features)
Dokładnie to w wersji 1.1.0.5.
Wie ktoś jak to przerobić?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: misza90 w Maj 31, 2010, 11:02:08 am
Dołączam się do pytania.

Cytuj
Po instalacji modułu, gdy chce zapisać zmiany edycji produktu (np. po zmianie opisu) pojawia mi się następujący komunikat:
Fatal error: Call to undefined method Search::indexation() in /srv/home/j92628jo/public_html/sklep-bewell/admin1/tabs/AdminProducts.php on line 722

Błąd prawdopodobnie tkwi w pliku classes/Search.php

Dodam iż moduł załączony poniżej nie powoduje błędu opisanego powyżej, jednak działa w niewłaściwy sposób - wynik wyszukiwania jest w języku angielskim (pomimo domyślnie - polskiego w panelu administracyjnym).
Bardzo proszę o pomoc w tej sprawie.
Version 1.2.2.0
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: malyvinyl w Marzec 22, 2011, 09:46:00 am
Witam
Mam takie pytanie gdzie muszę zmienić by wynik wyszukiwania był według ceny od najniższej bo sortowanie to co jest jak zmienię na według ceny to nic się nie dzieje. Będę wdzięczny za pomoc.
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: wujek_bogdan w Październik 17, 2011, 10:14:35 am
Jest jakaś szansa na przepisanie tego modułu dla presty 1.4.x ?
W zasadzie wystarczy mi szukanie po jednym atrybucie (np. po kolorze).
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: xkasjer w Grudzień 06, 2011, 12:19:47 pm
?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: Siarecki w Grudzień 12, 2011, 01:30:44 pm
Przyłączam sie do pytania: czy jest wersja pod 1.4?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: tkopacki w Grudzień 19, 2011, 06:05:23 pm
Witam, napisałem dziś moduł szukania po cechach.
Demo na http://kopacki.net/pre/ (http://kopacki.net/pre/)
Tylko jeszcze muszę pomyśleć, jak uwzględniać kombinacje cech, bo w tej chwili wyszukuje produkty, które mając co najmniej jedną z podanych cech.
Co Państwo sądzą o tym module?
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: matzmu w Kwiecień 15, 2012, 09:49:44 am
Cześć ,
czy ktoś może wrzucić ten moduł na forum , ponieważ  po ściągnieciu jest błąd archiwum.
A chciałbym zobaczyć jak on działa :)

Dziękuję !
Pozdro!
Tytuł: Odp: Moduł "Szukaj po atrybucie"
Wiadomość wysłana przez: sebastianp88 w Wrzesień 26, 2012, 12:05:33 am
Czy ta wersja szukajki po atrybutach jest dostępna pod preste 1.4?