исправляем фатал. ошибку в навигации при отсутствии/неправильно указанном Id в теге

This commit is contained in:
2025-11-23 19:05:51 +05:00
parent c432b53d6d
commit 37a30f6ca9
2 changed files with 34 additions and 26 deletions

View File

@@ -138,6 +138,7 @@
$navigation_level1_active = (empty($_REQUEST['level1_active'])) ? "<a target=\"[tag:target]\" href=\"[tag:link]\" class=\"first_active\">[tag:linkname]</a>" : $_REQUEST['level1_active'];
// Выполняем запрос к БД на добавление нового меню
$AVE_DB->Query("
INSERT INTO
" . PREFIX . "_navigation
@@ -147,20 +148,20 @@
title = '" . $navigation_title . "',
level1 = '" . $navigation_level1 . "',
level1_active = '" . $navigation_level1_active . "',
level2 = '" . $_REQUEST['level2'] . "',
level2_active = '" . $_REQUEST['level2_active'] . "',
level3 = '" . $_REQUEST['level3'] . "',
level3_active = '" . $_REQUEST['level3_active'] . "',
level1_begin = '" . $_REQUEST['level1_begin'] . "',
level2_begin = '" . $_REQUEST['level2_begin'] . "',
level3_begin = '" . $_REQUEST['level3_begin'] . "',
level1_end = '" . $_REQUEST['level1_end'] . "',
level2_end = '" . $_REQUEST['level2_end'] . "',
level3_end = '" . $_REQUEST['level3_end'] . "',
begin = '" . $_REQUEST['begin'] . "',
end = '" . $_REQUEST['end'] . "',
level2 = '" . ($_REQUEST['level2'] ?? '') . "',
level2_active = '" . ($_REQUEST['level2_active'] ?? '') . "',
level3 = '" . ($_REQUEST['level3'] ?? '') . "',
level3_active = '" . ($_REQUEST['level3_active'] ?? '') . "',
level1_begin = '" . ($_REQUEST['level1_begin'] ?? '') . "',
level2_begin = '" . ($_REQUEST['level2_begin'] ?? '') . "',
level3_begin = '" . ($_REQUEST['level3_begin'] ?? '') . "',
level1_end = '" . ($_REQUEST['level1_end'] ?? '') . "',
level2_end = '" . ($_REQUEST['level2_end'] ?? '') . "',
level3_end = '" . ($_REQUEST['level3_end'] ?? '') . "',
begin = '" . ($_REQUEST['begin'] ?? '') . "',
end = '" . ($_REQUEST['end'] ?? '') . "',
user_group = '" . (empty($_REQUEST['user_group']) ? '' : implode(',', $_REQUEST['user_group'])) . "',
expand_ext = '" . $_REQUEST['expand_ext'] . "'
expand_ext = '" . ($_REQUEST['expand_ext'] ?? '') . "'
");
$navigation_id = $AVE_DB->getLastInsertId();

View File

@@ -12,7 +12,7 @@
*/
/**
/**
* Возвращает меню навигации
*
* @param int $id идентификатор меню навигации
@@ -36,13 +36,19 @@
$navigation = $AVE_DB->Query($sql, -1, 'nav_' . $navi_id, true, '.navigation')->FetchRow();
$navigation->user_group = explode(',',$navigation->user_group);
// Проверяем, что $navigation является объектом, прежде чем обращаться к свойствам
if (is_object($navigation)) {
$navigation->user_group = explode(',',$navigation->user_group);
} else {
// Если меню не найдено (результат false), возвращаем false или null.
return false;
}
return $navigation;
}
/**
/**
* Функция обработки навигации
*
* @param int $navi_tag - идентификатор меню навигации
@@ -59,6 +65,13 @@
$navi_menu = get_navigations($navi_id);
// ИСПРАВЛЕНИЕ: Проверяем, существует ли объект меню, сразу после его получения.
if (! $navi_menu)
{
echo 'Menu ', $navi_id, ' not found!';
return '';
}
$expnad_ext = $navi_menu->expand_ext;
// извлекаем level из аргумента
@@ -68,12 +81,6 @@
$navi = '';
if (! $navi_menu)
{
echo 'Menu ', $navi_id, ' not found!';
return '';
}
// выставляем гостевую группу по дефолту
if (! defined('UGROUP'))
define('UGROUP', 2);
@@ -104,7 +111,7 @@
// запрос для выборки по текущему алиасу
$sql_doc_active_alias = '';
$url_suff = '';
if (defined('URL_SUFF') AND URL_SUFF)
@@ -282,15 +289,15 @@
// Парсим теги в шаблонах пунктов
$navi_item_tpl = array(
1 => array(
1 => array(
'inactive' => $navi_menu->level1,
'active' => $navi_menu->level1_active
),
2 => array(
2 => array(
'inactive' => $navi_menu->level2,
'active' => $navi_menu->level2_active
),
3 => array(
3 => array(
'inactive' => $navi_menu->level3,
'active' => $navi_menu->level3_active
)