我通过在我的模块mysql安装脚本中创建一个新的属性输入渲染器类型,在类别编辑区域中为一些输入属性添加一些额外的html:
$installer->addAttribute(
'catalog_category',
'mymodule_category_popularity',
array(
'label' => 'My Label',
'group' => 'My Group',
'type' => 'int',
'class' => 'validate-number',
'required' => false,
'default' => 50,
'input_renderer' => 'mymodule/adminhtml_catalog_category_widget_slider',
)
);
渲染器:
class Mynamespace_Mymodule_Block_Adminhtml_Catalog_Category_Widget_Slider extends Varien_Data_Form_Element_Text
{
public function getAfterElementHtml()
{
$html = parent::getAfterElementHtml();
return $html." <div id=\"slider\"></div>";
}
}
和javascript:
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j( "#slider" ).slider();
});
这很好,插件正确加载,jQuery也是如此(因为我已经使用我的布局xml为模块加载了它)。我看到一个滑块。但是,在页面完成后(Magento ajax重新加载了类别编辑标签),我的滑块消失了。我想,这是因为javascript代码没有再次运行。
我已经尝试将我的javascript添加到核心edit.phtml(因为还有其他Magento JS)但是我只是收到错误:$j('#slider).slider() is not a function
。这是因为内容是通过ajax加载的。
那么,我如何确保在类别编辑区域中使用$j('#slider).slider()
?让我感到困惑。
答案 0 :(得分:0)
我通过创建一个javascript函数来完成这个:
function loadedInput() {
$('#slider').slider();
}
在属性渲染器中调用该函数:
class Mynamespace_Mymodule_Block_Adminhtml_Catalog_Category_Widget_Slider extends Varien_Data_Form_Element_Text
{
public function getAfterElementHtml()
{
$html = parent::getAfterElementHtml();
return $html." <div id=\"slider\"></div><script>loadedInput();</script>";
}
}