服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
当前位置: 主页 > php教程 > prestashop教程 >

prestashop模块后台多语言支持

时间:2016-02-10 09:05来源:未知 作者:好模板 点击:
prestashop模块的时候,后台设置有可能需要用到多语言支持功能(不是翻译,而是根据当前浏览者的语言状态来切换), 就像我们在增加prestashop产品名时,输入框后面会有一个切换语言的
prestashop模块的时候,后台设置有可能需要用到多语言支持功能(不是翻译,而是根据当前浏览者的语言状态来切换),
 
就像我们在增加prestashop产品名时,输入框后面会有一个切换语言的功能。非常简单:
 
1、在使用helperForm时,加一个'lang'=>true进去,like this:
 
PHP
$fields_form = array(
    'form' => array(
        'legend' => array(
            'title' => $this->l('运费到付设置') . ',技术支持<a target=blank href=tencent://message/?uin=43412512&Site=售后支持&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:43412512:1 alt="点击这里给我发消息"></a>'
        ),
        'input' => array(
            array(
                'type' => 'textarea',
                'label' => $this->l('申明信息,支持富文本'),
                'name' => 'declare',
                'cols' => '20',
                'rows' => 50,
                'autoload_rte' => true,
                'lang' => true
            )
        ),
        'submit' => array(
            'title' => $this->l('保存'),
            'class' => 'button'
        )
    ),
);
 
 
注意到上面的textarea中有一行'lang'=>true了吗?
 
 
 
接着在赋值时要加两个值:
 
PHP
$helper->tpl_vars = array(
    'fields_value' => $this->getConfigFieldsValues(),
    'languages' => $this->context->controller->getLanguages(),
    'id_language' => $this->context->language->id
);
请注意languages和id_language的赋值。
 
接下来要注意的是getContent()方法中的取值及写入值的方法:
 
PHP
public function getContent()
{
 
    if (Tools::isSubmit('submit' . $this->name)) {
        $languages = Language::getLanguages(false);
        $vaules = array();
        foreach ($languages as $lang) {
            $vaules['declare'][$lang['id_lang']] = Tools::getValue('declare_' . $lang['id_lang']);
            Configuration::updateValue('FREIGHT_COLLECT_DECLARE', $vaules['declare'], true);
        }
    }
    return $this->displayForm();
}
请注意Tools:getValue('')这一句,结合使用helperform那一段代码,我给textarea的name='declare',为什么在getVaule时变成了'declare_'.$lang['id_lang'],只要你看生成后的输入框源码就知道了。
 
 
 
最后要注意的是从数据库中取值时要注意的:
 
PHP
public function getConfigFieldsValues()
{
    $languages = Language::getLanguages(false);
    $fields = array();
    foreach ($languages as $lang) {
        $fields['declare'][$lang['id_lang']] = Configuration::get('FREIGHT_COLLECT_DECLARE', $lang['id_lang']);
    }
    return $fields;
}
因为我是把信息写入到ps_configuration中,所以我是用Configuration::get()来取值的。
 
prestashop基本方法就是这样了,其它的多语言支持也差不多。
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容