prestashop 1.6 - 更改我的帐户地址字段顺序

时间:2017-01-26 04:57:52

标签: smarty prestashop prestashop-1.6

我试图更改MyAccount中的表单的字段顺序> prestashop 1.6中的地址表格(在前端)。

我更新了 /themes/mytheme/address.tpl 模板并将该国家/地区移到了城市上方(这就是我想要做的所有事情),但是当我刷新页面时它没有&似乎工作正常。

我尝试删除/ cache目录中的缓存文件,但它没有改变任何内容。

所以当你想要在城市场地之前的国家领域时,你应该继续吗?

基本上,我更改了这段代码:

{if $field_name eq 'city'}
        <div class="required form-group">
          <label for="city">{l s='City'} <sup>*</sup></label>
          <input class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}" type="text" name="city" id="city" value="{if isset($smarty.post.city)}{$smarty.post.city}{else}{if isset($address->city)}{$address->city|escape:'html':'UTF-8'}{/if}{/if}" maxlength="64" required/>
        </div>
        {* if customer hasn't update his layout address, country has to be verified but it's deprecated *}
      {/if}
      {if $field_name eq 'Country:name' || $field_name eq 'country' || $field_name eq 'Country:iso_code'}
        <div class="required form-group form-select">
          <label for="id_country">{l s='Country'} <sup>*</sup></label>
          <select id="id_country" class="form-control" name="id_country" required>{$countries_list}</select>
        </div>
      {/if}

并将其转换为此代码:

      {if $field_name eq 'Country:name' || $field_name eq 'country' || $field_name eq 'Country:iso_code'}
        <div class="required form-group form-select">
          <label for="id_country">{l s='Country'} <sup>*</sup></label>
          <select id="id_country" class="form-control" name="id_country" required>{$countries_list}</select>
        </div>
      {/if}
{if $field_name eq 'city'}
        <div class="required form-group">
          <label for="city">{l s='City'} <sup>*</sup></label>
          <input class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}" type="text" name="city" id="city" value="{if isset($smarty.post.city)}{$smarty.post.city}{else}{if isset($address->city)}{$address->city|escape:'html':'UTF-8'}{/if}{/if}" maxlength="64" required/>
        </div>
        {* if customer hasn't update his layout address, country has to be verified but it's deprecated *}
      {/if}

我清理了缓存,但是当我刷新页面时,模板没有更新。 (我确定它是正确的模板文件,因为如果我在其中放入一些垃圾字符串,它们会显示出来。)

我也尝试过&#34; Force Compile&#34;选项,但它也不起作用。

1 个答案:

答案 0 :(得分:0)

移动表单组块无效,因为它们是从地址格式列表生成的,因此表单组按此顺序生成。

美国的地址格式存储在这样的数据库中(由换行符\n分隔的单个字符串):

...
city, State:name postcode
Country:name
...

如果城市名称是美国地址格式,那么城市将始终显示在国家/地区名称之前。

您可以通过转到后台菜单

进行更改而无需修改

Localization -> Countries选择一个国家/地区,您可以修改地址格式。

然而,现场各地的字段顺序都会发生变化。

如果您只需要在地址表单页面上使用不同的字段顺序,则必须在assignAddressFormat()方法中重新排列$ordered_addr_fields数组,或者在foreach循环开始之前在模板address.tpl中执行此操作。

尽管没有篡改基本文件,最好的方法是创建一个带有DisplayOverrideTemplate挂钩的模块,然后在输出之前修改smarty变量。

$this->context->smarty->tpl_vars['ordered_adr_fields']->value = array(/* Reordered list here */)