Упрощение регистрации в Prestashop
Общеизвестно, что сложная система регистрации отпугивает потенциальных покупателей интернет магазина. Таким недостатком страдает и Prestashop. Найденные мной в сети интернет способы изменения регистрации сводятся к редактированию быстрого(мгновенного заказа). Однако и тут покупатели теряются, так как поле основной регистрации остается. Приведенный мною ниже способ упрощает полную регистрацию, результат можете посмотреть на моем сайте. Для PrestaShop версии 1.6 упрощение реализовано с помощью модуля Редактор быстрого заказа.
-
вариант для версии 1.5
Для начала произведем настройки в бэк-офисе. Отключаем кэш . Переходим в Настройки->Клиенты-> тип процесса регистрации, выставляем опцию «только создание аккаунта», сохраняем.
-
Настройки->Заказы->Режим процесса оформления заказа, выбираем опцию «Стандартно (5 шагов)», гостевую покупку отключаем, сохраняем.
Затем необходимо отредактировать два файла вашего шаблона authentication.tpl и address.tpl, находятся файлы в каталоге /themes/ваш шаблон/
authentication.tpl
Спрячем необязательные поля выбора пола с помощью тега hidden в строке 376
-
1234567<p class="radio required"><span>{l s='Title'}</span>{foreach from=$genders key=k item=gender}<input type="radio" name="id_gender" id="id_gender{$gender->id}" value="{$gender->id}" {if isset($smarty.post.id_gender) && $smarty.post.id_gender == $gender->id}checked="checked"{/if} /><label for="id_gender{$gender->id}" class="top">{$gender->name}</label>{/foreach}</p>
меняем на
1234567<p class="radio required" hidden><span>{l s='Title'}</span>{foreach from=$genders key=k item=gender}<input type="radio" name="id_gender" id="id_gender{$gender->id}" value="{$gender->id}" {if isset($smarty.post.id_gender) && $smarty.post.id_gender == $gender->id}checked="checked"{/if} /><label for="id_gender{$gender->id}" class="top">{$gender->name}</label>{/foreach}</p>поле указания даты рождения
строка 400
12<p class="select"><span>{l s='Date of Birth'}</span>меняем на
12<p class="select" hidden><span>{l s='Date of Birth'}</span>скрываем радио кнопки согласия на рассылку
строка 436-443
12345678<p class="checkbox" ><input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} /><label for="newsletter">{l s='Sign up for our newsletter'}</label></p><p class="checkbox" ><input type="checkbox"name="optin" id="optin" value="1" {if isset($smarty.post.optin) AND $smarty.post.optin == 1} checked="checked"{/if} /><label for="optin">{l s='Receive special offers from our partners'}</label></p>В файле address.tpl каждый выберет для себя ненужные поля. Для своего магазина я убрал почти все поля. Для небольшого магазина я рекомендую оставить только поле телефона, по которому можно позвонить клиенту и в случае подтверждения заказа уточнить адрес доставки.
Приведу уже готовые изменения с описанием полей
Название организации
строка 103-107
-
12345<p class="text" hidden><input type="hidden" name="token" value="{$token}" /><label for="company">{l s='Company'}</label><input type="text" id="company" name="company" value="{if isset($smarty.post.company)}{$smarty.post.company}{else}{if isset($address->company)}{$address->company}{/if}{/if}" /></p>
Адрес первая строка (указание улицы)
строка 136-139
-
1234<p class="required text" hidden><label for="address1">{l s='Address'} <sup>*</sup></label><input type="text" id="address1" name="address1" value="ул." /></p>
Адрес вторая строка (указание номера дома и квартиры)
строка 142-145
-
1234<p class="required text" hidden><label for="address2">{l s='Address (Line 2)'}</label><input type="text" id="address2" name="address2" value=" дом. кв." /></p>
Код города
строка 148-151
-
1234<p class="required postcode text" hidden ><label for="postcode">{l s=''} </label><input type="text" id="postcode" name="postcode" style="display: none;" value="000000" /></p>
Город
строка 154-157
-
1234<p class="required text" hidden><label for="city">{l s='City'} <sup>*</sup></label><input type="text" name="city" id="city" value="Город" /></p>
Страна
строка 164-167
-
1234<p class="required select" hidden><label for="id_country">{l s='Country'} <sup>*</sup></label><select id="id_country" name="id_country">{$countries_list}</select></p>
Дополнительная информация от покупателя
строка 213-216
-
1234<p class="textarea" hidden><label for="other">{l s='Additional information'}</label><textarea id="other" name="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{else}{if isset($address->other)}{$address->other}{/if}{/if}</textarea></p>
Домашний телефон
строка 220-223
-
1234<p class="text" hidden><label for="phone">{l s='Home phone'}</label><input type="text" id="phone" name="phone" value="1234567" /></p>
Сотовый телефон
строка 224-227
-
1234<p class="text" hidden><label for="phone_mobile">{l s='Mobile phone'}</label><input type="text" id="phone_mobile" name="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{else}{if isset($address->phone_mobile)}{$address->phone_mobile}{/if}{/if}" /></p>
Скрыв все поля получим следующий результат:
- вариант для версии 1.4
Отключаем кэш, включаем перекомпиляцию. Опция настройки->производительность.
Снова переходим во вкладку настройки и отключаем гостевую покупку, способ оформления заказа-стандартно 5 шагов.
Редактируем файл authentication.tpl
Отключение выбора пола строка 308-314, в строке 308 ставим тег hidden, который скроет необязательное поле. -
1234567<p class="radio required" hidden><span>{l s='Title'}</span><input type="radio" name="id_gender" id="id_gender1" value="1" {if isset($smarty.post.id_gender) && $smarty.post.id_gender == 1}checked="checked"{/if} /><label for="id_gender1" class="top">{l s='Mr.'}</label><input type="radio" name="id_gender" id="id_gender2" value="2" {if isset($smarty.post.id_gender) && $smarty.post.id_gender == 2}checked="checked"{/if} /><label for="id_gender2" class="top">{l s='Ms.'}</label></p>
Срока 315-319, изменяем в строке 316 заголовок на Имя, клиенту нет необходимости вводить в этом поле Ф.И.О, так как это информация только для него.
12345<p class="required text"><label for="customer_firstname">{l s='Имя'}</label><input onkeyup="$('#firstname').val(this.value);" type="text" class="text" id="customer_firstname" name="customer_firstname" value="{if isset($smarty.post.customer_firstname)}{$smarty.post.customer_firstname}{/if}" /><sup>*</sup></p>
строку с фамилией скрываем, и значение value=”—” заменяем пунктирами. это строки 320-324
12345<p class="required text" hidden><label for="customer_lastname">{l s='Last name'}</label><input onkeyup="$('#lastname').val(this.value);" type="text" class="text" id="customer_lastname" name="customer_lastname" value="---" /><sup>*</sup></p>
скрываем необязательное поле даты рождения через hidden, строка 336-370
1234<p class="select" hidden><span>{l s='Date of Birth'}</span><select id="days" name="days"><option value="">-</option>
в строках 372-379 скрываем радио-кнопки подписки на новости и специальных предложений от партнеров
12345678<p class="checkbox" hidden ><input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} /><label for="newsletter">{l s='Sign up for our newsletter'}</label></p><p class="checkbox" hidden ><input type="checkbox"name="optin" id="optin" value="1" {if isset($smarty.post.optin) AND $smarty.post.optin == 1} checked="checked"{/if} /><label for="optin">{l s='Receive special offers from our partners'}</label></p>
строка 386-389 скрываем ввод информации о компании.
1234<p class="text" hidden><label for="company">{l s='Company'}</label><input type="text" class="text" id="company" name="company" value="{if isset($smarty.post.company)}{$smarty.post.company}{/if}" /></p>
строка 392-395 скрываем поле ввода ИНН
1234<p class="text" hidden><label for="vat_number">{l s='VAT number'}</label><input type="text" class="text" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{/if}" /></p>
строка 398-402 в поле с именем предлагаем ввести Ф.И.О.
12345<p class="required text"><label for="firstname">{l s='Ф.И.О'}</label><input type="text" class="text" id="firstname" name="firstname" value="{if isset($smarty.post.firstname)}{$smarty.post.firstname}{/if}" /><sup>*</sup></p>
поле ввода фамилии скрываем в строке 404-408
12345<p class="required text" hidden><label for="lastname">{l s='Last name'}</label><input type="text" class="text" id="lastname" name="lastname" value="ФИО" /><sup>*</sup></p>
адрес компании нам не нужен, срываем строки 410-415 и заполняем поле value=”- – - – - – - – -”
123456<p class="required text" hidden><label for="address1">{l s='Address'}</label><input type="text" class="text" name="address1" id="address1" value="- - - - - - - - -" /><sup>*</sup><span class="inline-infos">{l s='Street address, P.O. box, company name, c/o'}</span></p>
строка 469-472 срываем поле ввода дополнительной информации
1234<p class="textarea" hidden><label for="other">{l s='Additional information'}</label><textarea name="other" id="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{/if}</textarea></p>
в строках 474-477 срываем ввод домашнего телефона.
1234<p class="text" hidden><label for="phone">{l s='Home phone'}</label><input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{/if}" /></p>
а в поле ввода сотового телефона добавляем для клиента на выбор добавить сотовый или домашний номер
строка 478-481
1234<p class="text" ><label for="phone_mobile">{l s='Home or Mobile phone'}</label><input type="text" class="text" name="phone_mobile" id="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{/if}" /></p>
Редактируем файл address.tpl
строка 143-146 скрываем информацию о компании
1234<p class="text" hidden><label for="company">{l s='Company'}</label><input type="text" id="company" name="company" value="{if isset($smarty.post.company)}{$smarty.post.company}{else}{if isset($address->company)}{$address->company|escape:'htmlall':'UTF-8'}{/if}{/if}" /></p>
скрываем поле ввода фамилии, так как все данные в поле имя
строка 156-160
12345<p class="required text" hidden><label for="lastname">{l s='Last name'}</label><input type="text" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname}{else}{if isset($address->lastname)}{$address->lastname|escape:'htmlall':'UTF-8'}{/if}{/if}" /><sup>*</sup></p>
строка 163-167 скрывается поле адреса компании
12345<p class="required text" hidden><label for="address1">{l s='Address'}</label><input type="text" id="address1" name="address1" value="{if isset($smarty.post.address1)}{$smarty.post.address1}{else}{if isset($address->address1)}{$address->address1|escape:'htmlall':'UTF-8'}{/if}{/if}" /><sup>*</sup></p>
Ну и для того чтобы клиент в своем личном кабинете не видел наши исправления отредактируем файл identity.tpl, хотя это делать не обязательно
строка 50-53 предлагаем клиенту ввести Ф.И.О. в одном поле
1234<p class="required text"><label for="firstname">{l s='First and Last name'}</label><input type="text" id="firstname" name="firstname" value="{$smarty.post.firstname}" /> <sup>*</sup></p>
строка 54-57 скрываем
1234<p class="required text" hidden><label for="lastname">{l s='Last name'}</label><input type="text" name="lastname" id="lastname" value="{$smarty.post.lastname}" /> <sup>*</sup></p>
Все остальные поля можете править по своему усмотрению по аналогии с приведенным примером.Надеюсь был кому то полезен, до встречи на webnewbie.ru
Спасибо, шаблон быстрого заказа работает, но при окончательном оформлении заказа пишет не правльный индекс, подскажите что значит почтовый индекс страны? Общего то нет.
Почтовый индекс это то что пишут на конвертах. Состоит в основном из цифр, некоторые страны имеют 5 или 4 цифры, некоторые используют еще и Латинские буквы. Для стран бывшего союза индекс состоит из 6 цифр. Если отключили почтовый индекс то в поле индекс по умолчанию напишите шесть нолей 000000
Лишний ноль в почтовом коде там, должно быть пять нулей: 00000
Для вашей страны может и 5 нолей, а в России 6
я скопировал код и мне выдало ошибку что должно быть 00000 исправил в коде все заработало, видимо это и было проблемой у автора выше
Автор я. И ошибки там нет, пример сделан для сайтов с регистрацией в Российской федерации, где почтовый индекс шестизначный. Еще раз повторяю-это пример какие поля вы будете заполнять и скрывать, а какие нет, решать вам.