web-dev-qa-db-fra.com

Comment appliquer JHtmlSidebar pour ajouter une barre latérale à ma vue administrateur?

Je ne trouve aucun tutoriel sur l'utilisation de la classe d'utilitaires JHtmlSidebar.

Cela s'en rapproche: Création d'une barre d'outils pour votre composant , mais c'est très vague. Il mentionne $this->sidebar, qui suggère que la classe View devrait avoir une barre latérale d'attribut. Mais l'attribut sidebar n'existe pas dans la classe View.

J'ai essayé d'utiliser ceci:

JHtmlSidebar::addEntry('test','test',0);
echo $this->sidebar = JHtmlSidebar::render();

Cela fait effectivement écho à la barre latérale, mais il se situe en haut ou en bas de ma vue, pas sur le côté. Je me demande simplement s'il existe un moyen de laisser Joomla effectuer le rendu pour moi, au lieu de créer ma propre mise en page.

De l’aide ou des liens vers des tutoriels utiles sur l’utilisation de la barre d’administration seraient très appréciés. Merci.

com_helloworld/views/helloworld/view.html.php:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.view');

class HelloWorldViewHelloWorld extends JViewLegacy {
    public function display($tpl = NULL){
        $this->addToolbar();
        $this->sidebar = JHtmlSidebar::render();
        }
    }

    protected function addToolbar(){
        require_once JPATH_COMPONENT . '/helpers/helloworld .php';
        JToolBarHelper::title( 'Hello World', 'helloworld' );
        JToolBarHelper::addNew();
        JToolBarHelper::deleteList();
        JToolBarHelper::editList();
        JToolBarHelper::preferences('com_helloworld', '500');
        xProfileHelper::addSubmenu('helloworld');
    }
}

com_helloworld/helpers/helloworld.php:

class HelloWorldHelper extends JHelperContent
{
    public static function addSubmenu($vName)
    {
        JHtmlSidebar::addEntry(
            'test',
            'index.php?option=com_helloworld&view=helloworld',
            $vName == 'profile'
        );
    }
}
6
user3804927

Vous devez d’abord créer un fichier d’aide, par exemple:

administrator/components/com_helloworld/helpers/helloworld.php

et dans ce fichier, ajoutez ce qui suit:

class HelloWorldHelper extends JHelperContent
{
    public static function addSubmenu($vName)
    {
        JHtmlSidebar::addEntry(
            'test',
            'index.php?option=com_hellowworld&view=VIEWNAME',
            $vName == 'banners'
        );
    }
}

Remplacez VIEWNAME et la valeur de $vName Par la vue de votre composant à laquelle vous souhaitez ajouter la barre latérale.

Ensuite, dans votre fichier view.html.php, appelez-le comme suit:

HelloWorldHelper::addSubmenu('VIEWNAME');

et bien sûr, il faut ce qui suit pour afficher la barre latérale que vous pouvez mettre sous le code ci-dessus:

$this->sidebar = JHtmlSidebar::render();

Si vous jetez un coup d'œil au composant Banners fourni avec Joomla, il en donnera un bon exemple.

Mise à jour:

Si vous avez oublié de mentionner, à l'intérieur de votre addToolbar() dans le fichier view.html.php, vous devrez appeler le fichier d'assistance de la manière suivante:

require_once JPATH_COMPONENT . '/helpers/hellowworld.php';

Mise à jour 2:

Désolé, je ne suis pas sur la balle aujourd'hui. Vous devrez ajouter ce qui suit à votre default.php dans views/VIEWNAME/tmpl:

<div id="j-sidebar-container" class="span2">
    <?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
     // Main part of the component view
</div>
9
Lodder