суббота, 31 мая 2014 г.


Вообще гениальная идея, как по мне. Как показывает моя практика в основном 70% покупателей в магазине звонят по телефону и заказывают товар. Следует вопрос, а откуда этот клиент пришел& Да конечно можно цели и смотреть коэффициент конверсии через аналитику Google Analytics или Яндекс метрика, но сможем увидеть только поток покупателей.

То есть останется только гадать! Так как же реализовать такую живую конверсию? 

Шаг. 1 Строим логику реализаций конверсии по звонкам

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

Первый способ заключает в самих номерах телефона. Допустим вы создаете три платных трафика и один бесплатный. Бесплатный это у нас органика, а платный каталоги типа hotline и тому подобных. Вот и что бы этот отследить при переходе на страницу покажет условный номер телефона, который вы задали под источник трафика. Но к примеру. Я разместил рекламу на партнерском сайте и при этом еще в одном каталоге. Трафик пошел, но я прекрасно знаю, что один из них менее эффективен чем другой. И я задаю условие что с сайта А на мой будет показываться телефон ТА, если переходит с сайта Б то будет показываться телефон ТБ, но если трафик будет идти с органики то будет показываться телефон ОТ.
И таких потоков будет много и с каждым разом отсеивать и покупать номера очень затратное. Поэтому я склоняюсь больше ко второму способу.

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

Я думаю для некоторых это идея в вполне стала интересной. После создании пользовательской логики нам теперь нужно приступить к технической части. 

пятница, 2 мая 2014 г.


На самом деле все не так сложно, как кажется. Преимущества данного дополнения уже присутствует в движке, при чем во всех версиях. И реализация данного дополнения тоже не очень сложна, но некоторые фрагменты и знание языка в PHP вам пригодиться. На самом деле CMS OpenCart очень прост в понимании и простоты кода, не говоря уже о самой реализации дополнительных модулей.

Так вот давайте начнем вносить оригинальность нашему товару и категории. Допустим, нам поставили задачу что бы в данной категории товар показывался списком, а не блоками. Но на некоторых будет показываться блоками. И реализация таких фрагментов была с админки магазина.

Для начала нам нужно будет создать такие файлы:

catalog/view/theme/default/template/product/listcategory.tpl
catalog/controller/product/listcategory.php
catalog/ language/*/product/listcategory.php
*наименование папки используемого языка в каталоге

после того как создали выше указанный файлы скопируем коды готовой категории в новую категорию. После того как мы сохранили далее открываем

 catalog/controller/product/listcategory.php

В начале документа находим код:
1
class ControllerProductCategory extends Controller {  

И изменяем на:

1
class ControllerProductListcategory extends Controller {  

После прокручиваем немного ниже и пропишем путь к нашему новому шаблону


1
2
3
4
5
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
   } else {
    $this->template = 'default/template/product/category.tpl';
   }

И Изменяем на:


1
2
3
4
5
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/listcategory.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/product/listcategory.tpl';
   } else {
    $this->template = 'default/template/product/listcategory.tpl';
   }

Далее сохраняем документ и открываем catalog/view/theme/default/template/product/listcategory.tpl
Для начала изменим класс отображаемового тега HTML блока товара


1
<div class="product-grid">

Далее изменям класс на

1
<div class="product-list">

Далее нужно изменить переменную для куки в javaScript, если его не изменить куки будет определяться параллельно для двух файлов. Находи такие строки:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<script type="text/javascript"><!--
function display(view) {
 if (view == 'list') {
  $('.product-grid').attr('class', 'product-list');

  $('.product-list > div').each(function(index, element) {
   html = '<div class="right">';
   html += '  <div class="cart">' + $(element).find('.cart').html() + '</div>';
   html += '  <div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
   html += '  <div class="compare">' + $(element).find('.compare').html() + '</div>';
   html += '</div>';

   html += '<div class="left">';

   var image = $(element).find('.image').html();

   if (image != null) {
    html += '<div class="image">' + image + '</div>';
   }

   var price = $(element).find('.price').html();

   if (price != null) {
    html += '<div class="price">' + price + '</div>';
   }

   html += '  <div class="name">' + $(element).find('.name').html() + '</div>';
   html += '  <div class="description">' + $(element).find('.description').html() + '</div>';

   var rating = $(element).find('.rating').html();

   if (rating != null) {
    html += '<div class="rating">' + rating + '</div>';
   }

   html += '</div>';


   $(element).html(html);
  });

  $('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display(\'grid\');"><?php echo $text_grid; ?></a>');

  $.cookie('display', 'list');
 } else {
  $('.product-list').attr('class', 'product-grid');

  $('.product-grid > div').each(function(index, element) {
   html = '';

   var image = $(element).find('.image').html();

   if (image != null) {
    html += '<div class="image">' + image + '</div>';
   }

   html += '<div class="name">' + $(element).find('.name').html() + '</div>';
   html += '<div class="description">' + $(element).find('.description').html() + '</div>';

   var price = $(element).find('.price').html();

   if (price != null) {
    html += '<div class="price">' + price + '</div>';
   }

   var rating = $(element).find('.rating').html();

   if (rating != null) {
    html += '<div class="rating">' + rating + '</div>';
   }

   html += '<div class="cart">' + $(element).find('.cart').html() + '</div>';
   html += '<div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
   html += '<div class="compare">' + $(element).find('.compare').html() + '</div>';

   $(element).html(html);
  });

  $('.display').html('<b><?php echo $text_display; ?></b> <a onclick="display(\'list\');"><?php echo $text_list; ?></a> <b>/</b> <?php echo $text_grid; ?>');

  $.cookie('display', 'grid');
 }
}

view = $.cookie('display');

if (view) {
 display(view);
} else {
 display('list');
}
//--></script>

И от А до Я удаляем этот скрипт! Так же и удалите этот фрагмент


1
<div class="display"><b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a></div>

С внешней частью кода разобрались, теперь осталось немного. Далее заходим в административную (админка) часть сайта и переходим по такому пути Система -> Дизайн -> Схемы. После создаем новый дизайн нажимаем кнопку "Добавить" и дадим нашему макету называние "Category_List", теперь нажимаем на кнопку "Добавить Путь". После выбираем магазин по умолчанию, или тот в котором он нужен и в строке "Путь:" Указываем "product/listcategory". Далее нажимаем кнопку "Сохранить"

После того как мы это все создали, теперь можем смело указать новый дизайн для категории. Переходим в админке Каталог -> Категории -> Добавить /или/ Изменить уже созданную категорию. После чего переходим во вкладку дизайн и выбираем в выпадающем списке "Category_List" и Сохраняем.

Поздравляю теперь вы справились с поставленной задачей!)
Такую же саму операцию Вы сможете и проделать с карточкой товара, и для каждого лота выставить свой уникальный дизайн!

P.S. Оставляйте ваши вопросы и Коментарии. Спасибо за Внимание

четверг, 1 мая 2014 г.


Думаю, уже каждый программист встретился с этой проблемой… Спустя некоторое время после реализации моих заказов становится выгоднее поддерживать проект, особенно тот, который сконструировал и разработал сам.


В этой статье я вам расскажу, как могут увеличится продажи за счёт такого инструмента.  Ознакомившись с документацией на google.com, решил все-таки попробовать. Так как уже в последнее большинство интернет магазинов показывают свою цену, отзывы и наличие данного товара.

Шаг 1. Добавьте свой сайт в Веб Мастер Google и Яндекс

Шаг 2. Создайте файловую резервную копию вашего Интернет Магазина и БД.

Шаг 3. Теперь уверенно можем приступать к работе.

            Для начало откроем программный код нашего шаблона. Хочу предупредить код который будет ниже – код предустановленного шаблона после установки OpenCart. Нам понадобиться открыть файл product.tpl – catalog/view/default/product/product.tpl. Копировать весь код не буду, акцент сделаю на нужных строках. 

Для начала нужно определить блок и указать поисковику где находится данные о товаре. Найдем целевой блок

1
<div id="content">

И добавим в тег 

1
<div id="content" itemscope itemtype="http://schema.org/Product">

После этого блока внутри него нужно разместить некоторые расширенные данные о станице в целом


1
2
3
4
5
<meta property="og:title" content="<?php echo $product_info['heading_title']; ?>"/> <!-- Титл Страницы -->
<meta property="og:url" content="<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>"/> <!-- url Страницы -->
<meta property="og:image" content="<?php if ($thumb || $images) { if ($thumb) { echo $popup; } } ?>"/> <!-- Изображение товара -->
<meta property="og:type" content="product"/> <!-- Тип данных -->
<meta property="og:site_name" content="exemple.web"/> <!-- Адрес вашего сайта -->

Теперь пометим микроданными "Хлебные крошки" путь к товару.

1
2
3
4
5
<div class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
    <?php } ?>
  </div>

Данный код должен быть переобразован в этот. Это нам даст непонятный набор цифр и букв, или сильного длинного ЧПУ, который поиск как то не понятно считывает его. Но из-за скорости сканирование, лучше его писать - это обеспечит вам результат в других поисковиках. Так вот

1
2
3
4
5
<div class="breadcrumb" xmlns:v="http://rdf.data-vocabulary.org/#">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a typeof="v:Breadcrumb" rel="v:url" property="v:title" href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
<?php } ?>
  </div>

То есть мы обозначаем сразу Имя, Ссылку и Тип выгружаемых данных к пути карточке товара
Далее немного детальнее пометим в карточке товара  Название, модель, цену, рейтинг по отзывам.


1
<h1><?php echo $heading_title; ?></h1>

Тут бы обозначаем имя товара


1
<h1 itemprop="name"><?php echo $heading_title; ?></h1>

Теперь добавляем цену товара


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } ?>

И код должен будет выглядеть так


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php if ($price) { ?>
      <div class="price" itemprop="offers" itemscope itemtype="http://schema.org/Offer"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
       <span itemprop="price"> <?php echo $price; ?></span> 
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"  itemprop="price"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
            <meta itemprop="priceCurrency" content="UAH" /> <!-- Валюта -->
  <link itemprop="availability" href="http://schema.org/InStock" /> <!-- Наличие -->
      </div>
      <?php } ?>

И заключительная часть это обозначить рейтинг товара. Значит оригинальный код выглядит так


1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php if ($review_status) { ?>
      <div class="review">
        <div><img src="catalog/view/theme/default/image/stars-<?php echo $rating; ?>.png" alt="<?php echo $reviews; ?>" />&nbsp;&nbsp;<a onclick="$('a[href=\'#tab-review\']').trigger('click');"><?php echo $reviews; ?></a>&nbsp;&nbsp;|&nbsp;&nbsp;<a onclick="$('a[href=\'#tab-review\']').trigger('click');"><?php echo $text_write; ?></a></div>
        <div class="share"><!-- AddThis Button BEGIN -->
          <div class="addthis_default_style"><a class="addthis_button_compact"><?php echo $text_share; ?></a> <a class="addthis_button_email"></a><a class="addthis_button_print"></a> <a class="addthis_button_facebook"></a> <a class="addthis_button_twitter"></a></div>
          <script type="text/javascript" src="//s7.addthis.com/js/250/addthis_widget.js"></script> 
          <!-- AddThis Button END --> 
        </div>
      </div>
      <?php } ?>

Отмеченный код с рейтингом( отзывов ) имеет такой вид:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php if ($review_status) { ?>
      <div class="review" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
        <div><img src="catalog/view/theme/default/image/stars-<?php echo $rating; ?>.png" alt="<?php echo $reviews; ?>" />&nbsp;&nbsp;
        <meta itemprop="ratingValue" content="<?php echo $rating; ?>" />
        <meta itemprop="bestRating" content="5" />
        <?php if(!$rating == 0) { ?><meta itemprop="reviewCount" content="<?php echo $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); ?>" /><?php } ?>
       <a onclick="$('a[href=\'#tab-review\']').trigger('click');"><span ><?php echo $rating; ?></span><?php echo $reviews; ?></a>&nbsp;&nbsp;|&nbsp;&nbsp;<a onclick="$('a[href=\'#tab-review\']').trigger('click');"><?php echo $text_write; ?></a></div>
        <div class="share"><!-- AddThis Button BEGIN -->
          <div class="addthis_default_style"><a class="addthis_button_compact"><?php echo $text_share; ?></a> 
          <a class="addthis_button_email"></a><a class="addthis_button_print"></a> <a class="addthis_button_facebook"></a> <a class="addthis_button_twitter"></a></div>
          <script type="text/javascript" src="//s7.addthis.com/js/250/addthis_widget.js"></script> 
          <!-- AddThis Button END --> 
        </div>
      </div>
      <?php } ?>

И все Теперь вы можете проверять и загружать обновленную страницу товара в поисковые системы. Для более детального изучения микроданных вы можете посетить такие сайты:


Для результаты проделанной работы вы можете посмотреть по этой ссылке - https://www.google.com/webmasters/tools/richsnippets?q=http%3A%2F%2Fstylezvuka.com.ua%2Fvideoregistratory%2Favtomobilnye-videoregistratory%2Fdvr-parkcity%2Fparkcity-dvr-hd-590