web-dev-qa-db-ja.com

Joomla 4でJSubmenuHelperをJHtmlSidebar /管理メニューに置き換える

私は、光沢のある新しい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コンポーネントの移行ガイドに関してはほとんど見たことがありませんが、これがここの問題に役立つ場合、誰かが私にいくつかの方向を示すことができますか?

4
codeling

最後にそれを理解しました-私の問題は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 &amp; 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&amp;extension=com_banners"
      view="categories"
      img="class:banners-cat"
      alt="Banners/Categories"
      >
      com_banners_categories
    </menu>
    ...

これらは、J3とJ4の両方でサブメニューを作成します。

2
codeling