Jump to content

Problème Module Navigation À Facette (Blocklayered)


Recommended Posts

Bonjour,

 

J'utilise la version 1.4.3 de Prestashop avec le module Navigation à facette 1.3 d'installé (super module, au passage).

 

Tout fonctionne correctement lorsque je suis sur une page catégorie par contre si je vais sur ma page de marque (manufacturer.php), la fonction de tri (orderby-orderway) et la pagination (de base sous prestashop) ne fonctionne plus.

 

Sous firebug, j'ai le message d'erreur : reloadContent is not defined, lorsque je choisis de faire un tri.

 

Cette fonction js est bien appelée par le module Navigation a facette, mais je ne comprend pourquoi elle vient faire bugger mon tri de base.

 

Et lorsque j'utilise la pagination je tombe sur une page 404.

 

Quelqu'un a t-il une idée du problème ?

Link to comment
Share on other sites

J'ai enfin trouvé "une" solution au problème, pour ceux que ça intéresse :

 

Dans le fichier product-sort.tpl vers la ligne 40, on a :

 

<script type="text/javascript">
//<![CDATA[
$(document).ready(function()
{
$('#selectPrductSort').change(function()
{
	var requestSortProducts = '{$request}';
	var splitData = $(this).val().split(':');
	{if Module::isInstalled('blocklayered')}
		reloadContent();
	{else}
		document.location.href = requestSortProducts + ((requestSortProducts.indexOf('?') < 0) ? '?' : '&') + 'orderby=' + splitData[0] + '&orderway=' + splitData[1];
	{/if}
});
});
//]]>
</script>

 

Pour éviter ce problème il suffit d'enlever la condition : "Si le module BlockLayered existe, on appel la fonction reloadContent()

On obtient donc :

 

<script type="text/javascript">
//<![CDATA[
$(document).ready(function()
{
$('#selectPrductSort').change(function()
{
	var requestSortProducts = '{$request}';
	var splitData = $(this).val().split(':');
	document.location.href = requestSortProducts + ((requestSortProducts.indexOf('?') < 0) ? '?' : '&') + 'orderby=' + splitData[0] + '&orderway=' + splitData[1];
});
});
//]]>
</script>

 

Et là ça fonctionne, mais je n'ai toujours pas compris pourquoi le module ne fonctionne pas sur ma page manufacturer...si quelqu'un a une idée...

Link to comment
Share on other sites

  • 1 month later...

Bonsoir,

 

J'ai aussi eu le problème du tri quelque soit le filtre saisi (par prix, par ordre alphabétique, etc.) et le problème provient de la fonction reloadContent du fichier blocklayered.js qui ne prend pas le bons paramètres de tri.

$('#selectPrductSort').val() renvoie l'url (donc avec les paramètres de recherche : orderby et orderway) mais splitData (ligne 124) ne retourne pas les valeurs passées dans l'url, il crée le tableau en prenant comme séparateur de valeur ":", donc splitData[0] retourne "http".

 

La solution que j'ai trouvée pour résoudre ce problème :

- Ajouter une fonction JS qui permette de récupérer les clés et les valeurs passées dans l'url :

 

function getParamURLValue(param,url)

{

var u = url == undefined ? document.location.href : url;

var reg = new RegExp('(\\?|&|^)'+param+'=(.*?)(&|$)');

matches = u.match(reg);

return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';

}

- Remplacer ligne 125 :

data += '&orderby='+splitData[0]+'&orderway='+splitData[1];

par

data += '&orderby='+getParamURLValue('orderby',$('#selectPrductSort').val())+'&orderway='+getParamURLValue('orderway',$('#selectPrductSort').val());

 

Je profite de ce post pour rappeler un autre bug rencontré pour gérer les filtres dans le backoffice pour blocklayered dont la solution a été apportée par Olecorre :

Error JS in line 442 from blocklayered.php

url: '.__PS_BASE_URI__.' + \'modules/blocklayered/blocklayered-ajax-back.php\',

correction :

url: \''.__PS_BASE_URI__.'\' + \'modules/blocklayered/blocklayered-ajax-back.php\',

Link to comment
Share on other sites

Bonjour,

 

J'ai fait les changements de benwesh mais la page ne cesse de tourner en rond. Il est dit que pour :

 

return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';

 

matches is null

 

 

You can disable/enable break notifications in panel's tab menu.

 

Aurais tu une solution benwesh?

Link to comment
Share on other sites

Bonjour,

 

J'ai essayé aussi les modifications de benwesh. J'étais contente car ça me règle mes problèmes de pagination mais dès que je souhaite utiliser le filtre de couleur/taille/etc... cela ne fonctionne plus : j'ai la page qui se charge indéfiniment.

Link to comment
Share on other sites

Bonjour,

En attendant, je ne comprends toujours pas comment ce module peut fonctionner avec toute autre page qu'une page catégorie... J'en ai besoin sur la page manufacturer.php mais il ne s'affiche pas. A la lecture du code, tout est calé sur une Category actuelle. Quelle est l'astuce implicite que tout le monde semble avoir utilisé ? Inclure d'une façon ou d'une autre l'affichage des produits d'une marque dans une catégorie ?

Kharf'

Link to comment
Share on other sites

Ah je crois qu' j'ai compris...

Comme j'ai besoin des filtres sur toutes les catégories, il m'a suffit de commenter, ligne 757 :

if ($id_parent == 1)
return;

De cette façon, dans le cas des marques, l'id de la catégorie est positionné par défaut sur 1 (Accueil) et le module peut faire sa petite cuisine et hooker les filtres.

 

Très artisanal, tout ça... J'espère que la version finale et stable permettra plus de souplesse.

 

Kharf'

  • Like 1
Link to comment
Share on other sites

Pour être plus précis, j'ai dû remplacer toutes les mentions à:

 

if ($id_parent == 1)
return;

par:

$id_manufacturer = (int)Tools::getValue('id_manufacturer', 0);	   
 if ($id_parent == 1 && $id_manufacturer==0) 
  return;

 

Afin de prendre en compte les appels à la page manufacturer.php, et non plus seulement category.php.

 

Mais ça ne règle rien du tout... l'ajax tourne, on se régale du gif de loading, puis.... plus rien. Tableau de produits désespérément vide, filtres inexistants. Sincèrement, s'il existe une façon simple d'utiliser ce module sur les pages marques, je bénis 3 fois la bonne âme qui saura me l'indiquer... Sur ce je file engloutir une ou deux boîtes d'anti-dépresseurs parce que, évidemment, c'est pour livrer dans deux jours. Projet de daube... <_<

 

Desperate Kharfud

Link to comment
Share on other sites

Ce Block marche plutôt pas mal avec PS 1.4.5.0 que tu devras obtenir par le SVN

 

Mais ceci implique l'updgrade vers cette version, étant donné qu'il y a de nombreux "Hooks" ajoutés

 

Et de toute façon, il est bien signalé : En développement ;)

Ce n'est pas la 1.5 ? j'ai beau fouiller je ne trouve rien sur cette version intermédiaire 1.4.5, la structure du futur thème m'intéresse grandement :)

Link to comment
Share on other sites

J'ai jeté un oeil au code du nouveau module, il est carrément plus intelligent, et portable à toute page du site.

Malheureusement, pas possible de commercialiser un site utilisant un PS instable...

J'attendrai donc la prochaine release pour activer les filtres sur les pages marques.

Link to comment
Share on other sites

OK, avec la 1.4.5.1 que j'ai mis 1 journée entière à mettre en place (spécifs sur modules/classes/controllers à merger avec les nouveaux), le bloc facettes fonctionne bien, les sliders aussi. Nickel.

Mais... quid de la page marques (manufacturer.php) ? Existe-t-il un moyen d'utiliser les facettes sur d'autres pages que les pages catégories ? Une recherche par marques est d'une grande importance stratégique, pour un site de vente en ligne, ne serait-ce que pour le référencement des liens marques... Est-ce possible ou pas ? et si oui comment faire ? Des sites comme www.menlook.com utilisent un bloc a facettes sur des recherches par marques, sans souci (et avec le prix en prime, depuis pas mal de temps d'ailleurs). Dev ? Configuration ? Prières, offrandes et sacrifices rituels ? HELP !!!

 

Kharf

Link to comment
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
×
×
  • Create New...