Здравствуйте. Подскажите пожалуйста, как сделать вовод случайных акционных товаров в модуль АКЦИИ. Сейчас выводятся первые 5 акционных товара, которые сортируются по названию. Как сделать Rendom? Всем спасибо и конечно + в репутацию)) Вот пациент
Павел_Б, ищем файл у себя - catalog/model/catalog/product.php Там находим функцию - getProductSpecials В этой функции ищем код: Код: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; } Здесь меняем в помледнем else $sql .= " ORDER BY p.sort_order"; на $sql .= " ORDER BY RAND()"; Т.О получаем код - Код: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY RAND()"; } Таким образом, по умолчанию должно выводится в случайном порядке. Отпишитесь как работает - т.к. случайный вывод товаров делал в категории - но такое же и должно работать для модуля акции - прописав по аналогии для этой функции.
--- Это что, прикол такой? Неужели ни кто не знает как сделать акции в 1.5.5.1 рандомно? Зря регистрировался что ли? --- Вот так можно сделать в рекомендуемых: В catalog/controller/module/featured.php перед строкой 21 $products = array_slice($products, 0, (int)$setting['limit']); Вставляем функцию перемешивания массива в случайном порядке shuffle ($products);
В файле catalog/controller/module/special.php фрагмент: $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } Заменяете на: $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); shuffle($this->data['products']); } Работает на 1.5.6.4
Нужно решение по сортировки товара в модуле акции ? Чтоб новые акции были первыми. Прописал в файле /catalog/controller/module/special.php Код: $data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => $setting['limit'] ); Не помогло
Надо ещё в модели /catalog/model/catalog/product.php поправить метод getProductSpecials - добавить этот вариант сортировки в список разрешённых. Поскольку в ОК параметры сортировки передаются GET параметрами, список разрешённых значений - это защита от передачи инъекций.