所以,我有自定義部件爲Magento的(如幻燈片產品)。如何將CSS文件添加到Magento中的CUSTOM WIDGET?
而且要添加自定義CSS /JavaScript的我的小部件。
我不想顯示(負載)CSS/JS文件每次。
我想加載JS/CSS只有當PAGE包括自定義的Widget。
感謝。
所以,我有自定義部件爲Magento的(如幻燈片產品)。如何將CSS文件添加到Magento中的CUSTOM WIDGET?
而且要添加自定義CSS /JavaScript的我的小部件。
我不想顯示(負載)CSS/JS文件每次。
我想加載JS/CSS只有當PAGE包括自定義的Widget。
感謝。
這取決於您是否已將小部件作爲小部件實例(CMS - >小部件)添加或已將其包含在頁面,靜態塊或電子郵件的內容區域中,如{{widget type="blabla/carousel"}}
。
如果你已經包括它作爲一個小部件實例,您可以將您的資產,像這樣:
protected function _prepareLayout() {
if ($head = $this->getLayout()->getBlock('head')) {
$head->addCss('myfile.css');
}
return parent::_prepareLayout();
}
..in您塊實現Mage_Widget_Block_Interface
。
(見http://www.magentocommerce.com/boards/viewthread/212110/)
AFAIK,這是不可能的,當你包括部件直列作爲模板指令來增加資產。這很簡單,因爲HTML頭已經輸出它的HTML:模板指令(如{{widget}}
或{{var}}
)在塊的_toHtml階段被發現。調用已經渲染的塊上的任何方法都不會產生任何影響。
也看到_toHtml
方法$processor->filter
呼叫Mage_Cms_Block_Page
protected function _toHtml()
{
/* @var $helper Mage_Cms_Helper_Data */
$helper = Mage::helper('cms');
$processor = $helper->getPageTemplateProcessor();
$html = $processor->filter($this->getPage()->getContent());
$html = $this->getMessagesBlock()->toHtml() . $html;
return $html;
}
我知道這個問題是相當老,但如果有任何人正在尋找一種方式來添加CSS或JavaScript只有當Magento的窗口小部件(無需要求它是一個「小部件實例」,如由爾法恩給出的答案)我會建議你PHTML模板文件使用一個小的AJAX腳本。如果你的設計包不使用jQuery,那麼你的代碼可能會有所不同。
jQuery(document).ready(function(){
jQuery.when(
jQuery.ajax({
type: "GET",
url: "<?php echo $this->getSkinUrl('css/myWidget.css');?>",
success: function(data){
jQuery("head").append("<style>" + data + "</style>");
},
dataType: "html",
cache: false,
}),
jQuery.ajax({
type: "GET",
url: "<?php echo $this->getSkinUrl('js/myWidget.js');?>",
dataType: "script",
cache: false,
})
).then(function(){
myWidget.setupFunction();
});
});
如果存在包含小部件的特定種類的頁面類型,則只能在相關佈局中添加js。你會在哪裏顯示你的部件? – dagfr 2013-02-15 09:29:06
我想在任何頁面類型上插入小部件。 並希望僅在頁面上包含小部件時才添加自定義JS/CSS。 我不想爲每種類型的頁面編輯佈局XML。 因此,我仍然在爲Magento小部件尋找JS/CSS解決方案。 但是認爲Magento對我的想法沒有解決方案。 :( – Magefast 2013-03-03 21:04:12