При внимательном изучении шаблона модуля по адресу
catalogviewthemedefaulttemplatemodulecategory.tpl
была обнаружена интересная (и непонятная мне) особенность вывода. Дело в том, что ссылки на категории, которые не являются дочерними для текущей главной, скрываются на странице через свойство display: none; вместо того, чтобы просто не выводить их на страницу.Зайдите на страницу http://demo15.myopen...gory&path=25_28
и посмотрите код:
<div class="box-category">
<ul>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=20">Компьютеры (13)</a>
<ul>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=20_26"> - PC (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=20_27"> - Mac (1)</a>
</li>
</ul>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=18">Ноутбуки (5)</a>
<ul>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=18_46"> - Macs (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=18_45"> - Windows (0)</a>
</li>
</ul>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25" class="active">Компоненты (2)</a>
<ul>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25_32"> - Веб-камеры (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25_28" class="active"> - Мониторы (2)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25_29"> - Мышки (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25_30"> - Принтеры (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=25_31"> - Сканеры (0)</a>
</li>
</ul>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=57">Планшеты (1)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=17">Програмное обеспечение (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=24">Телефоны и PDA (3)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=33">Камеры (2)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34">MP3 Плееры (4)</a>
<ul>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_43"> - test 11 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_44"> - test 12 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_47"> - test 15 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_48"> - test 16 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_49"> - test 17 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_50"> - test 18 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_51"> - test 19 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_52"> - test 20 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_53"> - test 21 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_54"> - test 22 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_55"> - test 23 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_56"> - test 24 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_38"> - test 4 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_37"> - test 5 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_39"> - test 6 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_40"> - test 7 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_41"> - test 8 (0)</a>
</li>
<li>
<a href="http://demo15.myopencart.ru/index.php?route=product/category&path=34_42"> - test 9 (0)</a>
</li>
</ul>
</li>
</ul>
</div>
Несмотря на это, пользователю выводятся только дочерние ссылки активной категории Компоненты (хотя в коде есть все ссылки на подкатегории главной категории Компьютеры (PC/Mac), Ноутбуки (Macs/Windows) и так далее ):
Мне кажется логичным было бы их не выводить вообще (хотя возможно я чего-то не понимаю, но вроде бы здесь явно лишняя работа), ибо их и так не видно (раз уж выводятся дочерние ссылки на подкатегории только для активной категории) - это и для поисковиков нехорошо (представьте, что на каждой странице вашего крупного магазина грузится сотня ссылок, которые потом непонятно зачем просто скрываются), и чисто с точки зрения написания нормального кода не имеет смысла - зачем выводить лишнюю информацию, чтобы потом ее скрыть?
Поэтому предлагаю использовать следующее простое решение (или даже ввести его в сборку, ИМХО в текущем виде модуль категорий выполняет лишнюю работу):
В вышеуказанном файле category.tpl 13 строку:
<?php if ($category['children']) { ?>
предлагается заменить на это:
<?php if (($category['children']) && ($category['category_id'] == $category_id)) { ?>
При этом будет выполнятся проверка на то, являются ли подкатегории потомками для текущей активной категории, и если это не так, то ничего выводиться не будет, в отличии от стандартного модуля, где ссылки выводятся, а потом скрываются.P.S. Все это касается версии 1.5.2.1