Мне нужно переопределить класс и шаблон. Для этого я решил создать новый модуль, чтобы не блокироваться при обновлении 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'}
Итак, я попытался вставить файл fr.php в /my_module/translations/fr.php, и я его отредактировал:
<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{customaddresses}prestashop>customaddresses_3908e1afa0ff22fbf112aff3c5ba55c1'] = 'Vos adresses';
Затем я модифицировал файл.tpl:
{l s='Your addresses' mod='customaddresses'}
Мои поля по-прежнему на английском языке. У кого-то есть решение предложить?
После большого количества исследований я нашел свою проблему.
Мое решение: $_MODULE['<{customaddresses}prestashop>address_0f68b904e33d9ac04605aecc958bcf52'] = 'Informations supplémentaires';
Я заменил "customaddresses_" на "address_" (мой основной шаблон).
Я продолжал:
{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;
}