Как упростить быстрый заказ на Prestashop 1.5?
- Подробности
- Опубликовано 09 Апрель 2014
- Просмотров: 22594
Внимание!
Инструкция для версий Prestashop 1.5 !!!
Здравствуйте дорогие читатели!
Сегодня мы рассмотрим тему упрощения быстрого заказа на Prestashop.
Для начала уберём со страницы быстрого заказа не нужные на мой взгляд поля и формы.
Итак, начнём с того, что система предлагает нам войти на сайт, но если нам нужен вход, мы уберем его, остается вопрос "как?".
Очень просто.
Эти и другие параметры мы будем редактировать в файлах нашего шаблона, в моем случае это стандартный дефолтный шаблон default-bootstrap.
Переходим в корневую директорию нашего сайта, themes, наш шаблон.
Нам нужен файл для редактирования order-opc-new-account.tpl
Вот более подробный адрес.
/home/public_html/themes/default-bootstrap/order-opc-new-account.tpl
Открываем этот файл в редакторе Notepade++
На 4 строке ставим в конце перед закрытием формы стиль display: none;
Вот эта строка
<form action="{$link->getPageLink('authentication', true, NULL, "back=order-opc")|escape:'html':'UTF-8'}" method="post" id="login_form" class="box" style="display:none;">
Сохраним изменения.
Дальше у нас усть блок с двумя кнопками "Новый покупатель" и "Регистрация".
Кнопки нам не нужны, регистрация тоже, нам нужно вывести форму заполнения заказа.
Что мы делаем?
Всё в том же файле нам надо закомментировать строки с 32-52 включительно.
<!-- <div id="opc_account_choice" class="row">
<div class="col-xs-12 col-md-6">
<p class="title_block">{l s='Instant Checkout'}</p>
<p class="opc-button">
<button type="submit" class="btn btn-default button button-medium exclusive" id="opc_guestCheckout"><span>{l s='Guest checkout'}</span></button>
</p>
</div>
<div class="col-xs-12 col-md-6">
<p class="title_block">{l s='Create your account today and enjoy:'}</p>
<ul class="bullet">
<li>- {l s='Personalized and secure access'}</li>
<li>- {l s='A fast and easy check out process'}</li>
<li>- {l s='Separate billing and shipping addresses'}</li>
</ul>
<p class="opc-button">
<button type="submit" class="btn btn-default button button-medium exclusive" id="opc_createAccount"><span><i class="icon-user left"></i>{l s='Create an account'}</span></button>
</p>
</div>
</div> -->
<!-- <div id="opc_account_form" class="unvisible"> -->
Как видите ничего сложного.
Теперь нам необходимо убрать кучу ненужных полей, на мой взгляд.
Убираем их таким же образом - комментируем.
Пример:
<!--<div class="required password is_customer_param form-group">
<label for="passwd">{l s='Password'} <sup>*</sup></label>
<input type="password" class="text form-control validate" name="passwd" id="passwd" data-validate="isPasswd" />
<span class="form_info">{l s='(five characters min.)'}</span>
</div> -->
<!-- <div class="required clearfix gender-line">
<label>{l s='Title'}</label>
{foreach from=$genders key=k item=gender}
<div class="radio-inline">
<label for="id_gender{$gender->id_gender}" class="top">
<input type="radio" name="id_gender" id="id_gender{$gender->id_gender}" value="{$gender->id_gender}" {if isset($smarty.post.id_gender) && $smarty.post.id_gender == $gender->id_gender}checked="checked"{/if} />
{$gender->name}</label></div>
{/foreach}
</div> -->
В примере закомментированы поля пароль, г-н(г-жа).
Так же я убрала дубли фамилии и имени, чекбоксы,дата рождения и объединила форму,закомментировав "Долнительный адрес"
<!-- <h3 class="page-subheading top-indent">{l s='Delivery address'}</h3> -->
Возможно, вы захотите убрать страну из обязательных полей.
Но будет ошибка, поэтому код
{elseif $field_name eq "country" || $field_name eq "Country:name"}
<div class="required select form-group">
<label for="id_country">{l s='Country'} <sup>*</sup></label>
<select name="id_country" id="id_country" class="form-control">
{foreach from=$countries item=v}
<option value="{$v.id_country}"{if (isset($guestInformations) && isset($guestInformations.id_country) && $guestInformations.id_country == $v.id_country) || (!isset($guestInformations) && $sl_country == $v.id_country)} selected="selected"{/if}>{$v.name|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
</div>
нужно заменить на
{elseif $field_name eq "country" || $field_name eq "Country:name"}
<input type="hidden" class="text" name="id_country" id="id_country" value="177" /><p class="required select">
<!--<label for="id_country">{l s='Country'} <sup>*</sup></label>
<select name="id_country" id="id_country" >
<option value="">-</option>
{foreach from=$countries item=v}
<option value="177" {if (isset($guestInformations) AND $guestInformations.id_country == $v.id_country) OR (!isset($guestInformations) && $sl_country == $v.id_country)} selected="selected"{/if}>{$v.name|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select> -->
</p>
Сохраняем наш файл и загружаем его в папку с сайтом.
Обновляем страницу и смотрим результат.
Но!!!
Мы видим ошибки при сохранении данных.
Есть 9 ошибка(и):
You must register at least one phone number.
Страна не может быть загружена с address->id_country
Неверный выбор страны
email необходим.
id_country необходим.
lastname необходим.
firstname необходим.
address1 необходим.
city необходим.
Первое, что нам нужно сделать, это зайти в админку сайта, пункт меню Локализация => Страны => Наша страна => Редактировать
Там нужно настроить адресные поля, которые включены, убрать не нужные поля, отключить ZIP-code. Сохранить.
Это ещё не всё.
Далее нам надо настроить классы, поля которых проверяет контроллер нашего движка и выдает эти ошибки.
Идём в папку /home/public_html/classes ищем файлы Customer.php и Address.php
Открываем их в нашем редакторе Notepade++
Ищем наши переменные которые проверяются контроллером.
Они находятся между строками 161-190
'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
Ищем напротив нашей переменной функцию 'required' => true, она отвечает за обязательность проверки полей контроллером движка.
Вместо значения true мы ставим значение false.
Сохраняем на хостинг.
Проверяем.
Если Вы всё сделали правильно, то у вас не должно возникнуть ошибок.
Если возникнут вопросы вы можете написать в комментариях или на форуме.
Так же вы можете приобрести у нас на сайте модуль быстрого заказа подходящий для всех версий и не требующий ковыряться в коде!!!
Всем спасибо.
До новых встреч.
Комментарии
«There is 2 Error(s):
Страна не может быть загружена с address->id_country
Неверный выбор страны»
Все уже перепробовал, помогите, пожалуйста!
Пробуйте ещё раз всё делать, всё должно отображаться и сохраняться.
Как вариант приобретите модуль быстрого заказа с нашего сайта.
1.В личном кабинете адресов нет
2.Когда добавляешь или изменяешь адрес он не сохраняется
Добрый день!
По этому вопросу существует статья http://joomla-s.ru/interesnye-stati/vsjo-o-cms-prestashop/116-prestashop-pokupka-na-odnoj-stranitse
и модуль http://joomla-s.ru/moduli-i-rasshireniya/product/view/2/38
Как для версии 1.5, так и для 1.6
Удачи в настройке!)
В какой версии престы делаете?
На 1.6 самая первая которая вышла, не релиз этот вариант работает, на версии позже, да смотрю не работает.
На 1.5 тоже работает всё.
Выложу в модулях заказ в один шаг, он и для версии 1.5 и для версии 1.6 без исправления кода.
Тоже делал по вашей инструкции (наверное), но выдает 3 ошибки все равно:
1. Вам необходимо указать по крайней мере один номер телефона
2. Страна не может быть загружена с address->id_country
3. Неверный выбор страны
Здравствуйте! Это не возможно, так как в статье все разжевано,стать и обучающие. Если возникают трудности у нас на сайте есть обратная связь, с помощью которой вы можете обратиться ко мне и рассмотреть ситуацию изнутри.
Если не разберусь, обращусь.
Насколько поняла, проблема в настройках страны. Поэкспериментир ую.
RSS лента комментариев этой записи