私は、光沢のある新しいJoomla4バックエンドでコンポーネントのすべてのビューへのリンクを追加する方法に頭を悩ませてきました。以前はJSubmenuHelperを介してそれを実行していましたが、以前にも非推奨であったように、完全に削除されました。
私はここで言及されていることを試しました: JHtmlSidebarを適用してサイドバーを管理ビューに追加するにはどうすればよいですか? 、つまり、ビューで、ヘルパーのaddSubmenu関数を最初に呼び出します(次に使用します) JHtmlSidebar :: addEntry)、次に、view.html.phpのJHtmlSidebar :: render(JViewLegacy派生クラスの表示メソッド内)。
しかし、コンポーネントのメニューエントリがありません。 「デフォルト」ビューは問題なく表示されますが、コンポーネントの他のビューにリンクするためのサブメニューエントリやタブが表示されません。ブラウザやログにエラーはありません。左側のサブメニューは表示されません。編集:J3のJHtmlSidebarでも実行できません。私が行方不明のものがあるに違いありません。これが私のコードです:view.html.phpで:
class mycomponentViewblocklist extends JViewLegacy
{
function display($tpl = null) {
// other stuff...
mycomponentHelper::addSubmenu('myview');
$this->addToolBar();
$this->sidebar = JHtmlSidebar::render();
parent::display($tpl);
}
Helpers/mycomponent.phpで:
class mycomponentHelper extends JHelperContent
{
public static function addSubmenu($vName)
{
JHtmlSidebar::addEntry(
JText::_('COM_MYCOMPONENT_SUBMENU_MYVIEW'),
'index.php?option=com_mycomponent&view=myview',
$vName == 'myview'
);
// ...
これはJ3およびJ4では機能しませんが、JHtmlSidebar :: addEntryの代わりにJSubMenuHelper :: addEntryを使用するとJ3では機能します。他に何が必要ですか? tmplフォルダーに何かを追加する必要がありますか?
Com_bannerコンポーネントと比較して、私がやっていることとの明らかな違いはわかりません。com_bannerコンポーネントは、4つのビューすべてをリンクエントリとして持つNiceサブメニューを取得します(編集:サブメニューについての私の回答を参照してください。からですが、サブメニューに加えて左側にニースサイドバーもあります)。
Joomla4のすべての発表について、これまでのところ、J3/J2コンポーネントの移行ガイドに関してはほとんど見たことがありませんが、これがここの問題に役立つ場合、誰かが私にいくつかの方向を示すことができますか?
最後にそれを理解しました-私の問題はtmplにプレースホルダーが欠けていることです(これはJSubMenuHelperには必要ありませんでした)。これを私のtmpl/default.phpに追加しました。
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
私が疑問に思っていたバナーのサブメニューは、実際にはマニフェストファイルを介して行われ、次のようなエントリがあります。
<administration>
<menu img="class:banners">com_banners</menu>
<submenu>
<!--
Note that all & must be escaped to & for the file to be valid
XML and be parsed by the installer
-->
<menu
link="option=com_banners"
view="banners"
img="class:banners"
alt="Banners/Banners"
>
com_banners_banners
</menu>
<menu
link="option=com_categories&extension=com_banners"
view="categories"
img="class:banners-cat"
alt="Banners/Categories"
>
com_banners_categories
</menu>
...
これらは、J3とJ4の両方でサブメニューを作成します。