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

UX

Sticky-меню и sticky-footer - кошмар для мобильных пользователей

Что за тренды такие? То делают повсеместно буквы такие громадные, как будто люди без очков на Земле кончились. А те, что остались, обожают листать по 5-10 строчек текста вместо того, чтоб читать. Там, где легко 50 помещалось до того, как дизайнерам не сказали, что теперь это круто. Были палмы с экранами 160x160 и 320x320 - на них комфортно помещалось 20-25 строк текста. Теперь экраны телефонов в 3 раза больше физически, разрешение то 480 на хрен-знает-сколько, то 800x480. А количество строк текста стало не 50, а 20 или и того меньше меньше...

Теперь вот ещё замечаю чуть ли не на каждом сайте то меню, то футер с соц-иконками, которые хотят остаться на экране постоянно.

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

Желаю всем веб-мастерам поставить на sticky-menu кнопку закрытия. И отслеживать аналитику кликов по убиранию вашего мусора с наших экранов. Не нужно на экране постоянно ни меню, ни футер, ни соцкнопки. Мы прекрасно помним, где они находятся, а время нахождения на сайте эти ухищрения не увеличат. Скорее уменьшат. Видеть кусочек полезного контента сквозь крохотную оставшуюся амбразуру на весьма больших экранах мобильных устройств и одновременно радоваться такому неудобству - задачи несовместимые.

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

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

28 февраля 2012 г. Ruslan Brest E-commerce » Howto » 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 } ?>