wyszukiwarka

Miejsce na wszelkie dyskusje odnośnie problemów technicznych i ewentualnych pytań z rozbudowaniem systemu w plikach i skryptach Opencart, a które nie dotyczą instalacji.

Re: wyszukiwarka

Postprzez mostek » 16 lut 2011, o 13:14

Dzięki za informację, ale ja muszę naprawić sklep, który jest już zainstalowany.

Czy wiecie które pliki odpowiadają za wyświetlanie wyników wyszukiwania?
W jakim pliku znajduje się bezpośrednio kwerenda SQL która pobiera wyniki z bazy?

Z góry dziękuję za pomoc :)
mostek
 
Posty: 4
Dołączył(a): 7 lut 2011, o 02:14

Re: wyszukiwarka

Postprzez saigon » 1 mar 2011, o 02:01

Witam.

Czy ktoś z obecnych już sobie z tym tematem poradził?
Niestety nie potrafię znaleźć przyczyny problemu.
saigon
 
Posty: 4
Dołączył(a): 15 lut 2011, o 22:46

Re: wyszukiwarka

Postprzez saigon » 8 mar 2011, o 12:02

Znalazłem przyczynę tego błędu.

Jest on powodowany przez funkcję php strtolower.

Funkcja ta nie radzi sobie z polskimi znakami z powodu kodowania, z tego co znalazłem w sieci na ten temat to, żeby ta funkcja zadziałała prawidłowo trzeba:
- przekodować pliki php na utf-8
- ustawić znacznik meta codepage

OC domyślnie nie ustawia meta code page a jedynie kodowanie xml, poza tym jego pliki są kodowane w ISO (tak mi edytor pokazał).

Ponieważ nie chciało mi sie bawić aż tak wykorzystałem alternatywną funkcje php mb_strtolower.

Tutaj możemy już swobodnie przekazać kodowanie jako parametr.
strto lower jest wykorzystywane w modelu search.php i wystarczy go zastąpić wszystkie strtolower przez mb_strtolower dodając paramtr 'UTF-8', prawdopodobnie to samo dotyczy innych modeli które korzystają z strtolower.

Na pewno jeszcze contact/address który z kolei ucina po polskim znku przy zapisie danych.

P.S. Pozdrowienia dla wszystkich którzy sobie wcześniej z tym problemem poradzili i nie omieszkali napisać jak to zrobić.
saigon
 
Posty: 4
Dołączył(a): 15 lut 2011, o 22:46

Re: wyszukiwarka

Postprzez Terry » 20 mar 2011, o 19:13

saigon dzięki !
Terry
 
Posty: 1
Dołączył(a): 4 paź 2010, o 13:09

Re: wyszukiwarka

Postprzez mizerek » 30 mar 2011, o 11:19

witam. moja wersja to 1.4.8. i przyłączając się do pytania chciałbym by ktoś opisał w którym pliku php-a trzeba pozmieniać te wpisy i kodowanie na utf-8. Jak wyżej - brak wyników wyszukiwania gdy tylko w haśle znajduje się polska litera typu ą,ś,ź, itd. Bardzo proszę o pomoc. Saigon znalazł rozwiązanie ale nie rozumie do końca co i jak.
mizerek
 
Posty: 6
Dołączył(a): 30 mar 2011, o 11:15

Re: wyszukiwarka

Postprzez mizerek » 30 mar 2011, o 11:56

pytanie moje skierowane do SAIGONA:
1) które pliki php przekodować na utf-8 ?? czy zrobić to poprzez edycyje w notatniku i zmiane kodowania?? czy nie wykrzaczy to sklepu? - byłaby tragedia
2) znacznik meta codepage ustawić gdzie??

o co konkretnie chodzi z alternatywną funkcją php mb_strtolower. ?? proszę o pomoc
mizerek
 
Posty: 6
Dołączył(a): 30 mar 2011, o 11:15

Re: wyszukiwarka

Postprzez saigon » 30 mar 2011, o 12:25

Alternatywna funkcja mb_strtolower, jest to funkcja w php która nie pobiera sobie kodowania ze strony, tylko pozwala je przekazać przez parametr.

Jeżlei chodzi o jej podmianę to chodzi dokładnie o zamianę np:
$sql .= " AND (LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%'";
na
$sql .= " AND (LCASE(pd.name) LIKE '%" . $this->db->escape(mb_strtolower($keyword, 'UTF-8')) . "%'";

Dokumentacja: http://php.net/manual/en/function.mb-strtolower.php

spowoduje to, że ciąg znaków będzie konwertowany przy pomocy kodowania utf-8 a nie wg tego na stronie.

W przypadku wyszukiwarki odpowiednim modelem jest plik 'catalog/model/catalog/product.php' a metoda odpowiedzialna za wyszukiwanie to: getProductsByKeyword

Od razu zaznaczam że to rozwiązanie ma swoje wady i o takiej zmianie trzeba pamiętać przy każdej aktualizacji.

Drugą opcją jest zmiana template w taki sposób żeby wstawiał znacznik "<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />" do nagłówka strony. Problem jest taki że tego nie testowałem i nie wiem jak się strtolower zachowa bo nadal pliki opencart nie są kodowane w UTF-8, wg dokumentacji jest to istotne (nie mam co do tego pewności ale znalazłem kilka wpisów na różnych forach php że ma to znaczenie):

"Note that 'alphabetic' is determined by the current locale. This means that in i.e. the default "C" locale, characters such as umlaut-A (Ä) will not be converted."

Najlepiej by było zgłośic poprawkę do OC, która w domyslnej dystrybucji OC zaczęła by używać mb_strtolower ale wtedy OC wymagałby PHP 4 >= 4.3.0, PHP 5
saigon
 
Posty: 4
Dołączył(a): 15 lut 2011, o 22:46

Poprzednia stronaNastępna strona

Powrót do Pomoc techniczna przy Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 3 gości