Согласно Prestashop DevDocs мы не можем переопределить шаблоны напрямую, поместив файлы шаблонов администратора в папку override
нашего модуля.
Переопределение темы из модуля НЕ являетсявозможно и никогда не будет.Если вам это нужно, вы должны вместо этого взглянуть на функцию родительской / дочерней темы.
Есть одна вещь, которую вы можете сделать, - вы можете поместить template
файлы в папку override
и скопировать ихфайлы в модуле install/reset
и удалите эти файлы в модуле uninstall
.Чтобы достичь этого, мы можем вызвать наши function
к copy
переопределения и remove
переопределения в install()
и uninstall()
функциях, которые предусмотрены по умолчанию в Prestashop.
Вы должны сделать нижеупомянутый шагв вашем модуле для переопределения шаблонов администратора.
1) Добавить список файлов шаблонов, которые необходимо переопределить в ваших модулях __construct()
метод
__ construct () Метод
public function __construct()
{
// ..... your other code here ....
// list of template(s) file that needs to be override
$this->admin_tpl_overrides = array(
implode(DIRECTORY_SEPARATOR, array('override', 'controllers', 'admin', 'templates', 'customers', 'helpers', 'view', 'view.tpl'))
);
}
2) Добавьте файл view.tpl
, который вы хотите переопределить, в папку переопределения модулей по указанному ниже пути.Убедитесь, что вы внесли изменения в этот файл.
modules\{YOUR_MODULE_NAME}\override\controllers\admin\templates\customers\helpers\view
3) Измените методы install()
и uninstall()
в файле классов вашего модуля.
Способ установки
public function install()
{
$addAdminTplOverrides = $this->_addAdminTplOverrides();
return parent::install() && $addAdminTplOverrides /** Other hook you need to register + Method you need to call on install **/;
}
Удаление () Метод
public function uninstall()
{
$removeAdminTplOverrides = $this->_removeAdminTplOverrides();
return parent::uninstall() && $removeAdminTplOverrides /** Other hook you need to un-register + Method you need to call on uninstall **/;
}
4) Вызывается _addAdminTplOverrides()
и _removeAdminTplOverrides()
метод в install()
и uninstall()
соответственно;добавьте эти функции сразу после удаления.
private function _addAdminTplOverrides()
{
$module_override_path = $this->getLocalPath().DIRECTORY_SEPARATOR;
$result = true;
foreach ($this->admin_tpl_overrides as $admin_tpl_path) {
$override_file_path = $module_override_path.$admin_tpl_path;
$dest_override_file_path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$admin_tpl_path;
if(file_exists($override_file_path)) {
if (!copy($override_file_path, $dest_override_file_path)) {
$result &= false;
}
} else {
$result &= false;
}
}
return $result;
}
private function _removeAdminTplOverrides()
{
$module_override_path = $this->getLocalPath().DIRECTORY_SEPARATOR;
$result = true;
foreach ($this->admin_tpl_overrides as $admin_tpl_path) {
$dest_override_file_path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$admin_tpl_path;
if(file_exists($dest_override_file_path)) {
if (!unlink($dest_override_file_path)) {
$result &= false;
}
}
}
return $result;
}
5) Теперь install/reset
ваш модуль;Вы можете видеть, что шаблон администратора теперь переопределен.
Полный код с шага 1 до 5 здесь
public function __construct()
{
// ..... your other code here ....
// list of template(s) file that needs to be override
$this->admin_tpl_overrides = array(
implode(DIRECTORY_SEPARATOR, array('override', 'controllers', 'admin', 'templates', 'customers', 'helpers', 'view', 'view.tpl'))
);
}
public function install()
{
$addAdminTplOverrides = $this->_addAdminTplOverrides();
return parent::install() && $addAdminTplOverrides /** Other hook you need to register + Method you need to call on install **/;
}
public function uninstall()
{
$removeAdminTplOverrides = $this->_removeAdminTplOverrides();
return parent::uninstall() && $removeAdminTplOverrides /** Other hook you need to un-register + Method you need to call on uninstall **/;
}
private function _addAdminTplOverrides()
{
$module_override_path = $this->getLocalPath().DIRECTORY_SEPARATOR;
$result = true;
foreach ($this->admin_tpl_overrides as $admin_tpl_path) {
$override_file_path = $module_override_path.$admin_tpl_path;
$dest_override_file_path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$admin_tpl_path;
if(file_exists($override_file_path)) {
if (!copy($override_file_path, $dest_override_file_path)) {
$result &= false;
}
} else {
$result &= false;
}
}
return $result;
}
private function _removeAdminTplOverrides()
{
$module_override_path = $this->getLocalPath().DIRECTORY_SEPARATOR;
$result = true;
foreach ($this->admin_tpl_overrides as $admin_tpl_path) {
$dest_override_file_path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$admin_tpl_path;
if(file_exists($dest_override_file_path)) {
if (!unlink($dest_override_file_path)) {
$result &= false;
}
}
}
return $result;
}
Надеюсь, они будут полезны длявы!