2

Joomla 2.5/3.x API 似乎只支持 JToolbarHelper::custom(X) 方法来调用自定义任务。在组件后端的上下文中,像 JToolbarHelper::preferences() 那样启动自定义 litebox 的最佳方法是什么?

4

2 回答 2

0

在 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.submitbuttonJavaScript 方法(不要忘记包含模态行为)。

您可以在模板代码中覆盖它:

<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');
于 2013-08-14T19:27:10.760 回答
0

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

于 2016-10-16T09:07:36.203 回答