在 Joomla 2.5/3.x 中从组件后端的工具栏中打开一个自定义精简框



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示例。

相关内容

最新更新