2015-09-03 81 views
1

我需要重寫一個類和一個模板。爲了達到這個目的,我選擇創建一個新模塊,以便在Prestashop更新時不被阻塞。對於壓倒一切的課,我沒有問題。重寫模板與模塊的英文翻譯

擔心是覆蓋模板,字段是英文,而在我的網站的其餘部分,他們是法文(當我卸載模塊,他們回來法語)。

在我的模塊,我覆蓋了模板,這種方式:

public function hookDisplayOverrideTemplate($params) 
    { 
     $controllerName = get_class($params['controller']); 
     $tpl = $this->local_path . 'override/tpl/' . $controllerName . '.tpl'; 
     if (file_exists($tpl)) 
     { 
      return $tpl; 
     } 
     return false; 
    } 

在我.tpl文件,該文件沒有翻譯的領域是這樣的:

{l s='Your addresses'} 

於是,我試着插入在/my_module/translations/fr.php的fr.php文件,我編輯它:

<?php 
global $_MODULE; 
$_MODULE = array(); 
$_MODULE['<{customaddresses}prestashop>customaddresses_3908e1afa0ff22fbf112aff3c5ba55c1'] = 'Vos adresses'; 

然後,我修改了.tpl˚F ile:

{l s='Your addresses' mod='customaddresses'} 

我的字段仍然是英文。 有人有解決方案建議?

回答

0

經過大量的研究,我發現我的問題。

我的解決辦法是:$_MODULE['<{customaddresses}prestashop>address_0f68b904e33d9ac04605aecc958bcf52'] = 'Informations supplémentaires';

我通過 「地址_」(我的首要模板)改爲 「customaddresses_」。

我不停:

{l s='Your addresses' mod='customaddresses'} 

而且是更合適的,我改變了一點點我的方法hookDisplayOverrideTemplate:

public function hookDisplayOverrideTemplate($params) 
{ 
    $controllerName = get_class($params['controller']); 
    $tpl = $this->local_path . 'override/tpl/' . strtolower(str_replace("Controller", "", $controllerName)) . '.tpl'; 
    if (file_exists($tpl)) 
    { 
     return $tpl; 
    } 
    return false; 
}