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

E-commerce

(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

29 января 2012 г. Ruslan Brest E-commerce » Yii Framework » OpenCart2

Встречайте форум для Опенкарт 1.5.1.x. Интегрируется с базой Опенкарт (как пользователями, так и покупателями), настраивается из админки. Написан на CakePHP. Живёт на гитхабе.

GitHub: https://github.com/horechek/ocforum

Демо: http://demoshop.tvorzasp.com/forum/

Оригинал новости на сайте автора: http://tvorzasp.com/blog/forum-dlya-opencart

UPD 2012-09-02: Новый OC Forum 0.2.0alpha. -CakePHP, +Yii

Quickcheckout (1.5.1.3) адаптирован для темы Shoppica

21 декабря 2011 г. Ruslan Brest E-commerce » OpenCart1

Исправлен внешний вид и проблема с Шоппикой: теперь не надо модифицировать common/header.tpl, перенося в него строчку с включением скрипта Fancybox из аналогичного файла темы Default (см. bugtracker, #2).

Единственная проблема, которая там осталась - при использовании галочки согласия покупателя с условиями я пока не могу вывести текст в окно PrettyPhoto, как сделано в стандартной форме оформления заказа. Если кто силён в jQuery - буду благодарен за подсказку. Этот яваскрипт мне уже весь мозг выел. PrettyPhoto ругается на неправильную картинку, хотя отличий от стандартной формы оформления заказа я при беглом осмотре не увидел. Придётся искать-читать про премудрости преттифото. А лучше отключите эту галочку и не мучайте своих покупателей. Всё равно в 2-недельный срок товар вернуть можно по закону, несмотря ни на какие галочки.

P.S. Архив ещё не рассылал. Чуть позже сделаю.

UPD 22 Dec. Со вчерашнего дня по семейным делам пришлось срочно бегать по аптекам и больницам, поэтому обновление задерживается.

UPD 26 Dec. Разослал наконец-то.

(Не?)Эффективность стандартной формы заказа Opencart 1.5.1

Магазин молодой, так что цифры соответствующие. В люди вышел в сентябре (может ближе к концу - в 20 числах; точно не помню). Посещаемость небольшая, но мы над этим работаем и она понемногу стабильно растёт. Заказов было немного, и во многом это заслуга монстрообразной формы оформления заказа. А не только малой посещаемости.

Недавно я поставил укороченную форму оформления заказа (на выходных) и поэтому решил сохранить предыдущую историю как иллюстрацию и чтобы иметь возможность визуально убедиться во влиянии этого шага оформления покупки. На картинках - данные до её установки.

Далее...

Opencart 1.5.1.x: Упрощённое оформление заказа на одной странице (Quickcheckout one-page simple checkout)

15 ноября 2011 г. Ruslan Brest E-commerce » OpenCart303

Сделал вот такую укороченную форму заказа (скриншоты ниже). Упрощённое гостевое оформление заказа на одной странице.

Преимущества (они же и недостатки):

  • Предельно компактно и быстро, не утомляет покупателя. По статистике на каждом лишнем шаге при оформлении заказа сходят с дистанции 20% покупателей;
  • Всё на виду и получилось весьма удобно и наглядно;
  • Предполагается оплата исключительно методом "Cash on delivery" (оплата наличными по факту доставки). Всё остальное решается по телефону и комментариями;
  • В админке нет никаких настроек (это касаемо предыдущего пункта; используется только cash-on-delivery способ, и он указан в коде и должен быть разрешен).
  • Нет никакого учёта всего, что связано с адресом и гео-информацией (включая налоги, так как они зависят от адреса)

Модуль совместим только с версиями 1.5.1.*. Под более новые адаптировать не планирую, т.к. альтернатив уже существует большое количество и можно взять готовое решение. Создавать ещё одно решение будет также стоить денег, причины постарался описать в отдельной статье (см. также в конце, в списке связанных статей). Есть версия под Opencart 1.4.9.x (ocStore 0.2.2 / 0.2.0). Ниже описаны недостатки и возможности.

Купить

Оплата вручную:
Webmoney кошельки: Z385421512525, R304747241741 U415109965360 E180553785592


Оплата карточкой или Paypal:

Version
Email for sending .ZIP-file:
  1. Удобнее всего купить модуль быстрого оформления заказа на Opencart.com. Там архив сразу доступен для скачивания и не надо ждать, пока я его отправлю. Также проще будет забирать обновления в любой удобный момент - вы будете получать уведомления от сервиса по email;
  2. Вручную за 10WMZ, или по курсу в WMR или WMU. Или 10$ через Paypal (там же принимаются банковские карты). В комментариях к платежу укажите свой email, на который надо выслать ZIP архив с модулем.

Вручную я высылаю архив сразу после того, как узнаю о платеже. Обычно это занимает не более суток. Чаще гораздо меньше, но случаи разные бывают и иногда я могу быть недоступен. Webmoney не присылает мне никаких уведомлений на email (единственный из сервисов, кстати), поэтому о платеже там лучше написать дополнительно на email или через форму обратной связи в блоге. Иначе узнать о платеже там я могу лишь по чистой случайности.

Поэтому рекомендую довериться автоматике на Opencart.com. Там немного дороже, но покупка удобнее для последующих обновлений. И может оказаться быстрее, чем с моим участием.

Если покупаете на Опенкарт.ком, посмотрите на пару способов доставки с текстом и ссылками вместо цены — они удобны для курьерских служб.

Возможности и ограничения

Версия Quickcheckout для Opencart 1.5.1 поставляется в 2 версиях:

  • более старая (QC) не имеет выбора способов оплаты (покупателю надо выбрать только доставку), но может быть гораздо удобней тем магазинам, которые торгуют локально по городу и доставляют товары по стране, используя единственный способ оплаты - из рук в руки;
    • Этот вариант не заменяет никакие файлы Opencart;
  • QCPM (с поддержкой способов оплаты, payment methods) существует для версии Опенкарт 1.5.1.3.
    • этот вариант заменяет часть стандартных файлов - более подробная информация в README в соответствующей папке. Присылайте неизвестные мне модули или содержимое этой папки (tpl файлы) - я их модифицирую для QC/PM и включу tpl в архив

Admin: Дополнения / Доставка:

Будут использоваться только те модули, в которых установлена географическая зона ВСЕ РЕГИОНЫ. Это связано с тем, что из модуля полностью убрано всё, что связано с географической информацией.

Внимание: модуль "Доставка в зависимости от веса" не будет работать -- у него отсутствуют настройки для всех регионов.
Если вы используете вес товаров - включите вместо него способ "Доставка по городу Citylink".
Если вес не нужен - попробуйте "Фиксированную стоимость доставки" или другой подходящий способ.

Если пользователь зарегистрирован и предварительно залогинился, его данные подставятся в форму (имя, email, телефон) и заказ будет связан с этим покупателем. Планируется добавить возможность быстрой регистрации, но сроки неизвестны.

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

Демо: http://rb.labtodo.com/shop/test-demo

В версии Quickcheckout для Opencart 1.4.9.x (ocStore 0.2.2 / 0.2.0) есть и оплата, и доставка, но не проверялась работа с зарегистрированными пользователями - было сделано только гостевое оформление. Эта версия заменяет стандартные файлы опенкарт, поэтому если используется другая тема оформления -будьте аккуратны при установке и сделайте предварительно резервные копии ваших файлов.

Демо: http://ocs020.labtodo.com/

Далее...

Русский перевод Opencart v1.5.0.5, v1.5.1, 1.5.2, 1.5.3, 1.5.4/1.5.5, 1.5.6. Информация о других переводах (русский, украинский языки)

17 июля 2011 г. Ruslan Brest E-commerce » OpenCart87

Перевёл пользовательскую часть OpenCart v1.5.0.5. Админку не трогал: на её перевод сейчас нет времени. Возможные проблемы и неточности:

  • Wishlist перевёл как закладки, ничего более подходящего и короткого не придумывается, а по смыслу подходит прекрасно;
  • в районе налогов скорей всего ошибка: в оригинале было "Ex Tax". Я не знаю, что это такое, хотя может оказаться, что "excluding tax", т.е. без НДС или что-то в этом роде. В общем, в этих местах я писал "Без НДС" "НДС", и скорей всего это неправильно. Мы в своём магазине ещё будем это смотреть и проверять с партнёрами, а я пока предупреждаю, что здесь может быть засада.
  • Мне не понравилось стандартное оформление сообщений пары способов доставки (2 практически одинаковые строчки) при оформлении заказа, поэтому принял несколько спорное решение: включил цену доставки прямо в сообщение. То есть цена указана прямо в языковых файлах и изменить её из админки не удастся. Получилось замечательно, но имейте этот момент в виду. В языковых файлах всего в паре мест должна встречаться строчка "грн". Поэтому достаточно найти и убрать упоминания "грн" и конкретной стоимости в 4 файлах:
    • catalog/language/russian/shipping/free.php
    • catalog/language/russian/shipping/flat.php
    • admin/language/russian/shipping/free.php
    • admin/language/russian/shipping/flat.php

Базовым вариантом послужил русский перевод пользователя alsrmurad от 22 июня 2011 года. Но многие строки там были предельно кошмарны и с ошибками: то ли машинный перевод, то ли переводчик не русский, а просто знает язык недостаточно хорошо. Или банально спешил выложить. Во всяком случае я по-любому благодарен автору за частично сделанный перевод: это сэкономило немало времени и избавило от приличной части рутинных операций.

UPD 2011-07-21: небольшие обновления и исправления ошибок. Узнал также о существовании ещё одного перевода Opencart, есть SVN. См. также ветку форума opencartforum.ru.

UPD 2011-07-25: Dmitry добавил свой перевод административной части Opencart 1.5.0-1.5.1. Правда, скачать без регистрации невозможно.

UPD 2011-07-29: Очередное обновление замеченных ошибок, неточностей и корявостей. На этом я прощаюсь с версией 1.5.0.5 и мигрирую на 1.5.1.1 - они очень похожи, но мелкие отличия в языковых файлах есть. Собираюсь держать свою версию перевода 1.5.1 здесь же рядом с 1.5.0.5, и может быть на этот раз будет время заняться административной частью. Я присоединился к команде переводчиков ocStore (русской сборки OpenCart) на assembla.com (см. выше про SVN), поэтому частично мои правки попадают туда (коммичу не все свои варианты, и местами там не все варианты нравятся), частично многое я возьму оттуда. Но так как там обновляется только текущая версия перевода, а ветки по конкретным версиям не хранятся, я решил продолжать держать у себя те версии, с которыми работаю, в виде отдельных архивов.

UPD 2011-09-16: Исправлен ошибочный перевод в админке, также ранее вносились мелкие изменения.

UPD: Украинским переводом занимаются парни с opencart-ua.org

Скачать

Далее...

Улучшение поиска в OpenCart 1.5: поиск по описанию, подкатегориям, по модели и SKU

4 июля 2011 г. Ruslan Brest Howto » E-commerce » OpenCart83

По умолчанию поиск в OpenCart производится только по названиям продуктов. Что довольно неудобно для покупателя и не оправдано, если продуктов на сайте не так уж и много (думаю, на нескольких сотнях наименований никакой разницы не будет заметно).

Далее...