Автор Тема: Как упростить форму заказа, регистрации в Prestashop  (Прочитано 2128 раз)

03 Декабрь 2016, 14:10:29
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1. Для одностраничного заказа редактировать нужно шаблон  order-opc-new-account.tpl для заказа в 5 шагов address.tpl и authentication.tpl
В этих файлах находите поля, которые хотите не показывать в форме регистрации, и добавляете свойство стилей
style="display:none;"Например, спрятать дату рождения
<div class="form-group date-select" style="display:none;">
<label>{l s='Date of Birth'}</label>
<div class="row">
<div class="col-xs-4">
<select id="days" name="days" class="form-control">
<option value="">-</option>

2. Таже нужно изменить классы Customer.php и Address.php, удалить
'required' => trueу полей, которые вы скрыли в шаблонах tpl.
Например, для поля firstname':
До изменения
'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),После изменений
'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'size' => 32),
05 Декабрь 2016, 15:31:47
Ответ #1
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А это для какой версии? У меня 1.6.1.6.

Я нашел эти строки и пытаюсь скрыть City и Country, но не помогло.
Это order-opc-new-account.tpl

{elseif $field_name eq "city"}
<div class="required text form-group" style="display:none;">
<label for="city">{l s='City'} <sup>*</sup></label>
<input type="text" class="text form-control validate" name="city" id="city" data-validate="isCityName" value="{if isset($guestInformations) && isset($guestInformations.city) && $guestInformations.city}{$guestInformations.city}{/if}" />
</div>
{elseif $field_name eq "country" || $field_name eq "Country:name"}
<div class="required select form-group" style="display:none;">
<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>

А вот из Address.php

'id_country' =>        array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),

'city' =>                array('type' => self::TYPE_STRING, 'validate' => 'isCityName', 'size' => 64),

Что сделал не так подскажите?
05 Декабрь 2016, 15:56:30
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
05 Декабрь 2016, 19:08:12
Ответ #3
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сделал все как тут с firstname. Не помогло.

Вот файлик themes\default-bootstrap\order-opc-new-account.tpl

<div class="required form-group" style="display:none;">
<label for="firstname">{l s='First name'} <sup>*</sup></label>
<input type="text" class="text form-control validate" id="customer_firstname" name="customer_firstname" onblur="$('#firstname').val($(this).val());" data-validate="isName" value="{if isset($guestInformations) && isset($guestInformations.customer_firstname) && $guestInformations.customer_firstname}{$guestInformations.customer_firstname}{/if}" />
</div>

А вот из \classes\Customer.php

'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'size' => 32),

Но никакой реакции. Что упустил?
05 Декабрь 2016, 19:18:24
Ответ #4
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все разобрался! Большое спасибо. Править надо документ в \themes\theme990\order-opc-new-account.tpl

Большое спасибо вам обоим.
06 Декабрь 2016, 14:29:25
Ответ #5
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, пожалуйста, как пароль скрыть?
06 Декабрь 2016, 14:44:23
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
style="display:none;"Скроет поле

Включение гостевого заказа сделает необязательным регистрацию.
06 Декабрь 2016, 15:12:41
Ответ #7
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не скрывает. Только после того как поменял поле required password is_customer_param form-group поле с паролем стало скрытым.
08 Декабрь 2016, 13:00:04
Ответ #8
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ребят, скрыть поля получилось, но вот некоторые все равно требуют заполнения. Вот ошибки что выдает.

Страна не активирована.
Требуется выбор региона для указанной страны.
Имя обязательное поле пропущено.
passwd обязательное поле пропущено.
город обязательное поле пропущено.

Вот файл \themes\theme990\order-opc-new-account.tpl

<div class="required form-group" style="display:none;">
            <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>

Вот файл \classes\Customer.php

'passwd' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => false, 'size' => 32),

'required' => false, пробовал и удалять, не помогло. С другими полями так же. Подскажите что еще не так?
08 Декабрь 2016, 17:29:45
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Страна, город, пароль - это обязательные поля. Этим полям нужно давать какое-то значение, нельзя их пустыми оставлять.
13 Декабрь 2016, 17:17:17
Ответ #10
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, пожалуйста, я все что хотел скрыл. Теперь он пишет Ошибка создания учетной записи. Я понимаю что надо ковырять валидацию, но какой конкретно файл?
13 Декабрь 2016, 18:15:42
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Смотря какой шаблон менял, у каждого шаблона свой контоллер.
13 Декабрь 2016, 18:30:52
Ответ #12
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я так понимаю он так делает потому что я ему не все данные даю?
14 Декабрь 2016, 15:24:09
Ответ #13
  • Пользователь
  • **
  • Сообщений: 66
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А как в пароль присвоить какое то значение? Не хочу что бы клиент вводил, хочу генератор случайных паролей прикрутить.
14 Декабрь 2016, 15:55:54
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда нужно добавить новый метод с функцией генерации пароля в контроллер AuthController.php или в класс Customer.php