Press "Enter" to skip to content

PrestaShop: problem z modułem Hotdeals – nie wyszukuje produktów

Admin 0

Zawartość artykułu

Opis problemu

Jeśli używasz modułu Hotdeals (jest on dołączany z niktórymi szablonami od firmy tworzącej szabony JMS – joommasters.com) możesz natrafić na enigmatyczny problem.

W konfiguracji modułu po prostu musisz wpisać nazwę produktu, który bedzie promowany. Służy do tego ramka, gdzie podajesz nazwę produktu.

Jednak to nie wystarczy – produkt na podstawie wprowadzanych danych powinien być wyszukany – następnie poprzez klinięcie w niego go definiujemy.

Niestety może to na sklepie po prostu nie działać. Wpisujesz nazwę produktu – nawet całą i klasycznie „nic się nie dzieje”. Dlaczego?

Najprawdopodobniej brak reakcji na wpisywane dane wynika z tego, że posiadasz na sklepie certyfikat SSL. Czyli szyfrowanie HTTPS. Natomiast ten moduł ma problem z prawidlowym przetworzeniem takiego żądania. Tzn. w skrypcie Javascript jest wywoływany jest link bez HTTPS a przeglądarka po prostu go blokuje. Obrazuje to poniższy screen:

Blokowanie zapytań modułu Hotdeals w PrestaShop. Moduł wywołuje HTTP podczas gdy strona jest zabezpieczona przez HTTPS

Rozwiązanie problemu

Aby to naprawić musimy zmodyfikować kod modułu.

W tym celu otwórz plik:

modules/hotdeals/views/templates/admin/_configure/helpers/form/form.tpl

I odnajdź fragment kodu odpowiedzialny za asynchroniczne zapytanie AJAX:

$.ajax({
type: 'GET',
url: '{$base_url|escape:'htmlall':'UTF-8'}' + 'modules/hotdeals/ajax_productsearch.php',
headers: { "cache-control": "no-cache" },
async: true,    	
data: 'search_key=' + search_key,
success: function(data)
{		
    $('#result_products').innerHTML = data;		
}

Musimy tutaj wymusić HTTPS w tym linku. W tym celu zamień:

url: '{$base_url|escape:'htmlall':'UTF-8'}' + 'modules/hotdeals/ajax_productsearch.php',

Na:

url: '{$base_url|escape:'htmlall':'UTF-8'|replace:'http':'https'}' + 'modules/hotdeals/ajax_productsearch.php',

 

Możesz też alternatywnie wymusić to w kontrolerze PHP w zmiennej $base_url

Czyli docelowy kod będzie wyglądać:

$.ajax({
type: 'GET',
url: '{$base_url|escape:'htmlall':'UTF-8'|replace:'http':'https'}' + 'modules/hotdeals/ajax_productsearch.php',
headers: { "cache-control": "no-cache" },
async: true,    	
data: 'search_key=' + search_key,
success: function(data)
{		
    $('#result_products').innerHTML = data;		
}

Inną metodą „wymuszenia” prawidłowego zapytania jest wręcz podanie pełnej domeny w tym pliku JS:

$.ajax({
type: 'GET',
url: 'https://adres-sklepu.pl/modules/hotdeals/ajax_productsearch.php',
headers: { "cache-control": "no-cache" },
async: true,    
data: 'search_key=' + search_key,
success: function(data)
{
$('#result_products').innerHTML = data;
}

Gotowe!

Po dokładnym wyczyszczeniu cache przeglądarki zapytanie powinno działać prawidłowo:

Prawidłowy sposób działania modułu Hotdeals w PrestaShop

Czy potrzebujesz certyfikatu SSL (połączenie HTTPS)? Zapoznaj się z naszą ofertą:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Borykasz się z problemem z PrestaShop na serwerze Home.pl? Pokażemy…