diff --git a/public/admin/controller/extension/module/featured.php b/public/admin/controller/extension/module/featured.php index 21a0835..3450d16 100644 --- a/public/admin/controller/extension/module/featured.php +++ b/public/admin/controller/extension/module/featured.php @@ -156,6 +156,27 @@ class ControllerExtensionModuleFeatured extends Controller { $this->response->setOutput($this->load->view('extension/module/featured', $data)); } + public function random() { + $json = array(); + + $this->load->model('catalog/product'); + + $limit = isset($this->request->get['limit']) ? (int)$this->request->get['limit'] : 5; + $exclude = isset($this->request->get['exclude']) ? $this->request->get['exclude'] : array(); + + $results = $this->model_catalog_product->getRandomProducts($limit, $exclude); + + foreach ($results as $result) { + $json[] = array( + 'product_id' => $result['product_id'], + 'name' => html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8') + ); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + protected function validate() { if (!$this->user->hasPermission('modify', 'extension/module/featured')) { $this->error['warning'] = $this->language->get('error_permission'); diff --git a/public/admin/language/ru-ru/extension/module/featured.php b/public/admin/language/ru-ru/extension/module/featured.php index 3928a41..a3afad2 100644 --- a/public/admin/language/ru-ru/extension/module/featured.php +++ b/public/admin/language/ru-ru/extension/module/featured.php @@ -13,11 +13,15 @@ $_['text_edit'] = 'Редактирование'; // Entry $_['entry_name'] = 'Название модуля'; $_['entry_product'] = 'Товары'; +$_['entry_random'] = 'Случайные товары'; $_['entry_limit'] = 'Лимит'; $_['entry_width'] = 'Ширина'; $_['entry_height'] = 'Высота'; $_['entry_status'] = 'Статус'; +// Button +$_['button_random'] = 'Добавить случайные'; + // Help $_['help_product'] = '(Автозаполнение)'; diff --git a/public/admin/model/catalog/product.php b/public/admin/model/catalog/product.php index fb62f3f..1b3e6c9 100644 --- a/public/admin/model/catalog/product.php +++ b/public/admin/model/catalog/product.php @@ -924,6 +924,20 @@ class ModelCatalogProduct extends Model { return $query->row['total']; } + public function getRandomProducts($limit = 5, $exclude = array()) { + $sql = "SELECT p.product_id, pd.name FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1'"; + + if (!empty($exclude)) { + $sql .= " AND p.product_id NOT IN (" . implode(',', array_map('intval', $exclude)) . ")"; + } + + $sql .= " ORDER BY RAND() LIMIT " . (int)$limit; + + $query = $this->db->query($sql); + + return $query->rows; + } + public function getTotalProductsByLayoutId($layout_id) { $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product_to_layout WHERE layout_id = '" . (int)$layout_id . "'"); diff --git a/public/admin/view/template/extension/module/featured.twig b/public/admin/view/template/extension/module/featured.twig index b299f60..d6df738 100644 --- a/public/admin/view/template/extension/module/featured.twig +++ b/public/admin/view/template/extension/module/featured.twig @@ -47,6 +47,17 @@ +