Jump to content
Cyril 74

Afficher le nombre de produits dans catégorie

Recommended Posts

bonjour,

 

voila, d'habitude je trouve la solution seul, dans cette très grande source de renseignements, et au passage, merci à tous pour vos nombreuses réponses et astuces pour chaque choses dans prestashop.

 

Cependant, la je n'est pas trouvé de réponse, je viens donc vers vous, demander votre aide.

Je cherche comment faire pour afficher le nombre de produits dans catégorie ainsi que les sous catégories.

 

Serait il possible aussi d'ajouter le nombre total de produits quelque parts sur le site?

 

merci d'avance.

 

Cyril

Share this post


Link to post
Share on other sites

Bonjour sous quelle version de prestashop es tu?

Quand tu parles d'affichage tu parles pour le front ou le back office?

tu peux voir le nombre de produit ici en front office sur la demo

Share this post


Link to post
Share on other sites

Tu parles donc du nombre de produit dans le menu?

 

Cela dépend du module catégorie utilisé je pense.

Share this post


Link to post
Share on other sites

Bonjour j'ai exactement le même soucis, si quelqu'un a une solution je suis preneur

Share this post


Link to post
Share on other sites

je n'est toujours pas trouvé la solution a ce fameux problème, mais si je trouve une solution, je viendrais la poster ici pour que ca serve à d'autres personnes

Share this post


Link to post
Share on other sites

Si ça peut aider ! Test sous Prestashop 1.4.5.1

 

Dans modules/blockcategories/blockcategories.php

 

Dans : public function getTree($resultParents, $resultIds, $maxDepth, $id_category = 1, $currentDepth = 0)

 

Trouvez :

 

return array('id' => $id_category, 'link' => $link->getCategoryLink($id_category, $resultIds[$id_category]['link_rewrite']),

'name' => $resultIds[$id_category]['name'], 'desc'=> $resultIds[$id_category]['description'],

'children' => $children);

 

 

Remplacez le code par celui-ci :

 


return array('id' => $id_category, 'link' => $link->getCategoryLink($id_category, $resultIds[$id_category]['link_rewrite']),
				 'name' => $resultIds[$id_category]['name'], 'desc'=> $resultIds[$id_category]['description'],
				 'children' => $children, 'product_count' => $resultIds[$id_category]['product_count']);

 

 

 

Dans : public function hookLeftColumn($params)

 

Trouvez la boucle :

 

foreach ($result as &$row)

{

$resultParents[$row['id_parent']][] = &$row;

$resultIds[$row['id_category']] = &$row;

}

 

 

Remplacez la par celle-ci :

 


		foreach ($result as &$row)
		{
			if($row['id_category'] != 1)
			{
			$result_product_count = Db::getInstance()->ExecuteS('
			SELECT COUNT(ac.`id_product`) as totalProducts
			FROM `'._DB_PREFIX_.'category_product` ac
			LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ac.`id_product`
			WHERE ac.`id_category` = '.$row['id_category'].' AND p.`active` = 1');
			$row['product_count'] = $result_product_count[0]['totalProducts'];
			}
			$resultParents[$row['id_parent']][] = &$row;
			$resultIds[$row['id_category']] = &$row;
		}

 

 

 

 

Dans themes/votre_theme/category-tree-branch.tpl

 

Rajouter ceci :

({$node.product_count})

 

après le lien :

<a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a>

Edited by ichigoK (see edit history)

Share this post


Link to post
Share on other sites

bonjour

 

Quelqu'un a testé ce que ichigok a noté ? Car pas envie de mettre le zouk sur mon site.

Merci en à lui en tt cas

Share this post


Link to post
Share on other sites

je viens de tester, ca ne fonctionne pas.

 

J'ai bien suivi ce que ichigok a inscrit mais il ne se passe rien (j'ai bien vider mon dossier compil de smarty)

J'ai eu une hésitation:

 

Dans themes/votre_theme/modules/blockcategories/category-tree-branch.tpl

 

Rajouter ceci après le lien :

({$node.product_count})

 

ce fichier tpl etait dans le dossier principal de mon theme (pas de dossier module)

et quel lien dont il parle ?

 

Merci

Share this post


Link to post
Share on other sites

je viens de tester, ca ne fonctionne pas.

 

J'ai bien suivi ce que ichigok a inscrit mais il ne se passe rien (j'ai bien vider mon dossier compil de smarty)

J'ai eu une hésitation:

 

 

 

ce fichier tpl etait dans le dossier principal de mon theme (pas de dossier module)

et quel lien dont il parle ?

 

Merci

 

 

 

Après le lien :

<a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a>

Share this post


Link to post
Share on other sites

Testé sur une 1.4.6.2

Ca fonctionne sans pb en suivant la modif d'IchigoK.

Share this post


Link to post
Share on other sites

Bonjour,

Cela ne fonctionne pas chez moi (1.4.8.2)

Share this post


Link to post
Share on other sites

J'ai essayé la solution dite plus haut, ça fonctionne sans vraiment fonctionner. J'ai bien le nombre de produit à côté des catégories (à part les enfant ou j'ai 0), mais j'ai surtout une répétition d'erreur comme quoi l'index product_count n'existe pas dans à la ligne ou il y a le return array(...., 'product_count' => $resultIds[$id_category]['product_count']);

 

Dans la table il n'y a pas de colonne product_count :/

 

Je suis sous la version 1.5.2

Share this post


Link to post
Share on other sites

j'ai essayé la solution propose et sa ne fonctionne pas PS 1.5.4.1 si il'ya une solution merci de m'oriente ... :)

Share this post


Link to post
Share on other sites

Bonjour, j'ai réussi à le faire avec le code sur ce site.

Version de PrestaShop: 1.5.5.0

 

Fichier : 

blockcategories.php ligne 180 : 

foreach ($result as &$row)
			{
				$resultParents[$row['id_parent']][] = &$row;
				$resultIds[$row['id_category']] = &$row;
			}

Changer en :

	foreach ($result as &$row)
			{
				if($row['id_category'] != 1)
				{
				$result_product_count = Db::getInstance()->ExecuteS('
				SELECT COUNT(ac.`id_product`) as totalProducts
				FROM `'._DB_PREFIX_.'category_product` ac
				LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ac.`id_product`
				WHERE ac.`id_category` = '.$row['id_category'].' AND p.`active` = 1');
				$row['product_count'] = $result_product_count[0]['totalProducts'];
				}
				$resultParents[$row['id_parent']][] = &$row;
				$resultIds[$row['id_category']] = &$row;
			}

Fichier : 

category-tree-branch.tpl.php ligne 27 : 

<a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if}
		title="{$node.desc|strip_tags|trim|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'} {$node.nombreProduits|escape:'htmlall':'UTF-8'}<span class='NombreProduits'>({$node.product_count})</span></a>

Rajouter : 

<span class='NombreProduits'>({$node.product_count})</span>

Et pour un peu de style fichier css : 

.NombreProduits {position: absolute;left:155px}

Voila, Cdt.

Share this post


Link to post
Share on other sites

Bonjour Paulo,

je cherche ça depuis longtemps !

J'ai suivi tes instructions mais rien ?

Tu as un site où on peut le voir ?

Tu mets où le style css ?

Merci d'avance.

Share this post


Link to post
Share on other sites
 

Bonjour,

j'ai encore essayé.Rien, Modifié dans modules/catégories/blockcategorie.php et modules/catégories/category-tree-branch.tpl.

Où est la page category-tree-branch.tpl.php svp ?

Merci

 

 
CTRL + Q to Enable/Disable GoPhoto.it

Share this post


Link to post
Share on other sites

Bonjour à tous,

J'ai essayé la dernière manip. J'ai bien des paranthèses qui apparaissent à coté des intéitulés des catégories dans le bloc catégories, laissant penser que les modifications sont bien prises en charges, cependant, il n'y a aucun chiffre dans les paranthèses.

Ceci étant dis, il y a une manip que je n'ai pas faite, c'est ce copier le code dans le css car, je ne sais pas où le mettre.

J'ai bien regardé dans le bloccategories.css, mais même là, je ne vois pas où le mettre.

 

Serait-il possible d'avoir une petite précision? Merci beaucoup

Share this post


Link to post
Share on other sites

Bonjour Jgd24,

voilà comment j'ai résolu le problème (avec de l'aide) ;
Ouvrir modules/blockcatégories/blockcategories.ph

changer le code comme suit :

<?php
/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

if (!defined('_PS_VERSION_'))
	exit;

class BlockCategories extends Module
{
	public function __construct()
	{
		$this->name = 'blockcategories';
		$this->tab = 'front_office_features';
		$this->version = '2.0';
		$this->author = 'PrestaShop';

		parent::__construct();

		$this->displayName = $this->l('Categories block');
		$this->description = $this->l('Adds a block featuring product categories.');
	}

	public function install()
	{
		if (!parent::install() ||
			!$this->registerHook('leftColumn') ||
			!$this->registerHook('footer') ||
			!$this->registerHook('header') ||
			// Temporary hooks. Do NOT hook any module on it. Some CRUD hook will replace them as soon as possible.
			!$this->registerHook('categoryAddition') ||
			!$this->registerHook('categoryUpdate') ||
			!$this->registerHook('categoryDeletion') ||
			!$this->registerHook('actionAdminMetaControllerUpdate_optionsBefore') ||
			!$this->registerHook('actionAdminLanguagesControllerStatusBefore') ||
			!Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', 4) ||
			!Configuration::updateValue('BLOCK_CATEG_DHTML', 1))
			return false;
		return true;
	}

	public function uninstall()
	{
		if (!parent::uninstall() ||
			!Configuration::deleteByName('BLOCK_CATEG_MAX_DEPTH') ||
			!Configuration::deleteByName('BLOCK_CATEG_DHTML'))
			return false;
		return true;
	}

	public function getContent()
	{
		$output = '<h2>'.$this->displayName.'</h2>';
		if (Tools::isSubmit('submitBlockCategories'))
		{
			$maxDepth = (int)(Tools::getValue('maxDepth'));
			$dhtml = Tools::getValue('dhtml');
			$nbrColumns = Tools::getValue('nbrColumns', 4);
			if ($maxDepth < 0)
				$output .= '<div class="alert error">'.$this->l('Maximum depth: Invalid number.').'</div>';
			elseif ($dhtml != 0 && $dhtml != 1)
				$output .= '<div class="alert error">'.$this->l('Dynamic HTML: Invalid choice.').'</div>';
			else
			{
				Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', (int)($maxDepth));
				Configuration::updateValue('BLOCK_CATEG_DHTML', (int)($dhtml));
				Configuration::updateValue('BLOCK_CATEG_NBR_COLUMN_FOOTER', $nbrColumns);
				Configuration::updateValue('BLOCK_CATEG_SORT_WAY', Tools::getValue('BLOCK_CATEG_SORT_WAY'));
				Configuration::updateValue('BLOCK_CATEG_SORT', Tools::getValue('BLOCK_CATEG_SORT'));

				$this->_clearBlockcategoriesCache();
				$output .= '<div class="conf confirm">'.$this->l('Settings updated').'</div>';
			}
		}
		return $output.$this->displayForm();
	}

	public function displayForm()
	{
		return '
		<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
			<fieldset>
				<legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
				<label>'.$this->l('Maximum depth').'</label>
				<div class="margin-form">
					<input type="text" name="maxDepth" value="'.(int)Configuration::get('BLOCK_CATEG_MAX_DEPTH').'" />
					<p class="clear">'.$this->l('Set the maximum depth of sublevels displayed in this block (0 = infinite)').'</p>
				</div>
				<label>'.$this->l('Dynamic').'</label>

				<div class="margin-form">
					<input type="radio" name="dhtml" id="dhtml_on" value="1" '.(Tools::getValue('dhtml', Configuration::get('BLOCK_CATEG_DHTML')) ? 'checked="checked" ' : '').'/>
					<label class="t" for="dhtml_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
					<input type="radio" name="dhtml" id="dhtml_off" value="0" '.(!Tools::getValue('dhtml', Configuration::get('BLOCK_CATEG_DHTML')) ? 'checked="checked" ' : '').'/>
					<label class="t" for="dhtml_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
					<p class="clear">'.$this->l('Activate dynamic (animated) mode for sublevels.').'</p>
				</div>
				<label>'.$this->l('Sort').'</label>

				<div class="margin-form">
					<input type="radio" name="BLOCK_CATEG_SORT" id="sort_on" value="0" '.(!Tools::getValue('BLOCK_CATEG_SORT', Configuration::get('BLOCK_CATEG_SORT')) ? 'checked="checked" ' : '').'/>
					<label class="t" for="sort_on"> <img src="../modules/'.$this->name.'/sort_number.png" alt="'.$this->l('Enabled').'" title="'.$this->l('By position').'" />'.$this->l('By position').'</label>
					<input type="radio" name="BLOCK_CATEG_SORT" id="sort_off" value="1" '.(Tools::getValue('BLOCK_CATEG_SORT', Configuration::get('BLOCK_CATEG_SORT')) ? 'checked="checked" ' : '').'/>
					<label class="t" for="sort_off"> <img src="../modules/'.$this->name.'/sort_alphabet.png" alt="'.$this->l('Disabled').'" title="'.$this->l('By name').'" />'.$this->l('By name').'</label> -
					<select name="BLOCK_CATEG_SORT_WAY">
						<option value="0" '.(!Tools::getValue('BLOCK_CATEG_SORT_WAY', Configuration::get('BLOCK_CATEG_SORT_WAY')) ? 'selected="selected" ' : '').'>'.$this->l('Ascending').'</option>
						<option value="1" '.(Tools::getValue('BLOCK_CATEG_SORT_WAY', Configuration::get('BLOCK_CATEG_SORT_WAY')) ? 'selected="selected" ' : '').'>'.$this->l('Descending').'</option>
					</select>
				</div>
				<label>'.$this->l('How many footer columns would you like?').'</label>
				<div class="margin-form">
					<input type="text" name="nbrColumns" value="'.(int)Configuration::get('BLOCK_CATEG_NBR_COLUMN_FOOTER').'" />
					<p class="clear">'.$this->l('Define the number of footer columns.').'</p>
				</div>
				<center><input type="submit" name="submitBlockCategories" value="'.$this->l('Save').'" class="button" /></center>
			</fieldset>
		</form>';
	}

	public function getTree($resultParents, $resultIds, $maxDepth, $id_category = null, $currentDepth = 0)
	{
		if (is_null($id_category))
			$id_category = $this->context->shop->getCategory();
                
                $category = new CategoryCore($id_category);

		$children = array();
		if (isset($resultParents[$id_category]) && count($resultParents[$id_category]) && ($maxDepth == 0 || $currentDepth < $maxDepth))
			foreach ($resultParents[$id_category] as $subcat)
				$children[] = $this->getTree($resultParents, $resultIds, $maxDepth, $subcat['id_category'], $currentDepth + 1);
		if (!isset($resultIds[$id_category]))
			return false;
		$return = array('id' => $id_category, 'link' => $this->context->link->getCategoryLink($id_category, $resultIds[$id_category]['link_rewrite']),
					 'name' => $resultIds[$id_category]['name'], 'desc'=> $resultIds[$id_category]['description'],
					 'children' => $children, 'products' => $category->getProducts($this->context->customer->id_lang, 1, 1000000, null, null, true));
		return $return;
	}

	public function hookLeftColumn($params)
	{	
		if (!$this->isCached('blockcategories.tpl', $this->getCacheId()))
		{
			// Get all groups for this customer and concatenate them as a string: "1,2,3..."
			$groups = implode(', ', Customer::getGroupsStatic((int)$this->context->customer->id));
			$maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH');
			if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
				SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
				FROM `'._DB_PREFIX_.'category` c
				INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = '.(int)$this->context->language->id.Shop::addSqlRestrictionOnLang('cl').')
				INNER JOIN `'._DB_PREFIX_.'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = '.(int)$this->context->shop->id.')
				WHERE (c.`active` = 1 OR c.`id_category` = '.(int)Configuration::get('PS_HOME_CATEGORY').')
				AND c.`id_category` != '.(int)Configuration::get('PS_ROOT_CATEGORY').'
				'.((int)$maxdepth != 0 ? ' AND `level_depth` <= '.(int)$maxdepth : '').'
				AND c.id_category IN (SELECT id_category FROM `'._DB_PREFIX_.'category_group` WHERE `id_group` IN ('.pSQL($groups).'))
				ORDER BY `level_depth` ASC, '.(Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'cs.`position`').' '.(Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC')))
				return;

			$resultParents = array();
			$resultIds = array();

			foreach ($result as &$row)
			{
				$resultParents[$row['id_parent']][] = &$row;
				$resultIds[$row['id_category']] = &$row;
			}

			$blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));
			unset($resultParents, $resultIds);

			$id_category = (int)Tools::getValue('id_category');
			$id_product = (int)Tools::getValue('id_product');
			
			$isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false);
			if (Tools::isSubmit('id_category'))
			{
				$this->context->cookie->last_visited_category = $id_category;
				$this->smarty->assign('currentCategoryId', $this->context->cookie->last_visited_category);
			}
			if (Tools::isSubmit('id_product'))
			{
				if (!isset($this->context->cookie->last_visited_category)
					|| !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $this->context->cookie->last_visited_category)))
					|| !Category::inShopStatic($this->context->cookie->last_visited_category, $this->context->shop))
				{
					$product = new Product($id_product);
					if (isset($product) && Validate::isLoadedObject($product))
						$this->context->cookie->last_visited_category = (int)$product->id_category_default;
				}
				$this->smarty->assign('currentCategoryId', (int)$this->context->cookie->last_visited_category);
			}
			$this->smarty->assign('blockCategTree', $blockCategTree);

			if (file_exists(_PS_THEME_DIR_.'modules/blockcategories/blockcategories.tpl'))
				$this->smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories/category-tree-branch.tpl');
			else
				$this->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl');
			$this->smarty->assign('isDhtml', $isDhtml);
		}
		$display = $this->display(__FILE__, 'blockcategories.tpl', $this->getCacheId());
		return $display;
	}

	protected function getCacheId($name = null)
	{
		parent::getCacheId($name);

		$groups = implode(', ', Customer::getGroupsStatic((int)$this->context->customer->id));
		$id_product = (int)Tools::getValue('id_product', 0);
		$id_category = (int)Tools::getValue('id_category', 0);
		$id_lang = (int)$this->context->language->id;
		return 'blockcategories|'.(int)Tools::usingSecureMode().'|'.$this->context->shop->id.'|'.$groups.'|'.$id_lang.'|'.$id_product.'|'.$id_category;
	}

	public function hookFooter($params)
	{
		// Get all groups for this customer and concatenate them as a string: "1,2,3..."
		if (!$this->isCached('blockcategories_footer.tpl', $this->getCacheId()))
		{
			$maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH');
			$groups = implode(', ', Customer::getGroupsStatic((int)$this->context->customer->id));
			if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
				SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
				FROM `'._DB_PREFIX_.'category` c
				'.Shop::addSqlAssociation('category', 'c').'
				LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = '.(int)$this->context->language->id.Shop::addSqlRestrictionOnLang('cl').')
				LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`)
				WHERE (c.`active` = 1 OR c.`id_category` = 1)
				'.((int)($maxdepth) != 0 ? ' AND `level_depth` <= '.(int)($maxdepth) : '').'
				AND cg.`id_group` IN ('.pSQL($groups).')
				ORDER BY `level_depth` ASC, '.(Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'category_shop.`position`').' '.(Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC')))
				return;
			$resultParents = array();
			$resultIds = array();

			foreach ($result as &$row)
			{
				$resultParents[$row['id_parent']][] = &$row;
				$resultIds[$row['id_category']] = &$row;
			}
			//$nbrColumns = Configuration::get('BLOCK_CATEG_NBR_COLUMNS_FOOTER');
			$nbrColumns = Configuration::get('BLOCK_CATEG_NBR_COLUMN_FOOTER');
			if (!$nbrColumns)
				$nbrColumns = 3;
			$numberColumn = abs(count($result) / $nbrColumns);
			$widthColumn = floor(100 / $nbrColumns);
			$this->smarty->assign('numberColumn', $numberColumn);
			$this->smarty->assign('widthColumn', $widthColumn);

			$blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));
			unset($resultParents, $resultIds);

			$isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false);

			$id_category = (int)Tools::getValue('id_category');
			$id_product = (int)Tools::getValue('id_product');

			if (Tools::isSubmit('id_category'))
			{
				$this->context->cookie->last_visited_category = $id_category;
				$this->smarty->assign('currentCategoryId', $this->context->cookie->last_visited_category);
			}
			if (Tools::isSubmit('id_product'))
			{
				if (!isset($this->context->cookie->last_visited_category) || !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $this->context->cookie->last_visited_category))))
				{
					$product = new Product($id_product);
					if (isset($product) && Validate::isLoadedObject($product))
						$this->context->cookie->last_visited_category = (int)($product->id_category_default);
				}
				$this->smarty->assign('currentCategoryId', (int)($this->context->cookie->last_visited_category));
			}
			$this->smarty->assign('blockCategTree', $blockCategTree);

			if (file_exists(_PS_THEME_DIR_.'modules/blockcategories/blockcategories_footer.tpl'))
				$this->smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories/category-tree-branch.tpl');
			else
				$this->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl');
			$this->smarty->assign('isDhtml', $isDhtml);
		}
		$display = $this->display(__FILE__, 'blockcategories_footer.tpl', $this->getCacheId());

		return $display;
	}

	public function hookRightColumn($params)
	{
		return $this->hookLeftColumn($params);
	}

	public function hookHeader()
	{
		$this->context->controller->addJS(_THEME_JS_DIR_.'tools/treeManagement.js');
		$this->context->controller->addCSS(($this->_path).'blockcategories.css', 'all');
	}

	private function _clearBlockcategoriesCache()
	{
		$this->_clearCache('blockcategories.tpl');
		$this->_clearCache('blockcategories_footer.tpl');
	}

	public function hookCategoryAddition($params)
	{
		$this->_clearBlockcategoriesCache();
	}

	public function hookCategoryUpdate($params)
	{
		$this->_clearBlockcategoriesCache();
	}

	public function hookCategoryDeletion($params)
	{
		$this->_clearBlockcategoriesCache();
	}

	public function hookActionAdminMetaControllerUpdate_optionsBefore($params)
	{
		$this->_clearBlockcategoriesCache();
	}
}

Modifications lignes 146 et 156.

Puis

Ouvrir theme/default/category-tree-branch.tpl

changer le code comme suit :

{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}

<li {if isset($last) && $last == 'true'}class="last"{/if}>
	<a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if}
		title="{$node.desc|strip_tags|trim|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'} ({$node.products})</a>
	{if $node.children|@count > 0}
		<ul>
		{foreach from=$node.children item=child name=categoryTreeBranch}
			{if $smarty.foreach.categoryTreeBranch.last}
				{include file="$branche_tpl_path" node=$child last='true'}
			{else}
				{include file="$branche_tpl_path" node=$child last='false'}
			{/if}
		{/foreach}
		</ul>
	{/if}
</li>

modifications ligne 28.

Ca fonctionne sur ce site : http://www.madagemstones.com

Share this post


Link to post
Share on other sites

Ca y est, j'ai réussi.

Au cas où, si ca peut aider quelqu'un, j'ai utilisé la méthode de paulo, avec laquelle j'ai un peu galéré (peut-être la différence de version - je sous sous 1.5.6), et voilà ce que j'ai :

 

1. Contenu complet du CODE de mon fichier category.tree.branch.tpl (qui se trouve dans mon thème/modules/blockcategories) :

 

<li {if isset($last) && $last == 'true'}class="last"{/if}>
    <a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if}
        title="{$node.desc|strip_tags|trim|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}
        {if $count}({$node.nbr}){/if}
        </a>
    
    {if $node.children|@count > 0}
        <ul>
        {foreach from=$node.children item=child name=categoryTreeBranch}
            {if $smarty.foreach.categoryTreeBranch.last}
                {include file="$branche_tpl_path" node=$child last='true'}
            {else}
                {include file="$branche_tpl_path" node=$child last='false'}
            {/if}
        {/foreach}
        </ul>
    {/if}
</li>

 

2. Dans le fichier blockcategories.php (qui se trouve dans racine/modules/blockcategories), j'ai laissé le fichier d'origine.

 

3. Concernant blockcategories.css qui se trouve dans montheme/css/modules/blockcategories, j'ai inséré la ligne de Paulo en après la ligne 9 (en créant donc une ligne 10) en changeant le point du début par un dièse ce qui donne :

 

#NombreProduits {position: absolute;left:155px}
 

Et ca fonctionne nickel.

 

Si celà peut aider. Bon courage à tous.

Share this post


Link to post
Share on other sites

Bonjour,

 

Désolé je n'avais pas suivis la suite de la conversation du coup je n'ai pas pu aider.

Je recherche cette méthode pour une multiboutique, quelqu'un connait la variable qui permet de connaitre l'id du shop en cours ?

Merci

Share this post


Link to post
Share on other sites

J'ai trouvé ma réponse et j'ai adapté mon code.

Il suffit de mofidier la requète SQL, changer le from vers la table product_shop et renseginer le shop dans une clause WHERE.

				$result_product_count = Db::getInstance()->ExecuteS('
				SELECT COUNT(ac.`id_product`) as totalProducts
				FROM `'._DB_PREFIX_.'category_product` ac
				LEFT JOIN `'._DB_PREFIX_.'product_shop` p ON p.`id_product` = ac.`id_product`
				WHERE ac.`id_category` = '.$row['id_category'].' AND p.`active` = 1 AND p.`id_shop` ='.(int)$this->context->shop->id);
				$row['product_count'] = $result_product_count[0]['totalProducts'];

Voila si vous avez besoin d'aide, n'hésitez pas à me demander.

CDT

Share this post


Link to post
Share on other sites

Merci à tous pour ces recherches...

 

Je touche au but, mais il me manque cependant une dernière info...

 

J'ai fait tout ce qu'avait noté jgd24 mais je ne sais pas ou mettre ma ligne du css.

 

#NombreProduits {position: absolute;left:155px}

 

Je n'ai pas de fichier blockcategories.css d'ailleurs dans montheme/css/modules/ je n'ai pas de repertoire blockcategories

 

Quequ'un peut-il m'éclairer?

 

 

ma version: Prestashop 1.5.6.2

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More