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

Opencart 1.5.1.3 (admin): пара мелких улучшений Admin Dashboard

10 января 2012 г. Ruslan Brest Просмотров: 21212 RSS 7
Howto » OpenCart
,

Сегодня пара мелких, но полезных визуальных улучшений админки:

  • Выделение цветом разрешенных элементов в списках расширений (Дополнения / доставка, оплата и т.п.);
  • Dashboard - выделение красным пунктов, ожидающих модерации;
  • подсветка строки под курсором в таблицах (hover) (кажется было раньше, здесь для 1.5.1.3 уже за компанию попалось под руку)
  • Вспомните, как вы пропускали новые комментарии и ожидающих активации партнеров, а также с трудом пытались сориентироваться на большом экране, какой же модуль разрешён, а какой запрещён...

    Вспомнили? Тогда информация будет вам полезна:

    commit f9c192a6c30b7b8db5a5621b391680451c1c6d7d
    Author: Ruslan Brest <rb@labtodo.com>
    Date:   Fri Dec 30 20:37:51 2011 +0200
        [+] admin UI: Выделение цветом разрешенных элементов в списках расширений; Dashboard - выделение красным пунктов, ожидающих модерации
    diff --git a/upload/admin/controller/common/home.php b/upload/admin/controller/common/home.php
    index 06b5567..c2b1a7e 100644
    --- a/upload/admin/controller/common/home.php
    +++ b/upload/admin/controller/common/home.php
    @@ -147,16 +147,22 @@ class ControllerCommonHome extends Controller {
     		
     		$this->data['total_customer'] = $this->model_sale_customer->getTotalCustomers();
     		$this->data['total_customer_approval'] = $this->model_sale_customer->getTotalCustomersAwaitingApproval();
    +		if( $this->data['total_customer_approval'] > 0 )
    +			$this->data['total_customer_approval'] = sprintf('<span class="attn">%s</span>', $this->data['total_customer_approval']);
     		
     		$this->load->model('catalog/review');
     		
     		$this->data['total_review'] = $this->model_catalog_review->getTotalReviews();
     		$this->data['total_review_approval'] = $this->model_catalog_review->getTotalReviewsAwaitingApproval();
    +		if( $this->data['total_review_approval'] > 0 )
    +			$this->data['total_review_approval'] = sprintf('<span class="attn">%s</span>', $this->data['total_review_approval']);
     		
     		$this->load->model('sale/affiliate');
     		
     		$this->data['total_affiliate'] = $this->model_sale_affiliate->getTotalAffiliates();
     		$this->data['total_affiliate_approval'] = $this->model_sale_affiliate->getTotalAffiliatesAwaitingApproval();
    +		if( $this->data['total_affiliate_approval'] > 0 )
    +			$this->data['total_affiliate_approval'] = sprintf('<span class="attn">%s</span>', $this->data['total_affiliate_approval']);
     				
     		$this->data['orders'] = array(); 
     		
    diff --git a/upload/admin/controller/extension/feed.php b/upload/admin/controller/extension/feed.php
    index 6d8cf42..8ba93ff 100644
    --- a/upload/admin/controller/extension/feed.php
    +++ b/upload/admin/controller/extension/feed.php
    @@ -87,7 +87,7 @@ class ControllerExtensionFeed extends Controller {
     									
     				$this->data['extensions'][] = array(
     					'name'   => $this->language->get('heading_title'),
    -					'status' => $this->config->get($extension . '_status') ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    +					'status' => $this->config->get($extension . '_status') ? '<span class="enabled">'.$this->language->get('text_enabled').'</span>' : $this->language->get('text_disabled'),
     					'action' => $action
     				);
     			}
    diff --git a/upload/admin/controller/extension/payment.php b/upload/admin/controller/extension/payment.php
    index 50502c3..fc49d39 100644
    --- a/upload/admin/controller/extension/payment.php
    +++ b/upload/admin/controller/extension/payment.php
    @@ -97,7 +97,7 @@ class ControllerExtensionPayment extends Controller {
     				$this->data['extensions'][] = array(
     					'name'       => $this->language->get('heading_title'),
     					'link'       => $link,
    -					'status'     => $this->config->get($extension . '_status') ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    +					'status'     => $this->config->get($extension . '_status') ? '<span class="enabled">'.$this->language->get('text_enabled').'</span>' : $this->language->get('text_disabled'),
     					'sort_order' => $this->config->get($extension . '_sort_order'),
     					'action'     => $action
     				);
    diff --git a/upload/admin/controller/extension/shipping.php b/upload/admin/controller/extension/shipping.php
    index e801811..e5c6b4c 100644
    --- a/upload/admin/controller/extension/shipping.php
    +++ b/upload/admin/controller/extension/shipping.php
    @@ -88,7 +88,7 @@ class ControllerExtensionShipping extends Controller {
     										
     				$this->data['extensions'][] = array(
     					'name'       => $this->language->get('heading_title'),
    -					'status'     => $this->config->get($extension . '_status') ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    +					'status'     => $this->config->get($extension . '_status') ? '<span class="enabled">'.$this->language->get('text_enabled').'</span>' : $this->language->get('text_disabled'),
     					'sort_order' => $this->config->get($extension . '_sort_order'),
     					'action'     => $action
     				);
    diff --git a/upload/admin/controller/extension/total.php b/upload/admin/controller/extension/total.php
    index acbb06f..ebde251 100644
    --- a/upload/admin/controller/extension/total.php
    +++ b/upload/admin/controller/extension/total.php
    @@ -88,7 +88,7 @@ class ControllerExtensionTotal extends Controller {
     										
     				$this->data['extensions'][] = array(
     					'name'       => $this->language->get('heading_title'),
    -					'status'     => $this->config->get($extension . '_status') ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    +					'status'     => $this->config->get($extension . '_status') ? '<span class="enabled">'.$this->language->get('text_enabled').'</span>' : $this->language->get('text_disabled'),
     					'sort_order' => $this->config->get($extension . '_sort_order'),
     					'action'     => $action
     				);
    diff --git a/upload/admin/view/stylesheet/stylesheet.css b/upload/admin/view/stylesheet/stylesheet.css
    index fe82124..53f488f 100644
    --- a/upload/admin/view/stylesheet/stylesheet.css
    +++ b/upload/admin/view/stylesheet/stylesheet.css
    @@ -517,3 +517,12 @@ table.form > tbody > tr > td {
     	padding: 10px; 
     	min-height: 180px;	
     }
    +
    +/**** UI improvement ****/
    +.enabled {color: green;}
    +.attn {
    +	padding: 3px;
    +	background: #FFD1D1 10px center no-repeat;
    +	border: 1px solid #F8ACAC;
    +	color: #555555;
    +}
    \ No newline at end of file
    commit f825c12b92afe6f20137b38814a7b72f3381e729
    Author: Ruslan Brest <rb@labtodo.com>
    Date:   Fri Dec 30 20:04:14 2011 +0200
        [+] admin UI: подсветка строки под курсором в таблицах (hover)
    diff --git a/upload/admin/view/stylesheet/stylesheet.css b/upload/admin/view/stylesheet/stylesheet.css
    index bb9e451..fe82124 100644
    --- a/upload/admin/view/stylesheet/stylesheet.css
    +++ b/upload/admin/view/stylesheet/stylesheet.css
    @@ -304,6 +304,10 @@ a.button, .list a.button {
     	padding: 0px 5px;
     	background: #FFFFFF;
     }
    +.list tbody tr:hover td {
    +	background:  #e6f1ff;
    +	/*background: #ffe9a3;*/
    +}
     .list .left {
     	text-align: left;
     	padding: 7px;
    twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us
    Более 1000 готовых шаблонов Opencart для интернет-магазинов
    Комментариев: 7
    1. Добрый день!

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

      http://a4u.com.ua/bomann/Bomann-CM-2221

      http://a4u.com.ua/food/toster/Bomann-CM-2221

      Думаете ли с этим что-то решать? Или можете подсказать как решить. На форумах находил модули, но под последнюю версию opencart 1.5.1.3 решения пока не нашел.

      Спасибо за внимание.

      С уважением,

      MikleMi

    2. 2012-01-11 в 04:37:28 | Ruslan Brest

      Да, я знаю. Но не считаю это однозначно серьезной проблемой. Это считает проблемой Яндекс (и то не проблемой в смысле ошибки, а предупреждением в смысле "а хорошо бы вам указать, что тут основное"). Но у нас 600 с чем-то товаров. В индексе Яндекса - около 700 страниц (ага, вот: в поиске 660, загружено роботом 4284). Исключено по причине "не является каноническим" 1867 (по подсказке Опенкарта - у этих товаров указана ссылка на канонический документ). То есть технически я не вижу какой-то острой проблемы. Задача в списке есть, но я не считаю её критической и займусь тогда, когда время будет.

      В приведенном примере нет никаких дублей: в товаре http://a4u.com.ua/food/toster/Bomann-CM-2221 есть указание, дублем чего является эта страница:

      {link href="http://a4u.com.ua/Bomann-CM-2221" rel="canonical"}

      То, что это неочевидно и неудобно покупателю (не производится редирект) - да, это неудобно. И это меня больше мотивирует заняться этим вопросом. Но раз здесь речь про SEO проблемы - SEO проблемы здесь нет.

      Ещё момент. В Украине Яндексом пользуется 15% людей. К нам на сайт через Яндекс приходит около 20% трафика, 80 - с Гугла. Поэтому я не думаю, что что-то сильно изменится, если мы начнем ублажать Яндекс.

      Решение есть, называется Seo Pro. Автор - Yesvik на форуме opencartforum.ru. Раньше было доступно в виде модуля, сейчас он его включил в сборку ocStore, а в виде модуля отдельно не поддерживает. Поэтому надо либо оттуда выковыривать, либо ставить сборку ocStore, если этот вопрос критичен и хочется иметь решение "из коробки". Будут ли доп. ошибки в этой сбрке по сравнению с оригинальным Opencart 1.5.1.3 - не знаю, скорее всего да, судя по сообщениями на форуме за последние полгода. Насколько они там большие/мелкие/критичные - не знаю, я плотно не эксплуатирую эту сборку. Но авторы живые и русскоязычные. И их больше одного. По крайней мере Yesvik на багрепорты по своей части (SeoPro в частности) реагирует оперативно.

    3. Спасибо за внимание!

      Да, в Украине Гугл рулит (а мы с Яшей мучаемся).

      А разве canonical передает вес как 301 редирект? Ведь люди которые будут ссылаться на ваш сайт будут ставить разные ссылки на один и тот же товар, а это тоже к разряду SEO.

      Файл от Yesvik я находил, но он под ocStore. Буду надеется, что под Opencart 1.5.1.3 что-то будет =))

    4. 2012-01-11 в 21:16:12 | Ruslan Brest

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

      Так что я за здравый смысл и карму, а не SEO-заморочки для роботов. Будет время - займусь причесыванием и помоганием поисковикам более точно разобраться в контенте.

      Гугл тоже говорит о пользе rel=canonical. Но машины и без моего вмешательства пока распознают дубли. И гугл, и яндекс. Так что пока моя помощь им не требуется, я занимаюсь более творческими задачами, которые они делать не умеют.

    5. Да и я за продвижение хорошим контентом, хорошими фотками и качественным обслуживанием клиентов=)

      И 301 редирект принес бы дополнительную пользу людям, которые, за счет небольшого количества SEO, смогут попасть на качественный ресурс ;)

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

    7. 2012-04-27 в 01:39:47 | Ruslan Brest

      Разберитесь с тем, зачем нужен {link href="..." rel="canonical"}

    Оставьте комментарий!

    Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

    Имя и сайт используются только при регистрации

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

    Авторизация  Facebook. MaxSiteAuth. Loginza

    (обязательно)