Buyme: установка скрипта покупки за один клик на Prestashop

Список розділів Кухня PrestaShop

Опис: Встановити скрипти, обговорити Prestashop, допиляти

#1 Nazar Tokar » 04.06.2013, 17:54

Меня попросили написать инструкцию по установке скрипта покупки за один клик на Prestashop. Ну а почему бы и нет. Сейчас расскажу, как это делается.

buyme-prestashop.jpg


Загрузить файлы

Скачиваем архив с BuyMe, распаковываем и переменовываем папку buyme. Открываем buyme/index.php в редакторе кода и указываем свою почту и если надо, настраиваем смс.

presta-02.jpg


Дальше будет не очень просто, но задача вполне вполне решаема. Для установки нам потребуется: полчаса времени, полбутылки каберне и несколько предложений, состоящих из оборотов с использованием слов «зачем», «куда» и «престашоп», но в основном из мата. Так что запаситесь терпением и смотрите, что нам нужно сделать.

Настроить страницу товара

Ищем файл /themes/%THEME%/product.tpl и в нём ищем строку:

Код: Виділити все
<h1>{$product->name|escape:'htmlall':'UTF-8'}</h1>

и меняем её на:

Код: Виділити все
<h1 class="b1c_name">{$product->name|escape:'htmlall':'UTF-8'}</h1>

В любое место страницы вставляем код кнопки:

Код: Виділити все
<input type="button" value="Купить за 1 клик">

Далее нам нужно обозначить блок, где находится товар. Поэтому ищем:

Код: Виділити все
<div id="primary_block" class="clearfix">

меняем на:

Код: Виділити все
<div id="primary_block" class="clearfix bm_good">

Нужно указать, где находятся поля с дополнительными параметрами товара. Для этого ищем строку

Код: Виділити все
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>
меняем на

Код: Виділити все
<label class="b1c_caption" for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>
Ищем:

Код: Виділити все
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
заменяем:

Код: Виділити все
<select class="b1c_option" name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">

Проверить версию jQuery

Так, ну на странице товара вроде бы разобрались, теперь нужно подключить скрипт. Ищем файл /classes/FrontController.php и в нём функцию setMedia(). Надо убедиться, что версия jquery там не ниже 1.9.0:

Код: Виділити все
Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery-1.9.0.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js'));

Если ниже, то заменяем имя файла jquery на более новый и загружаем новую версию в /js/jquery/jquery.js. В результате будем иметь что-то типа:

Код: Виділити все
Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js'));

Подключаем BuyMe

Здесь есть два варианта: правильный и простой.

Вариант правильный

В файле classes/FrontController.php в функции setMedia() добавляем в массив вызов buyme.js, чтобы получилась строка типа:

Код: Виділити все
Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.js','/buyme/js/buyme.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js'));

Вариант простой

В header.tpl перед закрывающимся тегом </head> нужно добавить строки

Код: Виділити все
<link rel="stylesheet" type="text/css" href="/buyme/templates/default/style.css">
<script type="text/javascript" src="/buyme/js/buyme.js"></script>

В итоге

В итоге имеем страницу товара с кнопкой «Купить за один клик»:

presta-result.png


Не так страшно, как в том же Joomla, но повозиться придётся. Всем успехов в настройке. И не стесняйтесь читать комментарии и инструкции.

У меня нет Prestashop

Да и фиг с ним. Ведь у нас на форуме уже есть другие инструкции по установке Buyme :smile:
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#2 Roman.YUrevich » 02.07.2013, 15:51

Добрый день, Назар.

У меня шаблон Cleve на престу с themeforest.net. Стал разбираться с кодом и оказалось, что он отличается :sad:

вместо строчки
Код: Виділити все
<h1>{$product->name|escape:'htmlall':'UTF-8'}</h1>
стоит
Код: Виділити все
<img src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')}" {if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')}"{else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" />
и чуть ниже
Код: Виділити все
<img src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'htmlall':'UTF-8'}"  />
Можно ли тут что-нибудь сделать?

Если затрудняетесь по строчке кода сделать заключение, прикладываю файл product.tpl. Спасибо.
Roman.YUrevich M
Аватар
Вік: 27
Репутація: 0
Повідомлення: 3
З нами: 4 роки 4 місяці

#3 Nazar Tokar » 02.07.2013, 16:22

Roman.YUrevich, здравствуйте. Выход есть всегда :). Лучше давайте сразу ссылку на страницу с установленной темой. Думаю, вы можете поступить таким образом:

Код: Виділити все
<span class="b1c_name" style="display: none;">{$product->name|escape:'htmlall':'UTF-8'}</span>

Хотя это не очень красиво с точки зрения семантики кода. Но попробуйте.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#4 Roman.YUrevich » 03.07.2013, 10:49

Назар, а эту строчку надо просто вставить или заменить ею имеющиеся?

Мне, право, неудобно Вас беспокоить по мелочам, но блок, где находится товар
Код: Виділити все
<div id="primary_block" class="clearfix">
я тоже не нашел :sad:
Сайт lifeandfitness.ru
Roman.YUrevich M
Аватар
Вік: 27
Репутація: 0
Повідомлення: 3
З нами: 4 роки 4 місяці

#5 Nazar Tokar » 03.07.2013, 11:00

Roman.YUrevich, у вас блок с товаром называется так:
Код: Виділити все
<div class="product-info">
А строку надо добавить, только добавить внутрь этого блока. И к этому же блоку добавить class, чтобы получилось так:
Код: Виділити все
<div class="product-info bm_good">
<span class="b1c_name" style="display: none;">{$product->name|escape:'htmlall':'UTF-8'}</span>
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#6 Roman.YUrevich » 03.07.2013, 12:18

Ага, я понял. Благодарю :smile:
Последние две строчки как на зло, тоже другие :sad:
Roman.YUrevich M
Аватар
Вік: 27
Репутація: 0
Повідомлення: 3
З нами: 4 роки 4 місяці

#7 ArtemIgorevich » 17.07.2013, 22:06

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

Делал все по инструкции, но в результате получилась не кнопка, а серый прямоугольник внизу страницы, заполненный знаками вопроса?

Jquery у меня был старым, поэтому поменял его на новый jQuery 1.10.2 с http://jquery.com/download/

Когда это не сработало поставил jQuery, который был в архиве скаченного Buyme - такой же результат.

Еще что интересно, может это будет подсказкой к решению проблемы - с заменой jQuery слайдер на главной перестал нормально работать (показывал все слайды вряд) - пришлось отключить.

Код: Виділити все
<input type="button" value="Купить за 1 клик">
Еще я не совсем пойму куда лучше вставить этот код в product.tpl, вставлял в разные места но пока все те же знаки вопроса. Прошу помочь, заранее большое спасибо и 230 рублей на развитие проекта с Яндекс кошелька 410011760494711
ArtemIgorevich
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#8 Nazar Tokar » 18.07.2013, 10:04

ArtemIgorevich, день добрый. Спасибо.

Скачайте свежий архив и поставьте заново. Похоже, что у вас вместе и старые, и новые файлы.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#9 ArtemIgorevich » 18.07.2013, 12:41

Поставил на чистую престу с тем же шаблоном результат получился почти таким же, текст на сером фоне без какой либо активности, а сама форма которая должна открываться в сплывающем окне появилась в самом низу страницы. http://s6.termit5.ru/product.php?id_product=6

Еще понял, почему ранее были знаки ???? - в файле product.tpl я не поменял кодировку на UTF-8

Пробовал и правильную и простую установку - результата нет. Я отправлю вам архив с шаблоном в личку - может все дело в нем.
ArtemIgorevich
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#10 Nazar Tokar » 18.07.2013, 12:49

ArtemIgorevich, вы дважды установили скрипт.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#11 ArtemIgorevich » 18.07.2013, 14:53

Назар я отправил вам файлы, которые редактировал по вашей инструкции, сейчас все сделано по простой схеме (добавлен код в header.tpl), но не работает. Я перепроверил, код нигде не повторяется.

Вот краткая инструкция как я устанавливал скрипт:

1. Выполнены все действия по замене кода в product.tpl

2. Из архива BuyMe в папке JS взят Jquery и залит в папку s6.termit5.ru/js/jquery

3. Добавлен код в s6.termit5.ru/classes/FrontController.php
Код: Виділити все
Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js'));

4. Добавлен код в header.tpl
Код: Виділити все
<script type="text/javascript" src="/buyme/js/buyme.js"></script>

Результата пока нет, возможно что то с jquery - тк модуль слайдов на главной опять слетел
ArtemIgorevich
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#12 Nazar Tokar » 18.07.2013, 15:21

ArtemIgorevich, прочтите ЕЩЁ РАЗ моё предыдущее сообщение.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#13 ArtemIgorevich » 18.07.2013, 16:34

Назар, это просто издевательство - я установил ваш код на стандартную тему и чистую Престу, но все равно кнопка не работает - возможно ошибка в инструкции.
http://s3.termit5.ru/product.php?id_product=6

Прошу вас выложить файлы:
Jquery (которая у вас работает со скриптом)
FrontController.php
Product.tpl
ArtemIgorevich
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#14 Nazar Tokar » 19.07.2013, 03:02

ArtemIgorevich, jq любая от 1.7.0, остальное делайте по инструкции. Если не получается, просите помощи у кого-то.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#15 leonetrek » 19.07.2013, 12:33

Я Все поставил. Все отлично работает. Спасибо большое за скрипт. С меня 7 американских президентов))

У меня была такая же проблема, как и у чувака выше!

А разобрался благодаря твоему вложенному файлу index.html. Дело в том, что в мануале на сайте не прописано, что в head нужно еще кроме скрипта вставить вот этот код:
Код: Виділити все
<link rel="stylesheet" type="text/css" href="/buyme/templates/default/style.css">
leonetrek
Вік: 47
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#16 Nazar Tokar » 19.07.2013, 12:55

leonetrek, спасибо, обновил
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#17 leonetrek » 19.07.2013, 13:48

Назар, прости за беспокойство. Хочу разобраться со входящим письмом:
Вот я получил такое письмо:
Заказ на название товара

Контакт - понятно
Имя - понятно
0: 0 - Что вот это? Вернее, что тут должно быть?
Комментарий - понятно
URL - понятно
ip - понятно

Спасибо
leonetrek
Вік: 47
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#18 Nazar Tokar » 19.07.2013, 14:04

leonetrek, в index.php обновите функцию getOptions:

Код: Виділити все
function getOptions($o){ // get product options
   $captions = $_GET["captions"];
   $options = $_GET["options"];
   $i = 0;   
   if ($o == 1) {
      foreach ($options as $value) {
         if($value != 0) {
            $opts .= "<b>".$captions[$i]."</b>:<br>".$value."<br><br>";
         }
         $i++;
      }
   } else {
      foreach ($options as $value) {
         if($value != 0) {
            $opts .= $captions[$i]."(".$value.") ";
         }
         $i++;
      }      
   }
   return $opts;
}
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

#19 leonetrek » 19.07.2013, 14:18

Теперь все нормально. 0: 0 отсутствует. Но у меня закрались подозрения, что может быть там кол-во товара должно выводиться? Если да, то теперь вообще пусто
leonetrek
Вік: 47
Репутація: 0
Повідомлення: 4
З нами: 4 роки 4 місяці

#20 Nazar Tokar » 19.07.2013, 14:45

leonetrek, подозрения безосновательные, всё норм.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 149
Повідомлення: 2509
Теми: 100
З нами: 4 роки 8 місяців

Наст.

Повернутись в PrestaShop

Хто зараз на форумі (базується на активності користувачів за останні 30 хвилин)

Зараз переглядають цей розділ: 1 гість