Вот я тут настраиваю Prestashop 1.4, с использованием оформления заказа на одной странцие - one page checkout, OPC.
И т.к. магазин планируется к работе по Москве и Петербургу, по крайней мере на первом этапе, мне в нем нафиг не нужен ручной ввод города, а так же выпадающий список для стран, пускай даже и рудиментированный до одного варианта. Так же лично у меня ничего кроме раздражения не вызывает возможность указывать второй (invoice) адрес.
Для достижения цели необходимо проделать следующее (на свой страх и риск, ессно, учитывая, что с обновлением потом будут проблемы скорее всего):
Я старался побольше элеметнов просто скрыть, вместо того, чтобы удалить. Наивно полагая, что это приведет к менее плачевным последствиям, если что.
В файле order-opc-address.tpl (темплейт блока адресов для OPC-чекаута зарегистрированных пользователей) дописать слова hidden в двух местах, вот так:
Код:
<p class="checkbox hidden">
<input type="checkbox" name="same" id="addressesAreEquals" value="1" onclick="updateAddressesDisplay();" {if $cart->id_address_invoice == $cart->id_address_delivery || $addresses|@count == 1}checked="checked"{/if} />
<label for="addressesAreEquals">{l s='Use the same address for billing.'}</label>
</p>
Код:
<ul class="address alternate_item hidden" id="address_invoice">
<li class="address_title">{l s='Your billing address'}</li>
<li class="address_company"></li>
<li class="address_name"></li>
<li class="address_address1"></li>
<li class="address_address2"></li>
<li class="address_city"></li>
<li class="address_country"></li>
<li class="address_update"><a href="{$link->getPageLink('address.php', true)}?id_address={$address.id_address|intval}&back=order-opc.php{if isset($back) && $back}&mod={$back}{/if}" title="{l s='Update'}">{l s='Update'}</a></li>
</ul>
В файле order-opc.tpl
Дописать hidden и значение по умолчанию в город:
Код:
<p class="required text hidden">
<label for="city">{l s='City'}</label>
<input type="text" class="text" name="city" id="city" value="default city" />
<sup>*</sup>
</p>
Чтобы значение по умолчанию не указывать, надо исключить city из обязательных полей в файле Address.php, кажется.
Дописать hidden в выбор страны:
Код:
<p class="required select hidden">
<label for="id_country">{l s='Country'}</label>
<select name="id_country" id="id_country">
<option value="">-</option>
{foreach from=$countries item=v}
<option value="{$v.id_country}" {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>
<sup>*</sup>
</p>
На этом этапе я было решил, что счастье должно быть достигнуто, но не тут то было - поля из формы исчезли, но форма не валидировалась, ругаясь на то, что поля не заполнены. Хотя на самом то деле оба поля имеют значения по-умолчанию.
Собака тут зарыта js-скрипте, который и валидирует форму, об нем чуть далее.
Последняя манипуляция в текущем файле, закомментировать чекбокс:
Код:
<!--<p class="checkbox is_customer_param">
<input type="checkbox" name="invoice_address" id="invoice_address" />
<label for="invoice_address"><b>{l s='Please use another address for invoice'}</b></label>
</p>-->
Файл order-opc.js
Нужно заставить его валидировать скрытые поля.
Для этого из строк (в районе 560-х и 570-х)
Код:
$('#opc_account_form input:visible').each(function() {
и
Код:
$('#opc_account_form select:visible').each(function() {
нужно убрать подстроки ":visible".
После этого все будет нормально валидироваться.
Вроде ничего не забыл.
Если кто знает, как сделать лучше, буду благодарен, поиск по этому вопросу результатов не дал.
К вопросу об обязательных полях.
Их можно убрать в файле Address.php, из строки
Код:
protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'city');
Замечу, что город мне убрать удалось (после этого у него можно дефолтное значение из формы удалить), а вот страну - нет. После ее удаления при сабмите формы выскакивает некая js-ошибка про какой-то XHTTP или вроде того.
Но мне страна по-умолчанию не мешает, так что где тут зарыта собака, мне не интересно, главное что в форме для пользователя она глаза не мозолит.
Вот примерно так.
Сообщение отредактировано Muerto 08-02-2011 13:07 ...