Joomla 2.5/3.x API は、カスタム タスクを呼び出す JToolbarHelper::custom(X) メソッド以外をサポートしていないようです。コンポーネントのバックエンドのコンテキストで、JToolbarHelper::preferences() のようにカスタム litebox を起動する最良の方法は何ですか?
2 に答える
ジュムラで!3.x では、設定ビューはモーダルではなくなりました。
Joomla 3 では、Article Manager の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 文字列を指定することもできます。
ビューのテンプレートでモーダル コンテンツを生成できます (Article Manager は でそれを行い/administrator/components/com_content/views/articles/tmpl/default_batch.php
ます)。
私はJoomlaを持っていません!現時点では 2.5 がインストールされています (したがって、次の提案をテストすることはできません) が、JavaScript メソッドにフックできるはずですJoomla.submitbutton
(モーダル動作を含めることを忘れないでください)。
テンプレート コードでオーバーライドできます。
<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 では、それよりもはるかに単純です。ここでは 2 つの簡単な選択肢を示しますが、必要に応じてさらに深く掘り下げることもできます。
選択肢 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 の例を見てください。