Joomla 2.5/3.x API似乎只支持JToolbarHelper::custom(x)方法来调用自定义任务。在组件后端的上下文中,像JToolbarHelper::preferences()那样启动自定义litebox的最佳方式是什么?
在Joomla!3.x,preferences视图不再是模态视图。
在Joomla3中,这可以使用自定义布局来完成,就像在文章管理器的Batch
按钮中所做的那样。
以下代码:
$bar = JToolBar::getInstance('toolbar');
$layout = new JLayoutFile('joomla.toolbar.batch');
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
加载一个返回HTML字符串的布局:
<button data-toggle="modal" data-target="#collapseModal" class="btn btn-small">
<i class="icon-checkbox-partial" title="{$title}"></i>
$title;
</button>
单击时,它会触发生成一个模式框,其中的内容将取自id为collapseModal
的元素。
您可以选择为appendButton()
提供自己的HTML字符串。
您可以在视图的模板中生成模态内容(文章管理器在/administrator/components/com_content/views/articles/tmpl/default_batch.php
中执行此操作)。
我没有Joomla!2.5目前已安装(所以我无法测试以下建议),但您应该能够挂钩到Joomla.submitbutton
JavaScript方法(不要忘记包括模态行为)。
您可以在模板代码中覆盖它:
<script type="text/javascript">
(function(){
var submitbuttom = Joomla.submitbutton;
Joomla.submitbutton = function(task)
{
if (task == 'mytask') {
SqueezeBox.open('path/to/desired/view.php', {handler: 'iframe'});
} else {
return submitbutton.apply(this, arguments);
}
}
})();
</script>
或者通过使用现有来源
SqueezeBox.open($('myModalContainerId'), {handler: 'adopt'});
其中mytask
是提供给工具栏助手的任务:
JToolbarHelper::addNew('mytask');
In Joomla 3.x比这简单得多。我给你两个简单的选择,但你可能想更深入,取决于需要:
选择1:
JToolbarHelper::preview('index.php?option=com_option&view=yourview&tmpl=component');
选择2:
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton( 'Popup', 'zoom-in', 'Preview', 'index.php?option=com_option&view=yourview&tmpl=component' );
正如我上面所说的,您可能希望通过覆盖JToolbarButton来深入了解。主要方向是在/administrator/yourcomponent/toolbar/button/yourcustom.php中创建一个文件
$bar= JToolBar::getInstance( 'toolbar' );
$bar->addButtonPath(JPATH_COMPONENT_ADMINISTRATOR . '/toolbar/button');
$bar->appendButton('Yourcustom', 'file', JText::_('Test'), 'yourtask', false);
看看/librarys/cms/toolbar/button示例。