The only source I found about this is from this post: Replacing JSubmenuHelper with JHtmlSidebar / Administrative menu in Joomla 4

The issue here is that I tried it, and it doesn't show the Sidebar if I try it with JHtmlSidebar.

Here is the Code:

public function render($config = array())
    $config = new KObjectConfigJson($config);
        'toolbar' => null

    foreach ($config->toolbar->getCommands() as $command)
        if(!empty($command->href)) {
            $command->href = $this->getTemplate()->route($command->href);

        JSubmenuHelper::addEntry($this->getObject('translator')->translate($command->label), $command->href, $command->active);


    return '';

In this, JSubmenuHelper::addEntry should be replaced with the JHtmlSidebar function.

I tried to change the line to

JHtmlSidebar::addEntry($this->getObject('translator')->translate($command->label), $command->href, $command->active);

and to

JHtmlSidebar::render($this->getObject('translator')->translate($command->label), $command->href, $command->active);

but on with addEntry the sidebar is hidden and with render() there is no content in it.

What is wrong with the attempts that I already tried?

1 Answer 1


You will firstly need to create a helper class that extends ContentHelper, like so:


use Joomla\CMS\Helper\ContentHelper;

class MyComponentHelper extends ContentHelper
    protected $config = null;

    public function __construct($config)
        $this->config = new KObjectConfigJson($config);
            'toolbar' => null

    public static function addSubmenu()
        foreach ($this->config->toolbar->getCommands() as $command)
            if (!empty($command->href))
                $command->href = $this->getTemplate()->route($command->href);



Then in the following directory:


You'll want to load the class, using JLoader, like so:

JLoader::register('MyComponentHelper', JPATH_ADMINISTRATOR . '/components/com_mycomponent/helpers/contact.php');

Once done, you will need to instantiate the class in your view.html.php:



  • As far as I know, there is no namespaced version of \JHtmlSidebar so I'm not sure if it's going to be supported or replaced in J4.
  • I haven't tested this as I don't really work with components
  • You will need to add the getObject() method to the class or change the $this->getObject() reference if it's coming from a different class.

Hope this helps

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.