Вітаю, дорогі друзі.
У даній статті я хотів би описати кілька різних способів і маніпуляцій над товарами яких немає в наявності в opencart.
- Додаємо статус наявності в категорію
- Товар якого немає в наявності в самому кінці списку
- Приховуємо товар якого немає в наявності
Завдання №1
В першу чергу давайте поговоримо про те як вивести, (відобразити) наявність товару в список товарів в категорії і аналогічних сторінках таких як пошук, акції, виробники, і.т.д ...
За замовчуванням Opencart не відображує статус наявності товару в загальному списку товарів, ну що ж давайте виправимо це.
І так перед нами є opencart версії 1.5.5.1 або будь-яка інша версія даної гілки, ну і шаблон ми будемо використовувати за замовчуванням.
Для того щоб відобразити наявність товару в категорії робимо наступне:
1.У файл /catalog/language/russian/product/category.php
У будь-якому місці додаємо:
1 |
$_['text_instock'] = 'В наявності'; |
Я додав цей рядок після ($_['text_manufacturer'] = 'Виробник:';) але це не принципово і ви можете її вставити в будь-якому місці, між тегами <?php і ?> так само не забудьте зробити те ж саме з іншими мовними файлами якщо у вас магазин на кількох мовах.
Текст ми додали, тепер нам потрібно відкоригувати трохи сам контролер а саме:
2. У файлі catalog/controller/product/category.php
Після рядка:
1 |
'special' => $special, |
Додаємо:
1 2 3 |
'stock' => $result['quantity'], 'stock_status'=> $result['stock_status'], 'instock' => $this->language->get('text_instock'), |
Все з контролером також закінчили.
3. Ну і останнім нашим кроком ми виводимо всю цю конструкцію в файл нашого шаблону:
А саме відкриваємо:
catalog/view/theme/default/template/product/category.tpl
і в потрібному вам місці додаємо код:
1 2 |
<span style="font-weight: 700; color:#E10606;"><?php if ($product['stock'] <= 0) { ?> <?php echo $product['stock_status']; } ?></span> <span style="font-weight: 700; color:#428d2f;"><?php if ($product['stock'] > 0) { ?> <?php echo $product['instock']; } ?></span> |
Я його додав відразу під ціною а саме перед останнім div після коду:
1 2 |
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span> <?php } ?> |
Ось і все, таким нескладним чином ми додали в список товарів відображення його наявності, як все це виглядає ви можете подивитися на фото нижче.
Завдання №2
Тепер приступимо до розгляду другого питання, іноді нам потрібно зробити так що б товар якого немає в наявності був завжди в самому кінці списку товарів.
Рішення даного завдання ще простіше, відкриваємо файл catalog\model\catalog\product.php і міняємо в ньому код:
1 2 3 4 5 6 7 8 9 10 11 |
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'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; } |
На наступний код:
1 2 3 4 5 6 7 8 9 10 11 |
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { $sort = $data['sort']; } else { $sort = 'p.sort_order'; } $append_order = 'p.price = 0, p.quantity = 0,'; if ($sort == 'pd.name' || $sort == 'p.model') { $sql .= " ORDER BY $append_order LCASE($sort)"; } else { $sql .= " ORDER BY $append_order $sort"; } |
Все, тепер усі товари в яких в кількості вказано 0 відображатимуться в самому кінці списку всіх товарів категорії.
Завдання №3
Мене часто запитують як можна прибрати товари, яких немає в наявності, зі списку товарів OpenCart, але при цьому що б вони були доступні для пошукових систем.
Тобто завдання полягає в тому що б користувачі візуально не бачили такі товари, але що б вони могли переходити на них по прямих посиланнях, адже шкода ж видаляти товар повністю з магазину адже їх могли проіндексувати пошукові системи, і по них іде якийсь уже трафік, іноді навіть дуже непоганий трафік, звичайно ж клієнт який перейде за цим посиланням на ваш сайт не купить його так як його немає в наявності, але він можливо купить у вас якийсь інший товар який доступний у вас на складі.
І так давайте розглянемо як же все таки можна приховати відсутні товари з категорії, але залишити для них доступ за прямим посиланням.
А рішення як завжди дуже просте, знаходимо файл catalog/controller/product/category.php
і перед рядком:
1 |
if ($result['image']) { |
Додаємо наступне:
1 |
if ($result['quantity'] > 0) { |
Ну і обов'язково після рядка:
1 2 |
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); |
Закриваємо дужку, тобто додаємо:
1 |
} |
Ось в принципі і все, тепер при перегляді списку товарів в категорії користувач не побачить товарів в яких значення кількості дорівнює нулю.
Але при цьому товар буде доступний для користувачів які прийдуть до вас з пошукових систем. У даному доопрацюванні є один не істотний мінус, кількість загальна товарів в категорії буде відображатися вся, як і товарів в наявності так і товарів яких немає в наявності, але я думаю що це зовсім не істотний мінус.
Ну ось все що я хотів тут описати, буду радий якщо ця стаття буде комусь корисна!
3 коментарі
Дуже Вам дякую
Скажіть будь ласка як таке реалізувати на сторінці товару я про перше завдання.
Дякую.
Не совсем понял вопроса, так статус и так там по умолчанию отображается….