Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

Howto

Opencart: чем отличаются купоны и подарочные сертификаты?

20 марта 2012 г. Ruslan Brest Howto » OpenCart11
В чем отличия подарочного сертификата от скидочного купона в ОС? есть ли принципиальные отличия?

Сертификат - это нечто, что вы можете купить и переслать другому человеку, чтобы он имел возможность купить в этом магазине. Подарочная карта, предоплаченная кем-то другим. Индивидуальная.

Купон - это просто код и способ дать скидку любому, кто его знает. Можно использовать как способ отслеживать разные каналы продвижения: Вконтакте один код раздаёте, в фейсбуке другой, в блоге третий. Удобно также для более простой организации скидок без регистрации и включения покупателей в определенную группу. К тому же цены для этой группы придётся всем товарам прописывать (если не использовать какие-то модули в дополнение к стандартным возможностям Опенкарт).

Индикация цен опций товара заменена на абсолютную величину (вместо разницы +X руб, -Y руб)

13 марта 2012 г. Ruslan Brest Howto » OpenCart11

Рецепт ниже.

Вообще-то применять такое изменение можно только в том случае, если ваши товары имеют всего один набор опций, влияющих на цену.

Далее...

Opencart 1.5.1.3 (backend): Продажи - Заказы - Товары: показ колонки SKU в списке товаров

29 февраля 2012 г. Ruslan Brest Howto » OpenCart28

admin: Продажи - Заказы - Товары: добавлена колонка SKU

Выводится ТЕКУЩЕЕ значение SKU из базы. То есть если продали товар, затем SKU изменился - старый не сохраняется в отличие от названия товара, модели, цены и прочего. То есть при просмотре старых заказов могут быть неточности: вы увидите состояние SKU не на тот момент (когда был сделан заказ), а на нынешний.

Далее...

(oc1513)(admin) Ссылка на просмотр товара в магазине при просмотре заказа в админке

28 февраля 2012 г. Ruslan Brest Howto » E-commerce » OpenCart3

При просмотре заказа в админке ссылка на заказываемый товар ведёт на редактирование товара. Мне показалось гораздо более удобным иметь здесь прямую ссылку на страницу товара в магазине.

В некоторых магазинах менеджер-продажник всё равно не имеет прав на редактирование товаров.

Есть здесь один момент: у нас ВСЕ товары имеют SEO Keyword, поэтому не делались никакие проверки. Гораздо более универсальным и более простым решением будет использовать ссылку HTTP_CATALOG . 'index.php?route=product/product&product_id=' . $product['product_id'].

В таком случае указанный код надо подставить в контроллере на место 'href_catalog', а запрос к базе в модели вообще не модифицировать.

commit da02db89ca4be51a282cb49cd58a3160cc4bf747
Author: Ruslan Brest <rb@labtodo.com>
Date:   Tue Feb 28 02:37:40 2012 +0200
    [+] backend: view order - link to frontend (product page)
diff --git a/upload/admin/controller/sale/order.php b/upload/admin/controller/sale/order.php
index 871c36f..029ba41 100644
--- a/upload/admin/controller/sale/order.php
+++ b/upload/admin/controller/sale/order.php
@@ -1327,7 +1327,8 @@ class ControllerSaleOrder extends Controller {
 					'quantity'		   => $product['quantity'],
 					'price'    		   => $this->currency->format($product['price'], $order_info['currency_code'], $order_info['currency_value']),
 					'total'    		   => $this->currency->format($product['total'], $order_info['currency_code'], $order_info['currency_value']),
-					'href'     		   => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $product['product_id'], 'SSL')
+					'href'     		   => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $product['product_id'], 'SSL'),
+					'href_catalog'     => HTTP_CATALOG . $product['keyword']
 				);
 			}
 
diff --git a/upload/admin/model/sale/order.php b/upload/admin/model/sale/order.php
index b580167..c702009 100644
--- a/upload/admin/model/sale/order.php
+++ b/upload/admin/model/sale/order.php
@@ -365,7 +365,8 @@ class ModelSaleOrder extends Model {
 	}
 
 	public function getOrderProducts($order_id) {
-		$query = $this->db->query("SELECT op.*,p.sku FROM " . DB_PREFIX . "order_product op LEFT JOIN ".DB_PREFIX."product p ON (op.product_id = p.product_id)  WHERE order_id = '" . (int)$order_id . "'");
+		//$query = $this->db->query("SELECT op.*,p.sku FROM " . DB_PREFIX . "order_product op LEFT JOIN ".DB_PREFIX."product p ON (op.product_id = p.product_id)  WHERE order_id = '" . (int)$order_id . "'");
+		$query = $this->db->query("SELECT op.*,p.sku,ua.* FROM " . DB_PREFIX . "order_product op LEFT JOIN ".DB_PREFIX."product p ON (op.product_id = p.product_id) LEFT JOIN ".DB_PREFIX."url_alias ua ON CONCAT('product_id=', op.product_id) = ua.query WHERE order_id = '" . (int)$order_id . "'");
 
 		return $query->rows;
 	}
diff --git a/upload/admin/view/image/url-icon.gif b/upload/admin/view/image/url-icon.gif
new file mode 100644
index 0000000..8165dc9
Binary files /dev/null and b/upload/admin/view/image/url-icon.gif differ
diff --git a/upload/admin/view/template/sale/order_info.tpl b/upload/admin/view/template/sale/order_info.tpl
index 673b599..55be799 100644
--- a/upload/admin/view/template/sale/order_info.tpl
+++ b/upload/admin/view/template/sale/order_info.tpl
@@ -269,6 +269,7 @@
               <td class="left"><?php echo $product['sku']; ?></td>
               <td class="left"><?php if ($product['product_id']) { ?>
                 <a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
+                <a href="<?php echo $product['href_catalog']; ?>" target="_blank"><img src="view/image/url-icon.gif" width="13" height="13" /></a>
                 <?php } else { ?>
                 <?php echo $product['name']; ?>
                 <?php } ?>

Opencart 1.5.1.3 (backend): улучшение поиска в фильтрах - не только с начала строки или по полному совпадению (имя, email, IP, опции, атрибуты)

27 февраля 2012 г. Ruslan Brest Howto » OpenCart3

Админка: улучшение поиска в фильтрах - не только с начала строки или по полному совпадению (имя, email, IP, опции, атрибуты).

Для тех, кто хочет искать не только по имени, но и фамилии покупателей, а также по части IP-адреса и почтовому домену, и т.д. и и т.п.

Далее...

Opencart 1.5.x: удобный вид email-уведомлений админу о заказе

24 февраля 2012 г. Ruslan Brest Howto » OpenCart87

Формируемое в Опенкарт v1.5.x письмо-уведомление для администрации магазина о новом заказе выглядит криво-косо и неудобно для обработки поступивших заказов: не хватает информации о покупателе, а та информация, что есть, сложна для восприятия.

Можно сделать удобнее.

Формирование и отсылка писем происходит в файле catalog/model/checkout/order.php

Тексты частей писем находятся в папке catalog/language/russian/mail -- из содержащихся там фраз формируются письма.

Далее...

Opencart 1.5.1.3: добавляем главную страницу в sitemap.xml

22 февраля 2012 г. Ruslan Brest Howto » SEO » OpenCart4

Оказывается, в sitemap.xml (Google sitemap) нет ссылки на главную страницу сайта. Добавляем несколько строк в catalog/controller/feed/google_sitemap.php:

Далее...

Opencart 1.5.1.3: выдача HTTP/404 для товаров, которые отключены администратором

22 февраля 2012 г. Ruslan Brest Howto » OpenCart » SEO16

В Опенкарт, если товар отключен, а внешняя ссылка на него где-то сохранилась, при переходе по ней будет отдан HTTP код 200 (OK) вместо более правильного 404 (Not Found).

Эту ситуацию исправляет одна строчка, см. патч ниже.

Спасибо: molotochek, см. http://opencartforum.ru/topic/418-%d0%bd%d0%b5-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d0%b5%d1%82-404/page__view__findpost__p__46795

Далее...

Quickcheckout: контроль суммы заказа (не менее чем)

16 февраля 2012 г. Ruslan Brest Howto » OpenCartОбсудить

Небольшое изменение для формы быстрого заказа (quickcheckout), которое можно использовать для контроля общей суммы заказа:

Далее...

Opencart 1.5.1.2: Модуль категорий: третий уровень (без оптимизации запросов)

30 января 2012 г. Ruslan Brest Howto » OpenCart19

Запоздало публикую рецепт вывода 3-го уровня категорий для версии 1.5.1.2. Способ стандартный опенкартовский, чудовищно неоптимальный, но мне надо было сделать быстро, поэтому не стал голову морочить. Для 1.5.1.3 надо будет сделать получше (если это ещё не сделано кем-то ещё).

Количество категорий - 91. Первого уровня - около десятка. Визуально на скорости загрузки страниц это добавление третьего уровня никак не сказалось. Цифры не смотрел.

Заодно было убрано отображение количества товаров в скобках: при большом количестве категорий и узкой колонке внешний вид сильно страдает от их наличия, список выглядит неряшливо.

Тем, кому количество товаров в категориях захочется оставить - верните на место закомментированные в паре мест $product_total, я их оставил в коде. Но это вам и тормозов добавит. Я бы, если и оставлял отображение количества , то на небольших списках и желательно с короткими названиями (не многострочными).

Далее...