@ome778

Как отобразить меню компонента на всех страницах views?

Пишу для себя компонент Joomla с названием Ypay. Файловая структура как на скриншоте https://i.stack.imgur.com/B098N.png. И вот скриншот самого меню https://i.stack.imgur.com/2UiC2.png Каждый пункт меню - это будет своя model и свой views. Но как отобразить это меню на всех views?

код меню в models/ypay.php 
    class YPayModelYPay extends JModelItem
    {
    protected $messages;

    protected function getMenuFromDb()
    {
        $db    = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('menu_name, parent_menu_name, has_child_menu');
        $query->from('#__ypay_mainmenu');
        $db->setQuery((string) $query);
        $messages = $db->loadAssocList();
        return $messages;
    }

    public function getMenuNameMsg()
    {
        if (!isset($this->message))
        {
            $this->message = $this->getMenuFromDb();
        }
        return $this->message;
    }
    }

    код меню в views/ypay.html.php
    class YPayViewYPay extends JViewLegacy
    {
        function display($tpl = null)
    {
        // Assign data to the view

        $this->msg = $this->get('MenuNameMsg');
        
     // Check for errors.
        if (count($errors = $this->get('Errors'))) {
            JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');

            return false;
        }
        $this->showMainMenu();
        // Display the view
        parent::display($tpl);
    }

    public function showMainMenu()
    {
        foreach ($this->msg as $item => $value) {
            if ($value['has_child_menu'] == '0' && $value['parent_menu_name'] == 
    '0') {
                echo "<a href=''><input type='button'  style='padding-bottom: 
    5px;' class='btn btn-primary btn-ypay' id='projects-btn' value=" . 
    $value['menu_name'] . "></a>";
            } elseif ($value['has_child_menu'] == '1') {
                $liItem = [];
                $parentMenu = $value['menu_name'];
                echo '<div class="dropdown" style="display: inline; margin-
    right: 5px;"><button class="btn btn-primary dropdown-toggle" type="button" 
    data-toggle="dropdown">' . $value['menu_name'] .' '. '<span class="caret">
    </span></button><ul class="dropdown-menu">';
                foreach ($this->msg as $key => $data) {
                    if ($parentMenu == $data['parent_menu_name']) {
                        $liItem[] = $data['menu_name'];
                    }
                }

                for ($i = 0; $i <= count($liItem) - 1; $i++) {
                    echo '<li><a href="/ypay/index.php?
    option=com_ypay&view=workers">' . $liItem[$i] . '</a></li>';
                    if ($liItem[$i] !== $liItem[count($liItem) - 1]) echo '<li 
    class="divider" style="border-bottom: 1px solid #007bcc; margin: 2px 1px 2px 
    2px;"></li>';
                }
                echo '</ul></div>';
                unset($liItem);
            }

        }
    }
    }

Вопрос в том, как отобразить это меню на всех views (workers, orders и т.д.)?

P.S. Не судите строго - только учусь.
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽