1) Включил статический кеш для списков категорий в шапке, в категории и в модуле категории.
Один файл кеша на все модули.
Глубина вложения категорий 2 (категория/подкатегория/товар)
На магазине с 2k+ товаров и 100 категорий, прирост скорости ощутимый.
2) Включил статический кеш для баннеров.
Число товаров выведено в отдельную ячейку "total".
Если нужно выводить в ссылке у подкатегорий, например в верхнем меню
(header.tpl строка 123) пишем вместо:
<?php if (isset($category['children'][$i])) { ?>
<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
<?php } ?>
Написать такое:
<?php if (isset($category['children'][$i])) { ?>
<?php $category['children'][$i]['name'] = ($category['children'][$i]['total']) ? $category['children'][$i]['name'] . ' (' . $category['children'][$i]['total'] . ')' : $category['children'][$i]['name']; ?>
<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
<?php } ?>
Если нужно добавить количество товаров во все дочерние категории:
catalog/model/catalog/category.php
найти:
$children_data[] = array(
'category_id' => $child['category_id'],
'name' => $child['name'],
'total' => $product_total,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
заменить на:
$children_data[] = array(
'category_id' => $child['category_id'],
'name' => ($prods2cat[$child['category_id']]) ? $child['name'] . ' (' . $prods2cat[$child['category_id']] . ')' : $child['name'],
'total' => $product_total,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
UPD: [111208 17:40] Поправил запросы.
Изменённые файлы:
111208.zip
Если используются описания у категорий дополнительно можно ограничить объём данных поменв в
model/catalog/category.php
Найти:
public function getCategories($parent_id = 0) {
$query = $this->db->query("SELECT * FROM
Заменить на:
public function getCategories($parent_id = 0) {
$query = $this->db->query("SELECT c.category_id, c.parent_id, cd.name, c.top, c.column FROM
П.С. Самоучка. Сильно не пинайте.