2011-08-30 53 views
0

我正在构建一个自定义的magento模块,我尝试将一个自定义CSS文件添加到我的块。我写道:从块添加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

您的CSS的链接元素是否会添加到页面中你的块被加载?如果不是,它会缩小问题范围。 –

回答

2

我的另一种解决方案是在我的XML布局补充一点:

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

谢谢您的帮助

1

所有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”。

希望它有帮助。

+0

我用它,但它不适用于我的情况。我在答案下给出了我的解决方案。 – Sebastien

1

您只能使用_prepareLayout()方法,如果该块布局XML定义。如果您通过{{块类型...方法在CMS页面中内嵌块,块的渲染时间已经准备好了布局