ingenerks Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Завантажити / Придбати розширення Рекомендуемые рандомно Есть дополнение которые выводит в модуле акций рандомно товары http://www.opencart....29#.UTfDtlc50qI то есть при каждом обновлении, новые акционные товары. На его базе сделал вкмод, для рекомендуемых. То есть каждый новый пользователь, зашедший на сайт, будит видеть новые рекомендуемые товары, или при перезагрузке страницы. Как настраивать.: -заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. Теперь рекомендуемые товары будут выносится рандомно. Может кому-то пригодится! Автор ingenerks долучення 07.03.13 Категорія Модули 3 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Есть такое мнение, что частая ротация ссылок снижает их вес в глазах поисковиков Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 6 березня 2013 Автор Share Опубліковано: 6 березня 2013 Требовалось для частного случая, решил поделится, может кому-то понадобится! 2 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Я это вовсе не к тому, что ваше дополнение плохое Просто многие используют рекомендуемые товары вовсе не по прямому назначению (например, к телефону можно советовать карту памяти или там чехол), а чисто для перелинковки страниц товаров, и вот в таких случаях частое изменение взаимной перелинковки может навредить. Но с другой стороны, те, кто продают гуглу, а не покупателям, долго не задерживаются на рынке Надіслати Поділитися на інших сайтах More sharing options... NGW Опубліковано: 11 березня 2013 Share Опубліковано: 11 березня 2013 Аффтар как добавлять то? Надіслати Поділитися на інших сайтах More sharing options... Sergant Опубліковано: 17 березня 2013 Share Опубліковано: 17 березня 2013 судя по тому что там xml файл - это для vqmod... http://www.opencart....29#.UTfDtlc50qI ну да) только автору незачет, ибо в оригинальной теме есть много файлов для разных версий магазина)) можно было бы и отсортировать тут) ибо непонятно для какой версии он выложил Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 18 березня 2013 Автор Share Опубліковано: 18 березня 2013 Аффтар как добавлять то? Вверху писал как добавлять-заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. 2 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options... 6 months later... sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options... 3 weeks later... namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options... sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Есть такое мнение, что частая ротация ссылок снижает их вес в глазах поисковиков Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 6 березня 2013 Автор Share Опубліковано: 6 березня 2013 Требовалось для частного случая, решил поделится, может кому-то понадобится! 2 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Я это вовсе не к тому, что ваше дополнение плохое Просто многие используют рекомендуемые товары вовсе не по прямому назначению (например, к телефону можно советовать карту памяти или там чехол), а чисто для перелинковки страниц товаров, и вот в таких случаях частое изменение взаимной перелинковки может навредить. Но с другой стороны, те, кто продают гуглу, а не покупателям, долго не задерживаются на рынке Надіслати Поділитися на інших сайтах More sharing options... NGW Опубліковано: 11 березня 2013 Share Опубліковано: 11 березня 2013 Аффтар как добавлять то? Надіслати Поділитися на інших сайтах More sharing options... Sergant Опубліковано: 17 березня 2013 Share Опубліковано: 17 березня 2013 судя по тому что там xml файл - это для vqmod... http://www.opencart....29#.UTfDtlc50qI ну да) только автору незачет, ибо в оригинальной теме есть много файлов для разных версий магазина)) можно было бы и отсортировать тут) ибо непонятно для какой версии он выложил Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 18 березня 2013 Автор Share Опубліковано: 18 березня 2013 Аффтар как добавлять то? Вверху писал как добавлять-заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. 2 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options... 6 months later... sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options... 3 weeks later... namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options... sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ingenerks Опубліковано: 6 березня 2013 Автор Share Опубліковано: 6 березня 2013 Требовалось для частного случая, решил поделится, может кому-то понадобится! 2 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Я это вовсе не к тому, что ваше дополнение плохое Просто многие используют рекомендуемые товары вовсе не по прямому назначению (например, к телефону можно советовать карту памяти или там чехол), а чисто для перелинковки страниц товаров, и вот в таких случаях частое изменение взаимной перелинковки может навредить. Но с другой стороны, те, кто продают гуглу, а не покупателям, долго не задерживаются на рынке Надіслати Поділитися на інших сайтах More sharing options... NGW Опубліковано: 11 березня 2013 Share Опубліковано: 11 березня 2013 Аффтар как добавлять то? Надіслати Поділитися на інших сайтах More sharing options... Sergant Опубліковано: 17 березня 2013 Share Опубліковано: 17 березня 2013 судя по тому что там xml файл - это для vqmod... http://www.opencart....29#.UTfDtlc50qI ну да) только автору незачет, ибо в оригинальной теме есть много файлов для разных версий магазина)) можно было бы и отсортировать тут) ибо непонятно для какой версии он выложил Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 18 березня 2013 Автор Share Опубліковано: 18 березня 2013 Аффтар как добавлять то? Вверху писал как добавлять-заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. 2 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options... 6 months later... sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options... 3 weeks later... namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options... sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
RGB Опубліковано: 6 березня 2013 Share Опубліковано: 6 березня 2013 Я это вовсе не к тому, что ваше дополнение плохое Просто многие используют рекомендуемые товары вовсе не по прямому назначению (например, к телефону можно советовать карту памяти или там чехол), а чисто для перелинковки страниц товаров, и вот в таких случаях частое изменение взаимной перелинковки может навредить. Но с другой стороны, те, кто продают гуглу, а не покупателям, долго не задерживаются на рынке Надіслати Поділитися на інших сайтах More sharing options... NGW Опубліковано: 11 березня 2013 Share Опубліковано: 11 березня 2013 Аффтар как добавлять то? Надіслати Поділитися на інших сайтах More sharing options... Sergant Опубліковано: 17 березня 2013 Share Опубліковано: 17 березня 2013 судя по тому что там xml файл - это для vqmod... http://www.opencart....29#.UTfDtlc50qI ну да) только автору незачет, ибо в оригинальной теме есть много файлов для разных версий магазина)) можно было бы и отсортировать тут) ибо непонятно для какой версии он выложил Надіслати Поділитися на інших сайтах More sharing options... ingenerks Опубліковано: 18 березня 2013 Автор Share Опубліковано: 18 березня 2013 Аффтар как добавлять то? Вверху писал как добавлять-заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. 2 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options... 6 months later... sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options... 3 weeks later... namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options... sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
NGW Опубліковано: 11 березня 2013 Share Опубліковано: 11 березня 2013 Аффтар как добавлять то? Надіслати Поділитися на інших сайтах More sharing options...
Sergant Опубліковано: 17 березня 2013 Share Опубліковано: 17 березня 2013 судя по тому что там xml файл - это для vqmod... http://www.opencart....29#.UTfDtlc50qI ну да) только автору незачет, ибо в оригинальной теме есть много файлов для разных версий магазина)) можно было бы и отсортировать тут) ибо непонятно для какой версии он выложил Надіслати Поділитися на інших сайтах More sharing options...
ingenerks Опубліковано: 18 березня 2013 Автор Share Опубліковано: 18 березня 2013 Аффтар как добавлять то? Вверху писал как добавлять-заходим в админку в модуль рекомендуемые. -выбираем товары. -далее в первом окне ставим лимит на количество товаров, во втором сколько товаров показывать в модуле. -указываем где выводить модуль (схему) и сохраняем. 2 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options... 6 months later... sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options... 3 weeks later... namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options... sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Steel123 Опубліковано: 2 червня 2013 Share Опубліковано: 2 червня 2013 То что доктор прописал. Надіслати Поділитися на інших сайтах More sharing options...
sergeichuk Опубліковано: 31 грудня 2013 Share Опубліковано: 31 грудня 2013 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Надіслати Поділитися на інших сайтах More sharing options...
namza80 Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Не работает на v1.5.5.1 В админке появляется дополнительное окно, но случайным образом так и не показывает. Цитата "в первом окне ставим лимит на количество товаров" - но почему-то в первом окне устанавливается сколько отображать товара на странице, а второе просто бесполезное. Пытался менять значения в обоих окнах, но эффекта нет, показывает в строгой последовательности. Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 1 Надіслати Поділитися на інших сайтах More sharing options...
sergeichuk Опубліковано: 18 січня 2014 Share Опубліковано: 18 січня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Спасибо, отлично помогло даже без данного модуля. Если увижу решение по акциям сразу сообщу. Надіслати Поділитися на інших сайтах More sharing options...
namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Может есть ЦЕНА вопроса за решение? skype: El-Art.pro Надіслати Поділитися на інших сайтах More sharing options...
Tom Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); 1 Надіслати Поділитися на інших сайтах More sharing options... namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options... 2 months later... lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options... Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
namza80 Опубліковано: 27 січня 2014 Share Опубліковано: 27 січня 2014 Спасибо, Tom! --- Вычитал в яндексе: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. Так что эту строку можно удалить - srand((float)microtime() * 1000000); --- Сразу видно, бывалый кодер! B) Надіслати Поділитися на інших сайтах More sharing options...
lavka Опубліковано: 5 квітня 2014 Share Опубліковано: 5 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit']заменить на 'limit' => ($setting['limit'] * 10)найти $results = $this->model_catalog_product->getProductSpecials($data);добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные. Надіслати Поділитися на інших сайтах More sharing options...
Kompozitor Опубліковано: 13 квітня 2014 Share Опубліковано: 13 квітня 2014 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); Супер, спасибо помогло!))) На версии 1.5.5.1 Надіслати Поділитися на інших сайтах More sharing options...
sergeichuk Опубліковано: 3 червня 2014 Share Опубліковано: 3 червня 2014 Для 1.5.5.1 В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']);Вставляем функцию перемешивания массива в случайном порядке shuffle ($products); ============== Меня волнует другой вопрос, как тоже самое сделать с акциями, понятно что надо дописать в template/module/special.tpl. Подскажите кто знает! Для 1.5.5.1 Все великолепно работает, но есть маленький недостаток. Если установить отображать на странице 6 товаров (лимит), то показывает товары не все 6, а случайным числом. Один раз 4, во второй 6, в третий 5, потом снова 6. Иногда 3, но менее трех еще не видел. Функция shuffle ($products); должна перемещать товары и вывести случайные 6 штук, а не любое количество до 6 (до лимита). Буду очень признателен если подскажите как сделать стабильное количество отображаемых товаров. Заранее большое спасибо. Надіслати Поділитися на інших сайтах More sharing options...
Kyuzo Опубліковано: 13 червня 2015 Share Опубліковано: 13 червня 2015 Для модуля акций можно попробовать так catalog/controller/module/special.php, найти 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($data); добавить после srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); А не подскажите - как такое реализовать для Рекомендуемых из Осshор модуля Табы..? Надіслати Поділитися на інших сайтах More sharing options...
Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Нет под рукой,что бы посмотреть... Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення [Поддержка] Рекомендуемые рандомно
Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 (змінено) Нет под рукой,что бы посмотреть... catalog\controller\module\product_tab.php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Змінено 14 червня 2015 користувачем Kyuzo Надіслати Поділитися на інших сайтах More sharing options...
Tom Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 <?php class ControllerModuleProductTab extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/product_tab'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->document->addScript('catalog/view/javascript/jquery/tabs.js'); $this->data['tab_latest'] = $this->language->get('tab_latest'); $this->data['tab_featured'] = $this->language->get('tab_featured'); $this->data['tab_bestseller'] = $this->language->get('tab_bestseller'); $this->data['tab_special'] = $this->language->get('tab_special'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->load->model('catalog/product'); $this->load->model('tool/image'); //Latest Products $this->data['latest_products'] = array(); $latest_results = $this->model_catalog_product->getLatestProducts($setting['limit']); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($latest_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['latest_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Specials product $this->data['special_products'] = array(); $special_data = array( 'sort' => 'pd.name', 'order' => 'ASC', 'start' => 0, 'limit' => $setting['limit'] ); $special_results = $this->model_catalog_product->getProductSpecials($special_data); //ADD srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($special_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['special_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //BestSeller $this->data['bestseller_products'] = array(); //$bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); //Add $bestseller_results = $this->model_catalog_product->getBestSellerProducts($setting['limit'] * 10); srand((float)microtime() * 1000000); shuffle($results); $results = array_slice($results, 0, $setting['limit']); //END foreach ($bestseller_results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $stickers = $this->getStickers($result['product_id']) ; $this->data['bestseller_products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } //Featured $this->data['featured_products'] = array(); $products = explode(',', $this->config->get('featured_product')); //Add srand((float)microtime() * 1000000); shuffle($products); //END if (empty($setting['limit'])) { $setting['limit'] = 5; } $products = array_slice($products, 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $stickers = $this->getStickers($product_info['product_id']) ; $this->data['featured_products'][] = array( 'product_id' => $product_info['product_id'], 'thumb' => $image, 'name' => $product_info['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'sticker' => $stickers, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']), ); } } $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/product_tab.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/product_tab.tpl'; } else { $this->template = 'default/template/module/product_tab.tpl'; } $this->render(); } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $this->data['stickers'] = array(); foreach ($stickers as $sticker) { $this->data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/stickers.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/stickers.tpl'; } else { $this->template = 'default/template/product/stickers.tpl'; } return $this->render(); } } ?> Не проверял. Надіслати Поділитися на інших сайтах More sharing options... Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options... 10 months later... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options... Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Kyuzo Опубліковано: 14 червня 2015 Share Опубліковано: 14 червня 2015 Не проверял. Оставил только для одной вкладки.. Всё работает, спасибо огромное! Надіслати Поділитися на інших сайтах More sharing options...
Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 А для 2.1 подскажите пожалуйста правильную конструкцию для special Надіслати Поділитися на інших сайтах More sharing options...
Tom Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 Не проверялДля 2...... catalog/controller/module/special.php 'limit' => $setting['limit'] заменить на 'limit' => ($setting['limit'] * 10) найти $results = $this->model_catalog_product->getProductSpecials($filter_data); добавить после shuffle($results); $results = array_slice($results, 0, $setting['limit']); Надіслати Поділитися на інших сайтах More sharing options... Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Ginsot Опубліковано: 21 квітня 2016 Share Опубліковано: 21 квітня 2016 К сожалению так не работает. Вчера сам такое пробовал, но вывод без изменений. На время в tpl включил автопрокрутку скриптом Owl Carousel, но хочу именно рандомный товар, а затем уже прокрутку. Забыл написать тема XDS Coloring, если это имеет значение. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts