Бортовой журнал Ктулху

Упрощаем регистрацию в Prestashop

Новая версия этой статьи

Источник http://prestashop-forum.ru/index.php?topic=945.0

 По умолчанию в Prestashop излишне сложная регистрация, возможностей изменить ее стандартными способами почти нет, можно только из панели управления убрать почтовый индекс. Все остальные изменения нужно производить редактированием файла Address.php и шаблонов addresses.tpl и order-opc-new-account.tpl.

 Для начала можно и нужно убрать лишнее из админки.

Локализация > страны > редактировать.

За "обязательность" полей отвечает функция public static $definition = array в Address.php.

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

Если убрать 

required' => true

то поле становится "необязательным".

Например я сделал необязательным ввод города и обязательным мобильный телефон.

public static $definition = array(
 'table' => 'address',
 'primary' => 'id_address',
 'fields' => array(
 'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
 'id_manufacturer' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
 'id_supplier' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
 'id_warehouse' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
 'id_country' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
 'id_state' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId'),
 'alias' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 32),
 'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
 'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
 'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
 'vat_number' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
 'address1' => array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'required' => true, 'size' => 128),
 'address2' => array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'size' => 128),
 'postcode' => array('type' => self::TYPE_STRING, 'validate' => 'isPostCode', 'size' => 12),
 'city' => array('type' => self::TYPE_STRING, 'validate' => 'isCityName', 'size' => 64),
 'other' => array('type' => self::TYPE_STRING, 'validate' => 'isMessage', 'size' => 300),
 'phone' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 32),
 'phone_mobile' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'required' => true, 'size' => 32),
 'dni' => array('type' => self::TYPE_STRING, 'validate' => 'isDniLite', 'size' => 16),
 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'copy_post' => false),
 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'copy_post' => false),
 ),
 );

В шаблоне можно убрать ненужные поля и таким образом упростить регистрацию.

Например в этом примере в файле authentication.tpl убрана форма выбора пола.

<!-- <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>-->

 

Разработка модулей и скриптов для Prestashop