Oтзывы и предложения для начинающим с Prestashop

webnewbie

По правилам и без

imagesДоступный и легкий способ покупки в интернет-магазинах является одним из основных способов привлечения клиентов. Поэтому разработчики модулей и скриптов постоянно работают над данной задачей. Когда я написал модуль заказа обратного звонка, в котором был использован скрипт Callme Назара Токаря, ко мне стали обращаться с просьбами и пожеланиями сделать модуль покупки за один клик на основе скрипта Buyme. В ответ я обращал внимание моих читателей на уже существующий модуль-Быстрый заказ на e-mail от Ors. Но как оказалось пользователей не устраивал внешний вид и все ни как у скрипта Buyme. Я решил исправить ситуацию и показать как можно сделать всплывающую форму по клику на кнопку для модуля быстрого заказа совместимый с версией 1.5(для версии модуля совместимой с ПрестаШоп 1.4 все будет аналогично). И все это можно сделать штатными средствами ПрестаШоп.

Для изменения внешнего вида модуля будем править два файла модуля- файл extraRight.tpl, который находится в директории modules/fastorder/views/templates/hook/ и файл fastorder.css, который находится в папке css модуля.

Вот что у нас было и что должно получиться

bilostalo

Для отображения формы модальном окне будем использовать скрипт fancybox, поэтому открываем файл шаблона модуля extraRight.tpl текстовым редактором Notepad++ и с самого начала добавляем ссылку на скрипт

<script type="text/javascript" src="{$base_dir}js/jquery/plugins/fancybox/jquery.fancybox.js"></script>

и добавляем стили для модального окна указав ссылку

<link rel="stylesheet" href="{$base_dir}js/jquery/plugins/fancybox/jquery.fancybox.css" type="text/css" media="screen" />

теперь необходимо вызвать fancybox и указать объекты, на которые мы его повесим.


На этом сайте вы сможете разместить свою строчную или баннерную рекламу. Прием средств осуществляется в автоматическом режиме через сервис Мерчант WebMoney. Стоимость размещения рекламы 10 руб за 1000 показов. Подробности по ссылке в форме выше.

<script type="text/javascript">
         $(document).ready(function() {
         $("a.button").fancybox({
                 'hideOnContentClick': false
         });
         });
         </script>

Затем добавляем ссылку используя class=»button» означающий, что это кнопка и стили будут автоматически браться из файла global.css темы вашего магазина, а еще этот класс у нас будет являться объектом для скрипта. Ссылка у нас будет указывать на идентификатор #fastorder, который в форме указан как id

<a class="button" href="#fastorder">Купить за 1 клик </a>

Для того что бы форма у нас не отображалась вместе с кнопкой, спрячем ее в div со стилем display:none

<div style="display:none" >

В конце формы не забываем закрыть наш тег div

Сохранив все изменения, можете увидеть результат проделанной работы и нажав на кнопку убедиться, что форма у нас теперь в модальном окне и функционирует согласно настроек модуля.
modal
Код файла extraRight.tpl с изменениями.

<!-- MODULE fastorder -->

         <script type="text/javascript" src="{$base_dir}js/jquery/plugins/fancybox/jquery.fancybox.js"></script>
         <link rel="stylesheet" href="{$base_dir}js/jquery/plugins/fancybox/jquery.fancybox.css" type="text/css" media="screen" />
         <script type="text/javascript">
         $(document).ready(function() {
         $("a.button").fancybox({
                 'hideOnContentClick': false
         });
         });
         </script>
                 <div  class="but" >
                 <a class="button" href="#fastorder">Купить за 1 клик </a>
                 </div>
                 <div style="display:none" >
<form  id="fastorder" class="std" action="{$link->getModuleLink('fastorder', 'ajax', [], true)}">
        <fieldset>
                <p class="success">{l s='Order has been sended' mod='fastorder'}</p>
                <p class="error">{l s='Order sending error' mod='fastorder'}</p>
                <div class="form_content clearfix">
                        {if $fastorder_name}
                                <p class="{if $fastorder_name==2}required {/if}text">
                                        <label for="fo_name">{l s='Name:' mod='fastorder'}{if $fastorder_name==2}<sup>*</sup>{/if}</label>
                                        <input type="text" id="fo_name" value="{if isset($fo_name)}{$fo_name}{/if}" name="fo_name"{if $fastorder_name==2} required="required"{/if} />
                                </p>
                        {/if}
                        {if $fastorder_email}
                                <p class="{if $fastorder_email==2}required {/if}text">
                                        <label for="fo_email">{l s='E-mail: ' mod='fastorder'}{if $fastorder_email==2}<sup>*</sup>{/if}</label>
                                        <input type="email" id="fo_email" value="{if isset($fo_email)}{$fo_email}{/if}" name="fo_email"{if $fastorder_email==2} required="required"{/if} value="{$email}" />
                                </p>
                        {/if}
                        {if $fastorder_phone}
                                <p class="{if $fastorder_phone==2}required {/if}text">
                                        <label for="fo_phone">{l s='Phone: ' mod='fastorder'}{if $fastorder_phone==2}<sup>*</sup>{/if}</label>
                                        <input type="text" id="fo_phone" value="{if isset($fo_phone)}{$fo_phone}{/if}" name="fo_phone"{if $fastorder_phone==2} required="required"{/if} />
                                </p>
                        {/if}
                        {if $fastorder_address}
                                <p class="{if $fastorder_address==2}required {/if}text">
                                        <label for="fo_address">{l s='Address: ' mod='fastorder'}{if $fastorder_address==2}<sup>*</sup>{/if}</label>
                                        <textarea  cols="26" rows="3" id="fo_address" name="fo_address"{if $fastorder_address==2} required="required"{/if}>{if isset($fo_address)}{$fo_address}{/if}</textarea>
                                </p>
                        {/if}
                        <p class="submit"><input id="fastorder_submit" type="button" class="exclusive" value="{l s='Order' mod='fastorder'}"/></p>
                </div>
        </fieldset>
</form>
</div>
<!-- END : MODULE fastorder -->

Осталось только решить вопрос с расположением кнопки. Я решил ее поместить под основной кнопкой «Добавить в корзину» . Для этого я помещаю нашу кнопку между тегов div с классом but и задаю стили для нее в файле стилей модуля fastorder.css

.but {
margin: 10px;
float: right;
display: block;
}

Полный код стилей будет таким

#fastorder .form_content{
    padding:5px;
}
#fastorder label {
    display: inline-block;
    width: 110px;
    color: #666;
}
#fastorder textarea {
    width: 100%;
}
#fastorder .submit {
    text-align: center;
    padding-bottom: 5px;
}
#fastorder .need {
    background-color: #fcc;
}
#fastorder .success, #fastorder .error {
    display:none;
}
#fastorder .process{
    background-color: rgb(119, 119, 119);
    opacity: 0.7;
}
.but {
margin: 10px;
float: right;
display: block;
}

Вот и все. А по поводу подключения скрипта Buyme хочу отметить, что данный скрипт без вмешательства в изменения контроллеров движка Престы установить сложно. Для любопытствующих оставлю ссылку с подробной инструкцией как это делается http://dedushka.org/kod/4199.html и конечно же вам решать самим что лучше. Многие скажут, что мол скрипт Buyme еще позволяет сделать подключение смс рассылок, на что заранее отвечаю во первых, это не критично, а во вторых, кто мешает подключить смс рассылку на почтовом ящике.
До встречи на webnewbie.ru/

Рубрики: Prestashop

Комментариев: 51

  1. Ярослав:

    версия prestaShop 1.5.6.2
    Пути соответствую, а не работает.

  2. Ярослав:

    Такая проблема не на всех сайтах. Чистой престе работает, а на других нет. Где искать проблему?

  3. Виталий:

    Спасибо огромное за статью, очень полезная. Подскажите пожалуйста какой файл нужно править чтобы по завершению заказа изменить фразу «Заказ оформлен» на какуюто свою. Спасибо.

  4. Артур:

    А как сделать кнопку «Купить за 1 клик» выше кнопки «Добавить в корзину»?

    • Только с помощью изменения стилей. Например, для стандартного шаблона default отредактируйте файл fastorder.css модуля быстрый заказ, добавив margin-top: -60px; в 26 строке

  5. Артур:

    Тогда она налезает на другой элемент

    • Артур, проект называется помощь начинающим с PrestaShop. Помощь не означает выполнение работы за Вас. Я показал пример, а дальше сами ручками и головой.

  6. Наталья:

    Спасибо большое, всё работает. Только у меня появилась одна проблема. Кнопка «купить за 1 клик» вытолкнула «комментарии» и я никак не могу поставить на место. Подскажите пожалуйста в каком месте мне подправить. _http://clip2net.com/s/75N7qJ

  7. Евгений:

    Спасибо за код, все отлично работает.
    Подскажите, а можно как-то сдвинуть кнопку «Купить в 1 клик» чуть правее, чтобы она своим правым краем была на уровне с правым краем кнопки «Добавить в корзину» и ценой?

    • Евгений:

      я попытался уменьшить значение margin до 0 px; в этом случае кнопка выравнивается так, как мне хотелось бы ее видеть, но вместе с этим плотно прилипает к кнопке «Добавить в корзину».

    • Можно, для этого надо поправить стили кнопки. Учитесь пользоваться инструментом разработчика встроенным в браузер crome или плагином firebag для браузера firefox. Всем не угодишь и выполнять за каждого его работу дело неблагодарное.

  8. Олег:

    Уважаемый автор, подскажите как исправить проблему с модулем.
    После того как я установил модуль «Быстрый заказ», у меня перестали открываться страницы товара! В чём может быть проблема?
    Модуль пришлось удалить чтобы сайт начал нормально работать.
    У меня Преста 1.5.4.1, модуль устанавливал с папки 1.5 которая была в архиве с модулем. Впрочем пробывал и старую версию модуля 1.4 — результат тот же — сайт перестаёт работать…
    Прошу, если знаете как исправить, подскажите. Спасибо!

    • Модуль указанный в этой статье не мной написан, я всего лишь указал как сделать изменения в модуле, чтобы на странице товара отображалась кнопка. Если вы скачали модуль по той ссылке, что указана в статье, то никаких проблем быть не должно. В любом случае обращаться по работе модуля следует не ко мне, а к автору модуля. А если вы делали исправления указанные в статье, то попробуйте повторить все заново, но внимательно. Допустив ошибку при копировании кода, пропустив хотя бы один знак, получите результат с ошибкой.
      Очень важно, чтобы Вы приучили себя опробовать любые модули или шаблоны на виртуальном сервере(например, денвер) и только после удачного результата устанавливали на свой сайт. Таким образом оградите себя от возможных безвозвратных потерь в доходах и клиентах, в случае нарушения работы сайта.

  9. Александр:

    На 1.6 возможно заставить работать кнопку?

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