Я создаю собственный модуль magento и пытаюсь добавить собственный файл css в свой блок. Я написал :

<?php
class Wise_InteractiveSlider_Block_Slider extends Mage_Core_Block_Template
{
   protected function _prepareLayout()
   {
      $this->getLayout()->getBlock('head')->addCss('css/mycompany/mymodule/stylesheet.css');
      return parent::_prepareLayout();
   }

 }

Но это не работает, мой файл css не загружен, есть идеи? Спасибо.

0
Sebastien 30 Авг 2011 в 17:25

3 ответа

Лучший ответ

Моим альтернативным решением было добавить это в мой макет xml:

<default>
  <reference name="head">
      <action method="addCss"><stylesheet>css/interactiveslider.css</stylesheet></action>
  </reference>
</default>

Спасибо за помощь

2
Sebastien 31 Авг 2011 в 07:18

Все CSS и изображения обычно доступны в папке "skin". Должен быть:-

"skin" folder
   -> Package Name (like "base" or "default")
      -> Theme Name (like "modern" or "mycompany")
         -> "css" folder
            -> "mymodule" folder
               -> "stylesheet.css" file

Итак, я полагаю, что вы следовали этой вышеупомянутой базовой структуре, которая считается одной из лучших практик.

Возвращаясь к вашему вопросу, я полагаю, что вы упомянули правильный класс блока в файле макета вашего модуля "layout.xml". Таким образом, приведенный выше код должен быть в соответствии с приведенной выше структурой папок: -

<?php
class Wise_InteractiveSlider_Block_Slider extends Mage_Core_Block_Template
{
   protected function _prepareLayout()
   {
      $this->getLayout()->getBlock('head')->addCss('css/mymodule/stylesheet.css');
      return parent::_prepareLayout();
   }
}

Наконец, убедитесь, что вы загрузили файл CSS "stylesheet.css" в правильную папку.

Надеюсь, это поможет.

1
SBOeConnect 30 Авг 2011 в 14:30

Вы можете использовать метод _prepareLayout (), только если блок определен в XML макета. Если вы встраиваете блок внутри страницы CMS с помощью метода {{block type ..., макет уже подготовлен к моменту рендеринга блока.

1
Alan 5 Окт 2014 в 02:35