Joomla 2.5/3.x API 似乎只支持 JToolbarHelper::custom(X) 方法来调用自定义任务。在组件后端的上下文中,像 JToolbarHelper::preferences() 那样启动自定义 litebox 的最佳方法是什么?
2 回答
在 Joomla!3.x,首选项视图不再是模态的。
在 Joomla 3 中,这可以使用自定义布局来完成,就像在文章管理器的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');
在 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 中创建一个文件。然后你会在你的 addtoolbar 方法中调用它:
$bar= JToolBar::getInstance( 'toolbar' );
$bar->addButtonPath(JPATH_COMPONENT_ADMINISTRATOR . '/toolbar/button');
$bar->appendButton('Yourcustom', 'file', JText::_('Test'), 'yourtask', false);
查看 /libraries/cms/toolbar/button 示例。