Afficher le nombre de produit - module de filtre

  • Posts: 51
  • Thank you received: 0
11 years 6 months ago #106669

Bonjour à tous

Voila mon soucis

J'utilise le module de filtrage avec les champs personnalisés, jusque la pas de soucis, mais j'aimerais afficher le nombre de produit présent dans mes choix.

Par exemple, j'ai un choix par année et j'aimerais que chaque année me donne le nombre de produit présent

Merci de votre réponse

Ci joint une image explicative

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #106763

Bonjour,

C'est en effet une idée intéressante. Un problème se pose néanmoins, c'est que pour afficher de telles informations il faudrait effectuer des requêtes au chargement de la page pour connaitre le nombre de produit correspond. Cela signifie grossièrement qu'il faut faire un nombre de requête égale au requêtes qui seraient faites si l'on cliquait sur tous les filtres...

Outre le fait que le temps de chargement serait beaucoup plus long, le système actuel ne permet pas de faire ce genre de modification aisément.
Nous notons tout de même l'idée.
Si vos produits ne bougent pas trop (en terme de diversité) vous pouvez toujours afficher cette information en l'inscrivant en dur dans le code. Si cela vous intéresse, je vous donnerais la marche à suivre.

The following user(s) said Thank You: svillechange

Please Log in or Create an account to join the conversation.

  • Posts: 51
  • Thank you received: 0
11 years 5 months ago #106764

Bonjour et merci pour la réponse.

Je veut bien la procédure pour le mettre en dur dans le code, et voir si cela me suffit.

Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #106776

La procédure n'est pas des plus simple non plus mais voilà la marche à suivre.
Il faut que vous vous rendiez dans le dossier classes de administrator/com_hikashop, ouvrer le fichier filter.php
A partir de là, vu que vous utiliser des listes, faites une recherche sur "hikashop_filter_list" dans le document. Vous allez voir des morceaux de code HTML en fonction des éléments à afficher.
Ensuite, en fonction des informations affichés, vous aller devoir faire une boucle avec des conditions pour afficher le bon nombre en fonction de la valeur.

Par exemple pour les catégories, trouvez ce morceau de code:

//DISPLAY CATEGORIES
		if($filter->filter_data=='category'){
			$categories_name=parent::getCategories($filter, $datas);
			if(!empty($categories_name)){
				foreach($categories_name as $cat){
					if(!empty($selected) &&  (is_numeric($selected)&&$cat->category_id==$selected) ||(is_array($selected) && in_array($cat->category_id, $selected))){
						$html.='> <a class="hikashop_filter_list_selected" style="font-weight:bold">'.$cat->category_name.'</a>';
						$html.='<a style="cursor:pointer; text-decoration:none" onclick="document.getElementById(\'filter_'.$filter->filter_namekey.'_'.$divName.'\').value=\'\'; document.forms[\'hikashop_filter_form_'.$divName.'\'].submit();"> <img src="'.HIKASHOP_IMAGES.'delete2.png" /></a>'.$br;
					 }else{
						$html.='> <a class="hikashop_filter_list" onclick="document.getElementById(\'filter_'.$filter->filter_namekey.'_'.$divName.'\').value=\''.$cat->category_id.'\'; document.forms[\'hikashop_filter_form_'.$divName.'\'].submit();">'.$cat->category_name.'</a>'.$br;
					}
				}
			}
		}

Il faut que vous ajoutiez après le foreach quelque chose comme:
$nbResult='';
if($cat->category_name=='Rock'){
$nbResult=15;
}else if($cat->category_name=='Pop'){
$nbResult=23;
}else if(){
...
}

Avec chaque cas. Une fois cela fait, il suffit d'ajouter la variable en fin de ligne comme suit:
if(!empty($selected) &&  (is_numeric($selected)&&$cat->category_id==$selected) ||(is_array($selected) && in_array($cat->category_id, $selected))){
						$html.='> <a class="hikashop_filter_list_selected" style="font-weight:bold">'.$cat->category_name.'</a>('.$nbResult.')'.;
						$html.='<a style="cursor:pointer; text-decoration:none" onclick="document.getElementById(\'filter_'.$filter->filter_namekey.'_'.$divName.'\').value=\'\'; document.forms[\'hikashop_filter_form_'.$divName.'\'].submit();"> <img src="'.HIKASHOP_IMAGES.'delete2.png" /></a>'.$br;
					 }else{
						$html.='> <a class="hikashop_filter_list" onclick="document.getElementById(\'filter_'.$filter->filter_namekey.'_'.$divName.'\').value=\''.$cat->category_id.'\'; document.forms[\'hikashop_filter_form_'.$divName.'\'].submit();">'.$cat->category_name.'</a>('.$nbResult.')'.$br;
					}

C'est assez fastidieux mais c'est la seule solution qui ne modifie pas en profondeur le code.

Please Log in or Create an account to join the conversation.

  • Posts: 51
  • Thank you received: 0
11 years 5 months ago #106779

Merci pour la réponse

En effet vu que notre catalogue évolue sans cesse cela va être assez fastidieux.

Sinon comment utiliser les mots clés de chaques produit en faisant un lien de recherche.

Par exemple:

Pop rock . quand je clique dessus ça me cherche tous les produits avec le mot pop rock écrit auparavant dans les keywords (mots clés) du produit

Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 51
  • Thank you received: 0
11 years 5 months ago #106784

et en admettant que j'utilise non pas des champs personnalisés, mais les catégories hikashop de mes styles, y'a t'il un moyen plus simple de dire que dans la categorie pop il y'a tant de titres, car j'ai essayé dans le module filtre d'afficher mes catégories pas de soucis mais toujours pas de chiffres.

Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #106788

Bonjour,

Pour ce qui est des mots-clefs qui se transforment en lien ce n'est pas possible mais c'est quelque chose que nous pourrions rajouter.
Là encore il est possible de modifier un peu le fichier filtre.php et d'utiliser le champ de recherche pour en faire quelque chose de similaire mais ce n'est pas très simple.

Pour l'affichage du nombre de produit nous n'avons simplement pas mis en place d'option de ce genre donc peu importe le champ utilisé cela n'apparaitra pas.

Please Log in or Create an account to join the conversation.

  • Posts: 51
  • Thank you received: 0
11 years 5 months ago #106789

Ok pour le filtre j'oublie pour le moment

Pour les tags qui se transforment en lien, comment faire car notamment c'est une fonction qui existe dans "K2" que je trouve particulièrement intéressante je pense pour pas mal de gens.

Merci de votre réponse

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #106793

Il faut que vous créiez un filtre de type text, s'applicant sur product_keyword, et l'option "deletable filter" activé.
Ensuite, dans le fichier filtre.php, remplacer ces lignes:

if($filter->filter_options['title_position']=='inside'){
			$onClick='';
			if(empty($name)){
				$name=$filter->filter_name;
				$onClick=' onclick="this.value=\'\';"';
			}
			$html='<input '.$style.' name="filter_'.$filter->filter_namekey.'" '.$onBlur.' style="width:90%;" type="text" '.$onClick.' id="filter_text_'.$filter->filter_namekey.'" value="'.$name.'"/>';
		}else{
			$html = '<input '.$style.' name="filter_'.$filter->filter_namekey.'" '.$onBlur.' type="text" id="filter_text_'.$filter->filter_name.'" value="'.$name.'">';
		}

Et remplacer le par ceci:
if($filter->filter_name='SPECIAL'){
			$html = '<input type="hidden" '.$style.' name="filter_'.$filter->filter_namekey.'" '.$onBlur.' type="text" id="filter_'.$filter->filter_namekey.'_'.$divName.'" value="'.$name.'">';
			$html .= '> <a class="hikashop_filter_list" onclick="document.getElementById(\'filter_'.$filter->filter_namekey.'_'.$divName.'\').value=\'strat\'; document.forms[\'hikashop_filter_form_'.$divName.'\'].submit();">filter_'.$filter->filter_namekey.'</a>';
		}else{
			if($filter->filter_options['title_position']=='inside'){
				$onClick='';
				if(empty($name)){
					$name=$filter->filter_name;
					$onClick=' onclick="this.value=\'\';"';
				}
				$html='<input '.$style.' name="filter_'.$filter->filter_namekey.'" '.$onBlur.' style="width:90%;" type="text" '.$onClick.' id="filter_text_'.$filter->filter_namekey.'" value="'.$name.'"/>';
			}else{
				$html = '<input '.$style.' name="filter_'.$filter->filter_namekey.'" '.$onBlur.' type="text" id="filter_text_'.$filter->filter_name.'" value="'.$name.'">';
			}
		}

SPECIAL est le nom de votre filtre et n'oubliez pas de changer la valeur de value (qui est "strat")

Last edit: 11 years 5 months ago by Eliot.

Please Log in or Create an account to join the conversation.

  • Posts: 51
  • Thank you received: 0
11 years 5 months ago #106823

Merci eliot je vais essayer ça cet après midi et je vous tiendrais au courant.

Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 23
  • Thank you received: 0
9 years 4 months ago #209727

Bonjour,
Je suis tombé sur ce sujet et je me demandais si il était maintenant possible d'afficher le nombre de produits dans le module filtre?
Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 26159
  • Thank you received: 4028
  • MODERATOR
9 years 4 months ago #209738

Bonjour,

Malheureusement non ; comme indiqué par Eliot dans un message précédent, cela demande de faire un grand nombre de requête et cela ferait grandement ralentir le chargement des pages avec des filtres.
L'idée serait de changer une partie de la structure des filtres ou de mettre en place un système de cache.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

Time to create page: 0.109 seconds
Powered by Kunena Forum