Prestashop добавляет CSS в модуль

Я создаю модуль в prestashop 1.4, скажем, blocktest

модули/блоктест/блоктест.php:

...

public function hookLeftColumn($params)
{
    global $smarty;
    $smarty->assign(array(
        'test' => 'test'
    ));
    return $this->display(__FILE__, 'blocktest.tpl');
}

public function hookHeader()
{
    Tools::addCSS($this->_path.'blocktest.css', 'all');
}

модули/блоктест/блоктест.css:

* { background-color: red; }


Проблема:

My css is not included.


Что я пробовал:

В admin > preferences > performances > smarty я установил кеш на no и принудительно компилировал на yes. В admin > preferences > performances > smarty для кэша установлено значение no.

Существующие модули используют одно и то же включение css: Tools::addCSS($this->_path.'blocktest.css', 'all');, но файл css находится в <themeName>/css/modules/<moduleName>/<moduleName>.css. Что странно, потому что $this->_path указывает на папку модуля: modules/<moduleName>/.

Но в любом случае, я попытался поместить свой файл css в <themeName>/css/modules/blocktest/blocktest.css, это не сработало. Может я что-то упускаю


person Benjamin Crouzier    schedule 11.08.2011    source источник


Ответы (3)


Вы помните про регистрацию хука для заголовка во время установки модуля?

function install() {
    if (!parent::install())
        return false;
    if (!$this->registerHook('header'))
        return false;
    return true;
}

Без этого вам придется использовать функцию «трансплантировать модуль» из «Администратор»> «Модули»> «Позиции», чтобы сделать это. Всегда проверяйте с помощью таких инструментов, как Firebug, наличие ваших файлов.

Кроме того, я думаю, что чего-то не хватает. Не могли бы вы предоставить нам полный код вашего модуля? Пожалуйста, предоставьте нам версию Prestashop, которой вы также пользуетесь.

person Matthew Morek    schedule 11.08.2011
comment
Не подумал про регистрацию всех хуков, которые использовал, спасибо. - person Benjamin Crouzier; 25.08.2011

Другое решение:

$this->context->controller->addCSS(($this->_path).'style.css', 'all'); 
$this->context->controller->addJs(($this->_path).'script.js', 'all'); 

Привет,

исходная информация:

http://www.prestashop.com/forums/topic/235476-solucionadoerror-en-mi-1ra-web-warning-function-addcss-is-deprecated-in/

person jruzafa    schedule 04.10.2013

Что странно, потому что $this->_path указывает на папку модуля: modules//

да, это (странно), но... в функции addCSS он переопределяется (модулем) папкой css тем

public static function addCSS($css_uri, $css_media_type = 'all')
{
  global $css_files;
   ...
  $css_uri = str_replace(__PS_BASE_URI__.'modules/', __PS_BASE_URI__.'themes/'._THEME_NAME_.'/css/modules/', $css_uri, $different);
   ...
}
person Laurent    schedule 19.02.2012