функция addJS не работает для администратора в prestashop

функция addJS не работает для администратора в prestashop

05.11.2015 12:30:29 Просмотров 41 Источник

Я пытаюсь добавить javascript-файл в prestashop admin с помощью backOfficeHeaderhook с помощью модуля, но ничего не произошло. Мой код приведен ниже.

public function install()
{
    if (!parent::install()
        || !$this->registerHook('backOfficeHeader'))
        return false;

    return parent::install() && 
     $this->registerHook('backOfficeHeader');
}

 public function hookBackOfficeHeader() {
   $this->context->controller->addJS(_MODULE_DIR_.$this->module->name.'js/hs_custom.js');
 }
У вопроса есть решение - Посмотреть?

Ответы - функция addJS не работает для администратора в prestashop / addJS function not working for admin in prestashop

elPresta

05.11.2015 01:30:44

вы пытались проверить путь addJS? Я думаю, что ничего больше не может быть возможно, если другие файлы JS работают. Попробуйте использовать $this - >_path.

$this->context->controller->addJS($this->_path.'views/js/hs_custom.js');

1) выходной путь и проверьте, если он действителен. 2) перезагрузите страницу и проверьте сеть. Страница загружает ваш скрипт или нет? 3) Не забудьте сбросить модуль, если u изменить что-то с крючками. 4) Проверьте модуль крючки.

Velocity 2k

05.11.2015 07:03:04

Если вы используете PS 1.5 или 1.6, вы должны использовать крюк "actionAdminControllerSetMedia".

Установщик модуля должен проверить, какая версия prestashop используется, а затем зарегистрировать необходимый Хук.

 if (version_compare(substr(_PS_VERSION_, 0, 3), '1.5', '<'))
      $this->registerHook('BackOfficeHeader');
 else
      $this->registerHook('actionAdminControllerSetMedia');

Затем вам нужно добавить JS на каждый крючок в его формате версии: ПС>=1.5

 public function hookActionAdminControllerSetMedia($params) { 
     $this->context->controller->addJS($this->_path.'views/js/hs_custom.js');
 }

ПС

public function hookBackOfficeHeader($params) { 
    Tools::addJS($this->_path.'views/js/hs_custom.js');
}
DARO_PL

02.08.2016 12:28:58

Для меня" это->_path " не работает. Мое решение-использовать $_SERVER ['DOCUMENT_ROOT']

public function hookActionAdminControllerSetMedia($params)
{
    // add necessary javascript to products back office
    if($this->context->controller->controller_name == 'AdminProducts' && Tools::getValue('id_product'))
    {
        $this->context->controller->addJS($_SERVER['DOCUMENT_ROOT']."/modules/apl/views/js/jquery.ui.touch-punch.min.js");
    }
}
Maksim T.

05.11.2018 09:05:26

Вы сделали несколько ошибок. Это недопустимый доступ к свойству: $this->module->name. Должно быть $this->name. Т. е., правильный код для создания пути к файлу JavaScript-это:

_MODULE_DIR_ . $this->name . '/js/hs_custom.js'

Или вот так (замкнуто):

$this->_path . 'js/hs_custom.js'

Вы также сделали двойную установку модуля и крючка. Вы можете использовать Хук BackOfficeHeader, но Хук ActionAdminControllerSetMediaявляется предпочтительным.

Итак, правильный пример для добавления файлов JS и CSS для бэк-офиса (т. е. для AdminController) через класс модуля:

public function hookActionAdminControllerSetMedia($params)
{ 
    // Adds your's CSS file from a module's directory
    $this->context->controller->addCSS($this->_path . 'views/css/example.css'); 

    // Adds your's JavaScript file from a module's directory
    $this->context->controller->addJS($this->_path . 'views/js/example.js');
}

Вот подробная информация, как зарегистрировать JavaScript в бэк-офисе (на страницах администратора) .

Закрыть X