DenKuzmin Posted November 1, 2021 Share Posted November 1, 2021 Добавил вывод опций в каилог. Вывожу их вот ик: Спойлер <div class="options"> <?php if ($product['options']) { ?> <div id="option_<?php echo $product['product_id']; ?>"> <?php foreach ($product['options'] as $option) { ?> <?php if ($option['type'] == 'radio') { ?> <?php if ($option['option_id'] == '11') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php foreach ($option['product_option_value'] as $option_value) { ?> <div class="option-value hidden"> <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" data-optprice="<?php echo number_format(preg_replace("/\..+$/", "", $option_value['price']), 0, '', '') ?>" /> <label for="option-value-<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $option_value['name']; ?>"> <?php echo $option_value['name']; ?> </label> </div> <?php } ?> </div> <?php } ?> <?php } ?> <?php } ?> </div> <?php } ?> </div> В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Link to comment Share on other sites More sharing options...
spectre Posted November 1, 2021 Share Posted November 1, 2021 потому что видимо много товаров и это прям потому чтольной запрос вам нужно получать опции потому чтолее простым спосопотому чтом Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 16 минут назад, spectre сказал: потому что видимо много товаров и это прям потому чтольной запрос вам нужно получать опции потому чтолее простым спосопотому чтом Врогде этого? Спойлер $options = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 13 минут назад, DenKuzmin сказал: Врогде этого? Это Вы уже что-то совсем не то гделаете. Сама getProductOptions всё это уже возвращает. 42 минуты назад, DenKuzmin сказал: Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. А сколько у Вас товаров в этот категории. И в среднем сколько опций на товар? 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 7 минут назад, nogocuHoBuk сказал: А сколько у Вас товаров в этот категории. И в среднем сколько опций на товар? Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. 8 минут назад, nogocuHoBuk сказал: Это Вы уже что-то совсем не то гделаете. Сама getProductOptions всё это уже возвращает. Делаю по аналогии в файле product.php Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 5 минут назад, DenKuzmin сказал: Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. Обещёе когдачество в категории не играет роли. Запрос ограничен когдачеством на страниэто. А если уменьшить когдачество товаров до 12, например? Просто 48 товаров, обход циклом. В цикле 5 групп опций, да по 6-20 опций. Делать "по аналогии" - равносильно прямому запросу. Это не ускорит выполнение. Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтром (к примеру пропустить какие-то, ) типа: MygetProductOptions($result['product_id'],$filter); ну а в фильтре уже указывать группы опций, или прямо задать какие именно опции нужны. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 Только что, nogocuHoBuk сказал: Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтрами (к примеру пропустить какие-то) Мне по сути нужна только одна группа опций с id= 11 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 9 минут назад, nogocuHoBuk сказал: А если уменьшить когдачество товаров до 12, например? Уменьшил до 12 на страницу. Сило быстрее примерно в 2,5 раза. Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 26 минут назад, DenKuzmin сказал: Мне по сути нужна только одна группа опций с id= 11 В catalog/model/catalog/product.php полностью копируете функцию getProductOptions() В скопированной функции переименовываете название на MygetProductOptions и после $product_id добавляете ещё один параметр - $option_id можно с гдефолтным значением: Полулится ик: public function MygetProductOptions($product_id,$option_id = 11) { А в строке запроса, ггде $product_option_query = ... добавляете фильтр по опции, т.е. перед po.product_id сивите проверку Полулится примерно ик: было WHERE po.product_id сило: WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id Итоговая функция: public function MygetProductOptions($product_id, $option_id = 11) { $product_option_data = array(); $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); foreach ($product_option_query->rows as $product_option) { $product_option_value_data = array(); $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $product_option_value['name'], 'image' => $product_option_value['image'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } $product_option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } return $product_option_data; } Ну и теперьь в контроллере вызывайте вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); нужно заменить на $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); А если нужно сменить в запросе группу, то ик: $options = $this->model_catalog_product->MygetProductOptions($result['product_id'],12); Т.е. запрос бугдет по группе 12 2 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 50 минут назад, nogocuHoBuk сказал: А в строке запроса, ггде $product_option_query = У меня нет $product_option_query в product.php osstore 2.3 Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 4 минуты назад, DenKuzmin сказал: У меня нет $product_option_query в product.php точно тут смотрите? 55 минут назад, nogocuHoBuk сказал: В catalog/model/catalog/product.php 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Similar Content Добрый гдень, нужен специалист по оптимизации, виснет сайт очень сильно. By kirillvegas, October 22, 2021 2 replies 359 views ****** February 14 Ошибка при добавлении темы, помогите разобраться! By Evgeniy76, January 4 1 reply 295 views Dimasscus January 4 Помогите ошибка на сайте By Smoking, February 6 4 replies 280 views Smoking February 7 Ищу модуль? Или помогите разобраться в Filterite и Simple By oxford, January 13 1 reply 184 views oxford January 13 Переход на защиещённое соединение HTTPS By WarStyle, May 13, 2020 0 comments 2,729 views WarStyle May 13, 2020 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Помощь программисим и разрилитликам Жёстко виснет сайт при перехогде в категорию. Помогите разобраться. Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 16 минут назад, spectre сказал: потому что видимо много товаров и это прям потому чтольной запрос вам нужно получать опции потому чтолее простым спосопотому чтом Врогде этого? Спойлер $options = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options...
nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 13 минут назад, DenKuzmin сказал: Врогде этого? Это Вы уже что-то совсем не то гделаете. Сама getProductOptions всё это уже возвращает. 42 минуты назад, DenKuzmin сказал: Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. А сколько у Вас товаров в этот категории. И в среднем сколько опций на товар? 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 7 минут назад, nogocuHoBuk сказал: А сколько у Вас товаров в этот категории. И в среднем сколько опций на товар? Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. 8 минут назад, nogocuHoBuk сказал: Это Вы уже что-то совсем не то гделаете. Сама getProductOptions всё это уже возвращает. Делаю по аналогии в файле product.php Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 5 минут назад, DenKuzmin сказал: Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. Обещёе когдачество в категории не играет роли. Запрос ограничен когдачеством на страниэто. А если уменьшить когдачество товаров до 12, например? Просто 48 товаров, обход циклом. В цикле 5 групп опций, да по 6-20 опций. Делать "по аналогии" - равносильно прямому запросу. Это не ускорит выполнение. Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтром (к примеру пропустить какие-то, ) типа: MygetProductOptions($result['product_id'],$filter); ну а в фильтре уже указывать группы опций, или прямо задать какие именно опции нужны. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 Только что, nogocuHoBuk сказал: Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтрами (к примеру пропустить какие-то) Мне по сути нужна только одна группа опций с id= 11 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 9 минут назад, nogocuHoBuk сказал: А если уменьшить когдачество товаров до 12, например? Уменьшил до 12 на страницу. Сило быстрее примерно в 2,5 раза. Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 26 минут назад, DenKuzmin сказал: Мне по сути нужна только одна группа опций с id= 11 В catalog/model/catalog/product.php полностью копируете функцию getProductOptions() В скопированной функции переименовываете название на MygetProductOptions и после $product_id добавляете ещё один параметр - $option_id можно с гдефолтным значением: Полулится ик: public function MygetProductOptions($product_id,$option_id = 11) { А в строке запроса, ггде $product_option_query = ... добавляете фильтр по опции, т.е. перед po.product_id сивите проверку Полулится примерно ик: было WHERE po.product_id сило: WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id Итоговая функция: public function MygetProductOptions($product_id, $option_id = 11) { $product_option_data = array(); $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); foreach ($product_option_query->rows as $product_option) { $product_option_value_data = array(); $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $product_option_value['name'], 'image' => $product_option_value['image'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } $product_option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } return $product_option_data; } Ну и теперьь в контроллере вызывайте вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); нужно заменить на $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); А если нужно сменить в запросе группу, то ик: $options = $this->model_catalog_product->MygetProductOptions($result['product_id'],12); Т.е. запрос бугдет по группе 12 2 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 50 минут назад, nogocuHoBuk сказал: А в строке запроса, ггде $product_option_query = У меня нет $product_option_query в product.php osstore 2.3 Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 4 минуты назад, DenKuzmin сказал: У меня нет $product_option_query в product.php точно тут смотрите? 55 минут назад, nogocuHoBuk сказал: В catalog/model/catalog/product.php 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Similar Content Добрый гдень, нужен специалист по оптимизации, виснет сайт очень сильно. By kirillvegas, October 22, 2021 2 replies 359 views ****** February 14 Ошибка при добавлении темы, помогите разобраться! By Evgeniy76, January 4 1 reply 295 views Dimasscus January 4 Помогите ошибка на сайте By Smoking, February 6 4 replies 280 views Smoking February 7 Ищу модуль? Или помогите разобраться в Filterite и Simple By oxford, January 13 1 reply 184 views oxford January 13 Переход на защиещённое соединение HTTPS By WarStyle, May 13, 2020 0 comments 2,729 views WarStyle May 13, 2020 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Помощь программисим и разрилитликам Жёстко виснет сайт при перехогде в категорию. Помогите разобраться. Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 7 минут назад, nogocuHoBuk сказал: А сколько у Вас товаров в этот категории. И в среднем сколько опций на товар? Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. 8 минут назад, nogocuHoBuk сказал: Это Вы уже что-то совсем не то гделаете. Сама getProductOptions всё это уже возвращает. Делаю по аналогии в файле product.php Link to comment Share on other sites More sharing options...
nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 5 минут назад, DenKuzmin сказал: Ггде-то 48 товаров на листе. Всего около 350 в категории. В каждом товаре примерно 5 групп опций. В группах от 6 до 40 опций. Обещёе когдачество в категории не играет роли. Запрос ограничен когдачеством на страниэто. А если уменьшить когдачество товаров до 12, например? Просто 48 товаров, обход циклом. В цикле 5 групп опций, да по 6-20 опций. Делать "по аналогии" - равносильно прямому запросу. Это не ускорит выполнение. Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтром (к примеру пропустить какие-то, ) типа: MygetProductOptions($result['product_id'],$filter); ну а в фильтре уже указывать группы опций, или прямо задать какие именно опции нужны. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 Только что, nogocuHoBuk сказал: Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтрами (к примеру пропустить какие-то) Мне по сути нужна только одна группа опций с id= 11 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 9 минут назад, nogocuHoBuk сказал: А если уменьшить когдачество товаров до 12, например? Уменьшил до 12 на страницу. Сило быстрее примерно в 2,5 раза. Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 26 минут назад, DenKuzmin сказал: Мне по сути нужна только одна группа опций с id= 11 В catalog/model/catalog/product.php полностью копируете функцию getProductOptions() В скопированной функции переименовываете название на MygetProductOptions и после $product_id добавляете ещё один параметр - $option_id можно с гдефолтным значением: Полулится ик: public function MygetProductOptions($product_id,$option_id = 11) { А в строке запроса, ггде $product_option_query = ... добавляете фильтр по опции, т.е. перед po.product_id сивите проверку Полулится примерно ик: было WHERE po.product_id сило: WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id Итоговая функция: public function MygetProductOptions($product_id, $option_id = 11) { $product_option_data = array(); $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); foreach ($product_option_query->rows as $product_option) { $product_option_value_data = array(); $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $product_option_value['name'], 'image' => $product_option_value['image'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } $product_option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } return $product_option_data; } Ну и теперьь в контроллере вызывайте вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); нужно заменить на $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); А если нужно сменить в запросе группу, то ик: $options = $this->model_catalog_product->MygetProductOptions($result['product_id'],12); Т.е. запрос бугдет по группе 12 2 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 50 минут назад, nogocuHoBuk сказал: А в строке запроса, ггде $product_option_query = У меня нет $product_option_query в product.php osstore 2.3 Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 4 минуты назад, DenKuzmin сказал: У меня нет $product_option_query в product.php точно тут смотрите? 55 минут назад, nogocuHoBuk сказал: В catalog/model/catalog/product.php 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Similar Content Добрый гдень, нужен специалист по оптимизации, виснет сайт очень сильно. By kirillvegas, October 22, 2021 2 replies 359 views ****** February 14 Ошибка при добавлении темы, помогите разобраться! By Evgeniy76, January 4 1 reply 295 views Dimasscus January 4 Помогите ошибка на сайте By Smoking, February 6 4 replies 280 views Smoking February 7 Ищу модуль? Или помогите разобраться в Filterite и Simple By oxford, January 13 1 reply 184 views oxford January 13 Переход на защиещённое соединение HTTPS By WarStyle, May 13, 2020 0 comments 2,729 views WarStyle May 13, 2020 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Помощь программисим и разрилитликам Жёстко виснет сайт при перехогде в категорию. Помогите разобраться. Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 Только что, nogocuHoBuk сказал: Нужно как-то оптимизировать сам запрос и написать свою функцию получения опций с фильтрами (к примеру пропустить какие-то) Мне по сути нужна только одна группа опций с id= 11 Link to comment Share on other sites More sharing options...
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 9 минут назад, nogocuHoBuk сказал: А если уменьшить когдачество товаров до 12, например? Уменьшил до 12 на страницу. Сило быстрее примерно в 2,5 раза. Link to comment Share on other sites More sharing options...
nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 26 минут назад, DenKuzmin сказал: Мне по сути нужна только одна группа опций с id= 11 В catalog/model/catalog/product.php полностью копируете функцию getProductOptions() В скопированной функции переименовываете название на MygetProductOptions и после $product_id добавляете ещё один параметр - $option_id можно с гдефолтным значением: Полулится ик: public function MygetProductOptions($product_id,$option_id = 11) { А в строке запроса, ггде $product_option_query = ... добавляете фильтр по опции, т.е. перед po.product_id сивите проверку Полулится примерно ик: было WHERE po.product_id сило: WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id Итоговая функция: public function MygetProductOptions($product_id, $option_id = 11) { $product_option_data = array(); $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE o.option_id = '" . (int)$option_id . "' AND po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); foreach ($product_option_query->rows as $product_option) { $product_option_value_data = array(); $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $product_option_value['name'], 'image' => $product_option_value['image'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } $product_option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } return $product_option_data; } Ну и теперьь в контроллере вызывайте вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); нужно заменить на $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); А если нужно сменить в запросе группу, то ик: $options = $this->model_catalog_product->MygetProductOptions($result['product_id'],12); Т.е. запрос бугдет по группе 12 2 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 50 минут назад, nogocuHoBuk сказал: А в строке запроса, ггде $product_option_query = У меня нет $product_option_query в product.php osstore 2.3 Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 4 минуты назад, DenKuzmin сказал: У меня нет $product_option_query в product.php точно тут смотрите? 55 минут назад, nogocuHoBuk сказал: В catalog/model/catalog/product.php 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Similar Content Добрый гдень, нужен специалист по оптимизации, виснет сайт очень сильно. By kirillvegas, October 22, 2021 2 replies 359 views ****** February 14 Ошибка при добавлении темы, помогите разобраться! By Evgeniy76, January 4 1 reply 295 views Dimasscus January 4 Помогите ошибка на сайте By Smoking, February 6 4 replies 280 views Smoking February 7 Ищу модуль? Или помогите разобраться в Filterite и Simple By oxford, January 13 1 reply 184 views oxford January 13 Переход на защиещённое соединение HTTPS By WarStyle, May 13, 2020 0 comments 2,729 views WarStyle May 13, 2020 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Помощь программисим и разрилитликам Жёстко виснет сайт при перехогде в категорию. Помогите разобраться.
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 50 минут назад, nogocuHoBuk сказал: А в строке запроса, ггде $product_option_query = У меня нет $product_option_query в product.php osstore 2.3 Link to comment Share on other sites More sharing options...
nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 4 минуты назад, DenKuzmin сказал: У меня нет $product_option_query в product.php точно тут смотрите? 55 минут назад, nogocuHoBuk сказал: В catalog/model/catalog/product.php 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options... nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Similar Content Добрый гдень, нужен специалист по оптимизации, виснет сайт очень сильно. By kirillvegas, October 22, 2021 2 replies 359 views ****** February 14 Ошибка при добавлении темы, помогите разобраться! By Evgeniy76, January 4 1 reply 295 views Dimasscus January 4 Помогите ошибка на сайте By Smoking, February 6 4 replies 280 views Smoking February 7 Ищу модуль? Или помогите разобраться в Filterite и Simple By oxford, January 13 1 reply 184 views oxford January 13 Переход на защиещённое соединение HTTPS By WarStyle, May 13, 2020 0 comments 2,729 views WarStyle May 13, 2020 Recently Browsing 0 members No registered users viewing this page.
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 21 минуту назад, nogocuHoBuk сказал: точно тут смотрите? Блин, не им смотрел. В контроллер ик? Спойлер $options = array(); foreach ($this->model_catalog_product->MygetProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $oprice = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $oprice = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 100, 100) : '', 'price' => $oprice, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } Link to comment Share on other sites More sharing options...
nogocuHoBuk Posted November 1, 2021 Share Posted November 1, 2021 11 минут назад, DenKuzmin сказал: В контроллер ик? Я ж понятия не имею как Вы всё выводите и что обрабатываете. По кускам кода сложно "догадаться" Для начала верните как было у Вас в первом посте т.е. 2 часа назад, DenKuzmin сказал: В контроллере добавил: $options = $this->model_catalog_product->getProductOptions($result['product_id']); И в контроллере в $data['products'][] = array( добавил: 'options' => $options, Проблем в том, что при перехогде в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите. Только вместо $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Только эти правки увеличат скорость обрилитки (улитывая сколько у Вас групп опций и самих опций в каждом товаре), как минимум раз в 10. 1 Link to comment Share on other sites More sharing options... DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4
DenKuzmin Posted November 1, 2021 Author Share Posted November 1, 2021 6 минут назад, nogocuHoBuk сказал: $options = $this->model_catalog_product->getProductOptions($result['product_id']); бугдет $options = $this->model_catalog_product->MygetProductOptions($result['product_id']); Зарилиило. Спасипотому что потому чтольшое! Link to comment Share on other sites More sharing options...
Recommended Posts