[Помогите] жуткие тормоза на сайте (Sellya Theme)

Тема в разделе "OpenCart", создана пользователем sonicking, 8 июн 2015.

  1. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    То-то я смотрю, что в шаблоне не выводиться то, что вытягивается из базы в контроллере, а вы говорите, что ничего не редактировали :Smile:
    Но тормоза это всё равно не объясняет.
    Выложите сюда ваш контроллер home.
     
  2. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
  4. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ничего лишнего, кроме вывода всего дерева категори с количеством товаров и производителей я та не вижу. Думаю, дело таки в этом.
     
  6. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    я так понимаю править надо это?

    $this->data['manufacturers'][] = array(
    'name' => $result['name'],
    'image' => $this->model_tool_image->resize($image, 80, 80),
    'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
    );
    }

    $this->data['categories'] = array();

    $categories = $this->model_catalog_category->getCategories(0);

    foreach ($categories as $category) {
    if ($category) {
    $children_data = array();

    $children = $this->model_catalog_category->getCategories($category['category_id']);

    foreach ($children as $child) {
    $data = array(
    'filter_category_id' => $child['category_id'],
    'filter_sub_category' => true
    );

    $product_total = $this->model_catalog_product->getTotalProducts($data);

    $children_data[] = array(
    'name' => $child['name'] . ' (' . $product_total . ')',
    'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
    );
    }
     
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Да. Только строки у вас на одну смещены, в вашем случае удалять надо строки:
    38 - 54, 62
    16, 18 - 30
     
    sonicking нравится это.
  8. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    БОООООООЛЬШОЕ СПАСИБО!!! ++++++++++++++++++++++++
    удалил - заметно быстрее стала открываться главная как мне кажется, а вот категории по моему так же долго и открываются :о(
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Главная действительно заметно быстрее теперь открывается.
    А на категории оно повлиять и не должно было, это ж контроллер главной.
    Категории нужно отдельно править. Для начала можно поудалять везде вызовы getTotalProducts и обработку результатов этих вызовов. Этот подсчёт товаров в категориях одна из основных причин тормозов, если товаров много.
     
  10. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    если я правильно понимаю, ковырять надо category.php?
    там есть два вызова getTotalProducts
    $product_total = $this->model_catalog_product->getTotalProducts($data);
    их закомментировать/удалить или ещё где то глубже последствия от этих вызовов?
     
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Да, всё верно. И ещё найти места, где используется переменная $product_total и поубирать её оттуда.
     
  12. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    если я комментирую $product_total = $this->model_catalog_product->getTotalProducts($data);

    переменная $product_total в category.php встречается ещё два раза:
    'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
    заменяю на
    'name' => $result['name'] . ($this->config->get('config_product_count') ? '' : ''),
    и $pagination->total = $product_total;
    это комментирую

    пропадает пагинация...
     
  13. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Тут можно оставить просто 'name' => $result['name']

    Это уже другая переменная, в ней количество товаров в текущей категории. Её трогать не надо.