Afficher les catégories parentes sur le produit

  • Posts: 21
  • Thank you received: 0
11 years 5 months ago #152547

Bonjour,

j'ai des produits classés dans des catégories organisées de façon à faire un menu à entrées multiples. Cela permet aux utilisateurs d'arriver à un même produit suivant plusieurs logiques différentes.
Je cherche à afficher les noms des catégories sur la fiche du produit de façon à ce que l'utilisateur puisse ensuite trouver d'autres produits liés à sa demande même s'ils sont classés suivant une autre logique. J'imagine que je peux les récupérer quelque part puisque c'est ce qui s'affiche dans l'interface d'administration, mais je ne sais pas dans quelle variable chercher.

Merci d'avance pour votre aide.
Alex

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

  • Posts: 13201
  • Thank you received: 2322
11 years 5 months ago #152554

Bonjour,

Pour afficher les produits liés, vous pouvez ajouter des produits dans la partie "related" sur la page d'édition d'un produit.
Puis afficher le module "related products" sur la page produit.

Sinon, pour avoir les catégories vous aurez besoin de ce genre de code:

<?php
$productClass = hikashop_get('class.product');
$categoryClass = hikashop_get('class.category');
$categoryIds = $productClass->getCategories($this->element->product_id);
foreach($categoryIds as $category){
	$categoryInfos = $categoryClass->get($category);
	var_dump($categoryInfos->category_name);
}
?>

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

  • Posts: 21
  • Thank you received: 0
11 years 5 months ago #152632

Merci beaucoup !
Je suis reparti de ce code et j'ai été cherché les catégories parentes pour tout afficher, ça marche nickel. Je butte betement sur l'affichage du lien :

	foreach($categoryIds as $category) {
	    $categoryInfos = $categoryClass->get($category);
	    //echo $categoryInfos->category_name;

	    //gérer les parents
	    $parents = $categoryClass->getParents($category);
	    $html = array();

	    foreach($parents as $parent) {
		echo $parent->category_type.' - '.$parent->category_name.' // ';
		if($parent->category_type != 'product' && $parent->category_type != 'vendor' && $parent->category_type != 'root')
		continue;
		$link = ?????;
		$html[] = '<a href="'.$link.'">'.$parent->category_name.'</a>';
	    }

        }

C'est pour la variable $link, je ne sais pas comment la gérer. Ca fait trop longtemps que je n'ai pas fait ce genre de truc et je bloque complètement ! Merci d'avance pour l'aide.

Alex.

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

  • Posts: 13201
  • Thank you received: 2322
11 years 5 months ago #152653

Le lien vers la catégorie va dépendre de vos menus.
Il faut un menu qui liste les catégories (meme si c'est un menu caché, il est nécessaire).

Après selon l'url que vous avez à partir de ce menu lorsque vous allez dans une catégorie, réutilisez cette url et adaptez la pour avoir le lien voulu.

Ex:
Menu de listing de catégories retourne le lien:

monsite.fr/categories/macategorie

Vous aurez donc besoin d'un code du genre:
<?php
$productClass = hikashop_get('class.product');
$categoryClass = hikashop_get('class.category');
$categoryIds = $productClass->getCategories($this->element->product_id);
foreach($categoryIds as $category){
	$categoryInfos = $categoryClass->get($category);
	echo '<a href="/categories/'.$categoryInfos->category_alias.'">'.$categoryInfos->category_name.'</a>';
}
?>

The following user(s) said Thank You: Alexandre

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

  • Posts: 21
  • Thank you received: 0
11 years 5 months ago #152781

Bonsoir Xavier,

Merci beaucoup pour votre aide. Le code fonctionne grâce à vos indications. Il me manque seulement l'alias pour que le lien soit nickel mais comme j'ai bien l'id de la catégorie, le lien fonctionne, c'est juste pour la beauté du sport ! En fait je me demande si hickashop_get('class.category') permet de récupérer l'alias. voici mon code finale :

	<?php
	//AFFICHER LES CATEGORIES DU PRODUIT
	$productClass = hikashop_get('class.product');
	$categoryClass = hikashop_get('class.category');
	$categoryIds = $productClass->getCategories($this->element->product_id);

	foreach($categoryIds as $category) {
	    $categoryInfos = $categoryClass->get($category);
	    $parents = $categoryClass->getParents($category);
	    $html = array();

	    foreach($parents as $parent) {
		if($parent->category_type != 'root' && $parent->category_type != 'vendor' && $parent->category_id != '2')
		    $html[] = '<a href="catalogue/category/'.$parent->category_id.'-'.$parent->category_alias.'">'.$parent->category_name.'</a>';
	    }
	    if(empty($html)) {
		$parent = end($parents);
		$html[] = '<a href="catalogue/category/'.$parent->category_id.'-'.$parent->category_alias.'">'.$parent->category_name.'</a>';
	    }
	    echo implode(' / ',$html);
	    echo '<br/>';
        }
	?>

tout fonctionne nickel sauf $parent->category_alias qui est vide.
Quoiqu'il en soit, ça marche !!

Merci encore,
Alex

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

  • Posts: 84315
  • Thank you received: 13706
  • MODERATOR
11 years 5 months ago #152864

Bonjour,

Si category_alias est vide, c'est que vous n'avez pas rempli le champs alias de votre catégorie. Vous pouvez faire comme cela pour générer automatiquement un alias à partir du nom de la catégorie:

$categoryInfos->addAlias($parent);
echo $parent->alias;

The following user(s) said Thank You: Alexandre

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

Time to create page: 0.059 seconds
Powered by Kunena Forum