foreach ($result["rows"][$result["parent_id"]] as $row)
{
$class = ($row["attributes"]) ? $row["attributes"] : 'class="ul-list"';
if ($row["active"])
{
// начало пункта меню для текущей страницы
echo '<li '.$class.'>';
}
elseif ($row["active_child"])
{
// начало пункта меню для активного дочернего пункта
echo '<li '.$class.'>';
}
elseif ($row["children"])
{
// начало пункта меню для элемента -родителя
echo ' <li id="menu_trigger" '.$class.'>';
} else
{
// начало любого другого пункта меню
echo '<li id="menu_trigger" '.$class.'>';
}
if (
// на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
(!$row["active"] || $result["current_link"])
// влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
&& (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
)
{
if ($row["othurl"])
{
echo '<a href="'.$row["othurl"].'"'.$row["attributes"].''
.(!empty($row["active"]) || !empty($row["active_child"]) ? 'class="navlink active"' : 'class="navlink"')
.'>';
}
else
{
echo '<a href="'.BASE_PATH_HREF.$row["link"].'"'.$row["attributes"]
.(!empty($row["active"]) || !empty($row["active_child"]) ? 'class="navlink active"' : 'class="navlink"')
.'>';
}
}
else
{
echo '<span>';
}
//вывод изображения
/* if (! empty($row["img"]))
{
echo '<img src="'.$row["img"]["src"].'" width="'.$row["img"]["width"].'" height="'.$row["img"]["height"]
.'" alt="'.$row["img"]["alt"].'" title="'.$row["img"]["title"].'"> ';
}
*/
// название пункта меню
if (! empty($row["name"]))
{
echo $row["name"];
}
if (
// на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
(!$row["active"] || $result["current_link"])
// влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
&& (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
)
{
echo '</a>';
}
else
{
echo '</span>';
}
if ($result["show_all_level"] || $row["active_child"] || $row["active"])
{
// вывод вложенного уровня меню
$menu_data = $result;
$menu_data["parent_id"] = $row["id"];
$menu_data["level"]++;
if ($row["active"])
{
// окончание пункта меню - текущей страницы
echo '</li>';
}
elseif ($row["active_child"])
{
// окончание пункта меню для активного дочернего пункта
echo '</li>';
}
else
{
// окончание любого другого пункта меню
echo '</li>';
}
}
// окончание уровня меню
Это код вывода меню.
Хочу убрать ссылку с первого пункта меню (только с него).
Никак не соображу, как это правильнее прописать.
Мыслю в эту сторону:
Код
if (
// на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
(!$row["active"] || $result["current_link"])
// влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
&& (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
)
Добавить сюда условие типа, если пункт является "children", то типа тоже не выводить ссыль.
Или сюда же вставить условие: если $result["parent_id"]=4655 (id конкретного меню взять), то тоже не выводить ссыль.
В общем, не соображу, как это правильнее сделать (чтобы еще полсайта не сломать ).
Подскажите, пожалуйста.
Может быть кто-то уже делал.
Соответсвенно где "выводим ссылку" попадает этот кусок.
Код
if (
// на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
(!$row["active"] || $result["current_link"])
// влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
&& (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
)
{
if ($row["othurl"])
{
Никакой магии. Скрипт в поля с кодом подгружается только к уже существующим страницам. После обновления страницы неоформленное новое поле тоже "подхватится". Иногда, правда, бывает что не ко всем подгружается (но редко). Короче F5 рулит.
Спасибо всем за ответы.
Пример Дениса реализовать не получилось почему-то (может скобку закрывающую не туда впихнула).
Получилось решить самостоятельно.
Если кому нужно, то вставляем && (!$row["children"]) в этот кусок:
Код
if (
// на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
(!$row["active"] || $result["current_link"])
//убирает ссылку на первый пункт меню
&& (!$row["children"])
// влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
&& (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
)
В файле этот кусок кода встречается два раза: когда выводим ссылку и когда ее закрываем.
Собственно, тестировщик сказал, что все работает норм.
//убирает ссылку на первый пункт меню
&& (!$row["children"])
Это всё таки не-то но при определённых обстоятельствах может смахивать на то что требуется.
По логике вещей $row["children"] хранит потомков. И если в шаблоне уровня где используется такая конструкция встретится пункт без сынков и дочек то ему не будет выведена ссылка вне зависимости того первый это пункт или какой-то другой.
Поправьте меня если я ошибаюсь. Я не расстроюсь. :)
Ну, в моем случае что имеем:
используется leftmenu (шаблон модуля меню), их по количеству две штуки 1 и 2.
Первый файл отвечает за вывод списка-родителя, второй - за выпадающий подсписок.
Первым идет каталог продукции, следующие - статические страницы.
Когда тычешь на каталог - появляется выпадающий список.
Суть: если там стоит ссылка "каталог продукции", то и вылетаешь по ссылке. Если ссылки нет, то разворачивается подменю.
В полной версии сайта выпадашка сама выпадает, а в мобильной выпадашка появляется щелчком мыши. Вот в мобильной эта ссылка и мешает.
Собственно, данное изменение было внесено только в первом файле, отвечающем за родительское меню.
Менять на данном сайте меню никто не будет. Если захотят это сделать, то поломается много чего, т.к. у клиента в файлах жестко прописаны менюхи с id. Поменялось id - перестало все меню работать.
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.