Как отобразить меню компонента на всех страницах 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('', $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 "";
} elseif ($value['has_child_menu'] == '1') {
$liItem = [];
$parentMenu = $value['menu_name'];
echo '' . $value['menu_name'] .' '. '
';
foreach ($this->msg as $key => $data) {
if ($parentMenu == $data['parent_menu_name']) {
$liItem[] = $data['menu_name'];
}
}
for ($i = 0; $i ' . $liItem[$i] . '';
if ($liItem[$i] !== $liItem[count($liItem) - 1]) echo '';
}
echo '';
unset($liItem);
}
}
}
}
Вопрос в том, как отобразить это меню на всех views (workers, orders и т.д.)?
P.S. Не судите строго - только учусь.

21 Авг 2019 в 07:01
227 +1
0
Ответы
1

Чтобы отобразить это меню на всех views в Joomla, вам нужно внести изменения в шаблон вашего сайта. Вам необходимо отредактировать файл шаблона вашего сайта (например, templates/ваш_шаблон/index.php) и добавить код для вывода меню компонента Ypay на всех страницах.

Примерно такой код может выглядеть:

<?php
$menuModel = JModelLegacy::getInstance('YPay', 'YPayModel'); // Получаем экземпляр модели меню
$menuItems = $menuModel->getMenuNameMsg(); // Получаем список пунктов меню
foreach ($menuItems as $menuItem) {
echo '<a href=""><input type="button" style="padding-bottom: 5px;" class="btn btn-primary btn-ypay" id="projects-btn" value="' . $menuItem['menu_name'] . '"></a>';
}
?>

Этот код можно добавить в нужное место вашего шаблона, чтобы меню компонента Ypay отображалось на всех страницах сайта.

Если у вас есть дополнительные вопросы или нужна дополнительная помощь, не стесняйтесь задавать их.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир