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

Howto

Quickcheckout: как сделать необязательным поле email?

Как скрыть "Адрес доставки: Адрес (продолжение):"

открыть файл catalog/view/theme/default/template/checkout/quickcheckout.tpl

найти там:

<tr>
                        <td><?php echo $entry_address_2; ?></td>
                        <td><input type="text" name="address_2" value="<?php echo $address_2; ?>" class="large-field"/></td>
                </tr>

и первую строку (<tr>) изменить на:

<tr style="display:none;">

Как сделать ввод почтового ящика необязательным

в этом же файле найдите чуть выше строку

<td><span class="required">*</span> <?php echo $entry_email; ?></td>

Далее...

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), которое можно использовать для контроля общей суммы заказа:

Далее...