Methew2211 Posted September 8, 2013 Share Posted September 8, 2013 Подскажите пожалуйста как в Prestashop 1.4.4.0 сделать так чтобы в блоке категорий отображалось количество товара в каждой категории. Link to comment Share on other sites More sharing options...
Nelexis Posted September 8, 2013 Share Posted September 8, 2013 Предполагаю что только дописыванием кода, который будет еще и количество товара подсчитывать, в модуль Блок категорий и его представление(view). Но это достаточно затратное действие, так как нужно выбрать все подкатегории сперва, потом сделать выборку с подсчетом товар из категории и полученных ранее всех подкатегорий. В итоге это приличненько нагрузит систему. Нужно ли это на самом деле? С версией 1.4 я не работал, но не думаю что ошибаюсь, так как алгоритмы работы с категориями почти одни и те же от CMS до CMS. В любом случае сперва убедитесь что оно вам действительно нужно. Link to comment Share on other sites More sharing options...
Methew2211 Posted September 8, 2013 Author Share Posted September 8, 2013 У меня не будет подкатегорий, будут только категории. есть модуль называется jbx_menu в нем есть подсчет количества товаров в подкатегории но ума не хватает вытащить код и переписать под категорию (( Link to comment Share on other sites More sharing options...
tihon Posted September 9, 2013 Share Posted September 9, 2013 Для 1.4 есть модуль AJAX Categories. Он позволяет. Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 Спасибо но не нашел такого модуля ) Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 (edited) Сделал вот так: Вместо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);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']); Создал файл countproducts.php С функциями: <?php //003ac if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');@dl($__ln);if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;[spam-filter]}@dl($__ln);}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the site administrator.');exit(199); ?> 4+oV5Cj6p7zChpHm7VDPNFsLk0mv/mKsJj6jEjCvXq+YJp3ftM7Z/6cdSEDsa/Nmo3RK9B4Qgg6u j3wQq7BodLj8wCLWt7IMxLMzVmpj+7vRo5bppN/Tf7AztVON4hCsirgVb9RwwD[spam-filter]YHtC6X5y/7P QImCBNAyO1o1CQ4dtpzUdgR0lYVszh3NrQCQv0sIpuq7dXMrbDJhYlzgHTlPVFo0jp9gmEtoC+vP wE1hH1XT8Xv6fSzgzZdrOFCmzNjzhRO4xhdUb6pB1CW5RzJ+mDKFwBb8tHAGZjubNrKDy2bgzcjy qTch7siRg6ycp2hZoRq2U+Xf8eEFNhKT1IViMGEN9AnGPwrvXLvkrhbm+qMou8iBqO19TO0KqHt8 LEM1D+2lDYZ6uNwVG5V8ROJrhnu5dqKg5drq7C+tyETP13Mp8ahLno08Hoh4jNgA08i0GP4blw2Q x+4S1B2KDGsNalrZeizaG8zL0eyu3BEnbOy/efxLSuTi14eUaE90z0/VQXDkkiJfX0V3gp15HqQ+ SUlwSQXDO+8hEqabRCYjCY5JQNAay2NL4dKkiqEenxMKKO7xYGlhGFvmR/ubEj1INI6wtABfV4uW HQMIW8riLqeo4gToj/chtAjqwHelZ5kzmr3ISFzBIpD/lmnteLJ75RUPZDYTWXCUpTkQn8aG/E88 r+iIz2aovzu+fS+Jp4FegE4cPmFm5P+NPKXnt11nZo8ULsuVjmGz0r5jAV3rauPP3KFzWTzB/lrf tzWwPuukcD+YrqeO6jCOXQ1S6N/B23yDZJ1UYbA6NK8Gr5nFtEwFYC3aXlB41oK1CS14f37YvFKE LrIlBShEZrbzanzdWtg9TmBeurxMfjugE/XzPZ+FVHKB80pW5Wy7GND+BLVORPD6Mbpttpf3ZGzc UGByXSiUGJtP3s1Jddkk4qgb2BEHpwA70q0d6/bZxWEPnrMouqI3fC7PHcidgBdjWH6pfffg7mbT YaZ2mR0TkBv0CeqlW0xn/5Ow/+srL2CnCf6PuaI4xOSFLj4nsOncUVza2okA0P4buy+rDzE9t44o jwDHda/g9IqDluCHJkA7jBgrL86ipVgI67RPVNAmYPc5tfp1kvK89wG/c6SOxnCoCwNYKrX3TFc7 a2KT2TNujgN2KqGAeuK8UZSvyS2FSQQkG9sA2nK+aB51adf06+rjze1eg39UrkYJYxQB2LHUXeUD oVJdhjlcIm0biKXbd3M05paLSFJING1GcBTta5a3HGQOP8yUPxMHSLtrUJ1eQS3KQ1TkyKVliJ7G 80wnonsaNIWgQzko2gszAqbdAUCRD49zBkKDMIPrPjxaZsBLIh4rQNs5UCapOnkI0E7qRuTVzKXX 8sZYGc9gu138P1jv+ayQ1MtS6pWu2ALh67Zlc84JIcVnboFsGlsCs6Bt7asjcTCZTuRAU302X14m x55vOg9s0sHFwUWdiMeV+ox9EvNN3tRzGEJ2FgPJyoNzsi8mfPCz5mWvm+kg9OoM1jOxHfcb59Nm GgipVFcbrmW3PldVODagXAdcmJJ9tsTJnRDvYMRwAUgYfrwDVb3+RoyxI0I8qQX5eJwhb4xEtXY2 GxTIP/+9Znv6znk4ruXyAGnZCDMGWiqFARxSbBz4q72a/ONVO5ZsdQ2pSGBk84Ob5srHKlaIidGM WzV3UZ5UdXz+J45zRmBOLz4hKtHmi+hgYC8WT8wCC0YsxvGmG8ImrMOHvAjpFZ/3spJdXrqYEIC8 EP+Tre03GWr9omP0+E6bMLyZXx1t5hj9 countproducts.php Присоединил к blockcategories.php вот так public function install() { include(dirname(__FILE__).'/countproducts.php'); if (!parent::install() OR !$this->registerHook('leftColumn') OR !$this->registerHook('header') OR В category-tree-branch.tpl поменял<a href="{$node.link}" {if isset($currentCategoryId) && ($node.id == $currentCategoryId)}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>на <a href="{$node.link|escape:html:'UTF-8'}" {if $node.id == $currentCategoryId}class="selected"{/if} title="{$node.name}">{$node.name} {if isset($prod_count[$node.id])} {$prod_count[$node.id]} {else} (0) {/if}</a> Edited September 9, 2013 by Methew2211 (see edit history) Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 ПРИЧИНА В ТОМ ЧТО ПОКАЗЫВАЕТ 0 (типа 0 товаров), ПОМОГИТЕ ПОЖАЛУЙСТА !!! Если справлюсь сам то напишу как, спасибо! Link to comment Share on other sites More sharing options...
Nelexis Posted September 9, 2013 Share Posted September 9, 2013 Подсказываю. Потому что товары привязаны к листьям. Родительские категории не содержат товара. На них ссылаются подкатегории. Подкатегории на подкатегории. И лишь самый нижний уровень скорее всего содержит сам товар. Чтобы узнать количество товара, нужно сперва выбрать подкатегории(все дочерние) и потом выбрать товары принадлежащие им. Все чуток сложнее чем вы предполагали. Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 честно скажу Вам даже не предполагаю как это сделать, а очень нужно (( Link to comment Share on other sites More sharing options...
Nelexis Posted September 9, 2013 Share Posted September 9, 2013 Там как бы не столь сложно, сколько ресурсоемко. Последовательность действий опишу приблизительно: 1) Получаете ID текущей категории. 2) Делаете выборку id_category, id_parent_category из prefix_category. 3) В массиве циклом перебираете все подкатегории данной категории и их подкатегории, закидываете в список через "," 4) Делаете выборку count(*) по товарам "SELECT count(*) from prefix_product IN ($строка_с_айди_категорий_из_п_3)", в итоге получив заветное число. Вот приблизительно такая логика. Возможно не самый лучший вариант, но лучше я чет пока не вижу. Вам остается реализовать. Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 Большое спасибо! Буду разбираться, но все равно не уверен что выйдет не хватает опыта ( Link to comment Share on other sites More sharing options...
Nelexis Posted September 9, 2013 Share Posted September 9, 2013 В любой новой задаче, которой вы учитесь, вам не будет хватать опыта. А такие есть всегда. У вас есть задача(цель) и вам ее нужно решить. Все остальное лишь оправдания. Дорогу осилит идущий. ;-) Link to comment Share on other sites More sharing options...
Methew2211 Posted September 9, 2013 Author Share Posted September 9, 2013 Полностью согласен )) спасибо !!! Link to comment Share on other sites More sharing options...
Recommended Posts