Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Клон модуля рекомендуемые на ocStore 0.2.2


Recommended Posts

Привет всем!

Попытался сделать копию модуля рекомендуемые товары на главной в ocStore 0.2.2. Порядок действий такой:

1. Скопировал файлы, переименовал их добавил в конце m:

admin\controller\module\featuredm.php

admin\language\russian\module\featuredm.php

admin\view\template\module\featuredm.tpl

catalog\controller\module\featuredm.php

catalog\language\russian\module\featuredm.php

catalog\view\theme\default\template\module\featuredm.tpl

catalog\view\theme\default\template\module\featuredm_home.tpl

2. В содержимом каждого файла заменил featured на featuredm.

3. В языковых файлах строку $_['heading_title'] = 'Рекомендуемые'; заменил на $_['heading_title'] = 'Рекомендуемые клон';

4. Залил все файлы обратно.

5. В файле admin\model\catalog\product.php после

public function addFeatured($data) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_featured");
if (isset($data['product_featured'])) {
foreach ($data['product_featured'] as $product_id) {
$this->db->query("INSERT INTO " . DB_PREFIX . "product_featured (product_id) VALUES ('" . (int)$product_id . "')");
}}}

добавил

public function addFeaturedm($data) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_featuredm");
if (isset($data['product_featuredm'])) {
foreach ($data['product_featuredm'] as $product_id) {
$this->db->query("INSERT INTO " . DB_PREFIX . "product_featuredm (product_id) VALUES ('" . (int)$product_id . "')");
}}}

в том же файле чуть ниже после

public function getFeaturedProducts() {
$product_featured_data = array();
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_featured");
foreach ($query->rows as $result) {
$product_featured_data[] = $result['product_id'];
}
return $product_featured_data; }

добавил

public function getFeaturedmProducts() {
$product_featuredm_data = array();
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_featuredm");
foreach ($query->rows as $result) {
$product_featuredm_data[] = $result['product_id'];
}
return $product_featuredm_data; } 

6. В файле catalog\model\catalog\product.php после

public function getFeaturedProducts($limit) {
$product_data = $this->cache->get('product.featured.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit);
if (!$product_data) {
$query = $this->db->query("SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product_featured f LEFT JOIN " . DB_PREFIX . "product p ON (f.product_id=p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (f.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT " . (int)$limit);
$product_data = $query->rows;
$this->cache->set('product.featured.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit, $product_data); }
return $product_data; }

добавил

public function getFeaturedmProducts($limit) {
$product_data = $this->cache->get('product.featuredm.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit);
if (!$product_data) {
$query = $this->db->query("SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product_featuredm f LEFT JOIN " . DB_PREFIX . "product p ON (f.product_id=p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (f.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT " . (int)$limit);
$product_data = $query->rows;
$this->cache->set('product.featuredm.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit, $product_data); }
return $product_data; }

7. В MyphpAdmin скопировал таблицу с данными oc_product_featured и назвал oc_product_featuredm.

В админке появился новый модуль, установился без ошибок.

Проблема в том что модуль выводит не все товары. Или совсем не выводит. Если в функциях getFeaturedmProducts и addFeaturedmProducts указывать таблицы product_featured ситуация почти та же. За исключением того что, если в одном модуле выбрать товары, те же будут выбраны и в другом, но выводятся они тоже не все.

Прошу подсказать в какую сторону копать дальше.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.