Je veux avoir une navigation par filtre sur toutes les pages de mon site.
Je veux filtrer distinctement les résultats de mes catégories et sur les autres pages, je renvoie la requête de filtre vers la page de résultat de recherche avancée.
1- Modifier tout le fichier : catalog/layout/filter.phtml avec le code suivant :
<?php
//contrôler la façon dont la navigation des attributs se présentent
//liste déroulante , soit par défaut ou méthode ( liste ordonnée )
$attributeName = $this->getName();
$itemcountthreshold = 120;
$itemcount = $this->getItemsCount();
$displayitemcount = true; //mettre true/falsepour afficher le nombres d'articles par attribut filtrer
if($itemcount > $itemcountthreshold){
$attributeName = "Overthreshold";
}
if(!function_exists("_displayOrderedlist")){
function _displayOrderedlist($atts,$displayitemcount){
echo '<ol>';
foreach($atts->getItems() as $_item){
echo '<li><a href="'.$_item->getUrl().'">'.$_item->getLabel().'</a>';
if($displayitemcount){
echo ' ('.$_item->getCount().')';
}
echo '</li>';
}
echo '</ol>';
}
}
if(!function_exists("_displayDropdown")){
function _displayDropdown($atts,$displayitemcount){
echo '<select id="layered-select" name="layered-select" onchange="if (this.selectedIndex > 0) location.href=this[this.selectedIndex].value;">';
echo '<option selected="selected">'.$atts->getName().'</option>';
foreach ($atts->getItems() as $_item){
echo '<option value="'.$_item->getUrl().'">';
echo $_item->getLabel();
if($displayitemcount){
echo ' ('.$_item->getCount().')';
}
echo '</option>';
}
echo '</select>';
}
}
switch ($attributeName) {
case 'Marque': //mettre ici les labels des attributs filtrable
case 'Carrosserie':
case 'Modèle':
case 'Energie':
case 'Transmission':
case 'Prix':
_displayDropdown($this,$displayitemcount);
break;
default:
_displayOrderedlist($this,$displayitemcount);
break;
}
?>
2-Enregistrer le fichier catalog/layout/view.phtml sous homeview.phtml
Ce fichier servira pour toutes les pages de mon site (hors pages de listing des catégories)
Ce fichier renvoi les requêtes du filtre vers la page de résultat des recherches : http://www.monsite/catalogsearch/advanced/result
remplacer :
<?php echo $_filter->getHtml() ?>
par
<?php echo str_replace("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],"http://webstore.lavillauroy.fr/catalogsearch/advanced/result",$_filter->getHtml()); ?>
Cette fonction remplace l’url de la page active par celle de la page de résultats de recherche et ajoute à l’url le filtre de recherche.
3- J’applique le filtre sur les pages de tout le catalogue :
Dans app/design/frontend/default/default/layout/catalog.xml
J’ajoute entre les balises <!– Default layout, loads most of the pages–> :
<reference name="left"> <block type="catalog/layer_view" name="catalog.leftnav" after="-" template="catalog/layer/homeview.phtml"/> </reference>
Entre les balises<!–Category layered navigation layout–>
<reference name="left"> <remove name="catalog.leftnav" /> <!-- On désinstalle le filtre pour tout le site au profit de celui pour les catégories --> <block type="catalog/layer_view" name="category.leftnav" after="-" template="catalog/layer/view.phtml"/> </reference>
4- J’ajoute le filtre dans le fichier app/design/frontend/default/default/layout/catalogsearch.xml
Entre les balises <catalogsearch_result_index> … </catalogsearch_result_index>
!!!! Je met bien le fichier homeview.html car on ne change pas l’url de résultat de filtre…
<reference name="left"> <block type="catalog/layer_view" name="catalog.leftnav" after="-" template="catalog/layer/homeview.phtml"/> </reference>
Entre les balises <catalogsearch_advanced_index> … </catalogsearch_advanced_index>
<reference name="left"> <remove name="catalog.leftnav" /> <!-- On désinstalle le filtre pour tout le site au profit de celui pour les catégories --> <block type="catalog/layer_view" name="category.leftnav" after="-" template="catalog/layer/view.phtml"/> </reference>
5- J’ajoute le filtre sur les pages des catégories du site. Dans l’admin : Catalogue/Gérer les catégories , onglet Design personnalisé/Mise à jour d’agencement :
<reference name="left"> <action method="unsetChild"><name>catalog.leftnav</name></action> <!-- On désinstalle le filtre pour tout le site au profit de celui pour les catégories --> <block type="catalog/layer_view" name="category.leftnav" after="-" template="catalog/layer/view.phtml"/> </reference>


