Skocz do zawartości


Zdjęcie

Ilość produktów obok nazwy kategorii


  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Peebuls

Peebuls

    Użytkownik

  • Members
  • PipPip
  • 42 postów

Napisano 01 czerwiec 2016 - 16:03

Witam,

 

Czy istnieje jakiś moduł pozwalający pokazywać ilość produktów w danej kategorii w menu? Udało mi się znaleźć "Categories block with number of products v1.1 - by MyPresta.eu" jednak mam z nim problem. Wyświetla ilość produktów jednak gdy ilość produktów w danej kategorii się zmieni moduł tego nie uwzględnia - dalej wyświetla starą liczbę. Tak samo przy zmianie nazwy danej kategorii... Może ktoś korzystał i jest w stanie rozwiązać ten problem albo polecić coś innego? 

 

Wersja Presty 1.6

 

Pozdrawiam



#2 ircykk

ircykk

    Administrator

  • Administrators
  • 5000 postów
  • PrestaShop:1.5, 1.6

Napisano 04 czerwiec 2016 - 17:04

Pewnie cache, podeślij moduł to zobaczymy co da się zrobić.



#3 Peebuls

Peebuls

    Użytkownik

  • Members
  • PipPip
  • 42 postów

Napisano 07 czerwiec 2016 - 10:39

Dzięki za odpowiedź. Moduł można pobrać tutaj: https://mypresta.eu/...-produktow.html



#4 ircykk

ircykk

    Administrator

  • Administrators
  • 5000 postów
  • PrestaShop:1.5, 1.6

Napisano 08 czerwiec 2016 - 17:09

W blockcategories2.php zamień metodę:


	public function hookLeftColumn($params){	
		if (true)
		{
			// 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_CATEG2_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_CATEG2_SORT') ? 'cl.`name`' : 'cs.`position`').' '.(Configuration::get('BLOCK_CATEG2_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_CATEG2_MAX_DEPTH'));
			unset($resultParents, $resultIds);

			$id_category = (int)Tools::getValue('id_category');
			$id_product = (int)Tools::getValue('id_product');
			
			$isDhtml = (Configuration::get('BLOCK_CATEG2_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/blockcategories2/blockcategories2.tpl'))
				$this->smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories2/category-tree-branch2.tpl');
			else
				$this->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories2/category-tree-branch2.tpl');
			$this->smarty->assign('isDhtml', $isDhtml);
		}
		$display = $this->display(__FILE__, 'blockcategories2.tpl');
		return $display;
	}

Wyłączy to cache i powinno działać ale będzie to rozwiązanie słabsze ze względu na wydajność. Lepsze by było dodanie hooka do edycji kategorii/ilości a w nim czyszczenie cache modułu ale to już więcej zabawy.



#5 Peebuls

Peebuls

    Użytkownik

  • Members
  • PipPip
  • 42 postów

Napisano 09 czerwiec 2016 - 11:08

Działa. Przeogromne dzięki!!






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych

Hosting zapewnia: Hekko.pl