Как отобразить меню компонента на всех страницах 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 <= count($liItem) - 1; $i++) {
echo '' . $liItem[$i] . '';
if ($liItem[$i] !== $liItem[count($liItem) - 1]) echo '';
}
echo '';
unset($liItem);
}
}
}
}
Вопрос в том, как отобразить это меню на всех views (workers, orders и т.д.)?
P.S. Не судите строго - только учусь.

21 Авг 2019 в 07:01
262 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир