Re: Активный пункт меню
зачем вам внедрять PHP-код, если можно использовать для этой цели средства CSS, просто пропишите свойства для классов current и currentpath тега li
или вы создаете какие-то собственные меню? а чем вас плагины не устраивают?
Re: Активный пункт меню
собственно, в этом и проблема, как присвоить активному пункту меню (тэгу li) класс. повторюсь, меню создаются в компонентах.
кроме того, дочерние страницы главного меню также не подсвечивают родительский пункт.
наверное, можно задать вопрос так: как создать в компонентах динамическое меню?
Re: Активный пункт меню
рекомендую использовать плагин http://getsimplecms.ru/plaginy-dlya-get … agin-i18n/
с его помощью можно создать любое количество меню в любом месте
Re: Активный пункт меню
мне очень понравилась СMS - она шикарна и проста в освоении, но плагины.... мне не удалось заставить заработать ни один, включая i18n - в смысле, я их устанавливаю, вижу в админке, но что-то с их помощью сделать - нереально. например, все вложенные пункты так и выводятся в первом уровне.
Re: Активный пункт меню
долой СУБД - увольте программиста, а потом попробуйте установить плагины к этой "лёгкой" системе и возьмите программиста обратно
Re: Активный пункт меню
вообще-то основные плагины как раз достаточно просты, если не лезть в создание блогов и мультиязычных сайтов, изначально CMS ориентирована на малый бизнес, а не на разработчиков сайтов, просто за 4 года развития появились и плагины посложнее, позволяющие создавать более функциональные сайты
Re: Активный пункт меню
мне очень понравилась СMS - она шикарна и проста в освоении, но плагины.... мне не удалось заставить заработать ни один, включая i18n - в смысле, я их устанавливаю, вижу в админке, но что-то с их помощью сделать - нереально. например, все вложенные пункты так и выводятся в первом уровне.
а вы внимательно прочитали текст на странице с описанием плагина? вы там коды не заметили, которые нужно вставлять? а с темой по созданию многоуровневого меню ознакомились? http://forum.getsimplecms.ru/viewtopic.php?id=37
Re: Активный пункт меню
Хочу вернуться к вопросу реализации активного пункта меню в Getsimple.
Прочитал тему и понял, что надо попробовать применить плагин i18n.
Попробовал, но разобраться не смог. Походил по форуму на оф.сайте, ничего не нашел.
Видимо, дело не стомт и выеденного яйца, потому и нет ничего. Но для меня пока тайна за семью печатями.
Есть разметка и стили к ней, соответственно и результат.
Под спойлером
Оказывается больше одной ссылки вставлять нельзя? Придется разбить сообщение на части.
Re: Активный пункт меню
Продолжение
При переносе в GetSimple реализовано так. Под спойлером
Re: Активный пункт меню
Продолжение
Вопрос - как сделать, чтобы отображение было, как в HTML?
На форуме оф. сайта был вопрос о подстрочных надписях в меню, аналогичных этому примеру.
В ответе чуть-ли разработчик системы сказал, что реализация надписей в горизонтальных меню невозможна, а в вертикальных достаточно тяжела.
Шут с ними надписями, но как сохранить стиль активного пункта меню в GetSimple?
Почитав руководство к плагину i18n, нашел несколько упоминаний об активном пункте меню, но как это реализовать не понял.
Чувствую, что решение где-то рядом, но как сделать не пойму. Стиль есть, но как его запихнуть в тему...
Посмотрел исходный код нескольких сайтов, работающих на GetSimle. В коде видно использование активного пункта меню и, соответственно его стиля, но как прописать это в теме не понял.
Прошу помочь разобраться.
Re: Активный пункт меню
для использования измененного вида меню вставить в шаблон
<ul><?php get_i18n_navigation(return_page_slug(),0,0,I18N_SHOW_MENU, 'menu'); ?></ul>
где menu - это имя компонента, в котором вставлено следующее
<li class="<?php echo $item->classes; ?>">
<a href="<?php echo htmlspecialchars($item->link); ?>">
<?php echo htmlspecialchars($item->text); ?>
<span><?php echo htmlspecialchars($item->myname); ?></span>
</a>
<?php if ($item->isOpen) { ?>
<ul><?php $item->outputChildren(); ?></ul>
<?php } ?>
</li>
где myname - имя дополнительного поля используемого в плагине i18n-custom-fields
так для картинок в меню
<li class="<?php echo $item->classes; ?>">
<a href="<?php echo htmlspecialchars($item->link); ?>">
<?php if (returnPageField($item->slug, 'menuicon')) { ?>
<img src="<?php echo htmlspecialchars(returnPageField($item->slug, 'menuicon')); ?>"/>
<?php } ?>
<?php echo htmlspecialchars($item->text); ?>
</a>
<?php if ($item->isOpen) { ?>
<ul><?php $item->outputChildren(); ?></ul>
<?php } ?>
</li>
в любом случае дополнительно к плагину http://getsimplecms.ru/plaginy-dlya-get … agin-i18n/ нужно использовать плагин http://getsimplecms.ru/plaginy-dlya-get … om-fields/
и рекомендую просто переписать в css правило. предназначенное для класса ссылки active, на правило для ссылки, размещенной в теге li класса current и currentpath, хотя можете и попробовать немного переделать код, предназначенный для бутсраповского меню
<?php
$s = array('current', 'activepath', 'currentpath', 'open');
$r = array('active', 'active', 'active', 'dropdown');
$c = str_replace($s, $r, $item->classes);
?>
<li class="<?php echo $c; ?>">
<?php if ($item->isOpen) { ?>
<a href="<?php echo htmlspecialchars($item->link); ?>" class="dropdown-toggle" data-toggle="dropdown">
<?php echo htmlspecialchars($item->text); ?>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<?php $item->outputChildren(); ?>
</ul>
<?php } else { ?>
<a href="<?php echo htmlspecialchars($item->link); ?>">
<?php echo htmlspecialchars($item->text); ?>
</a>
<?php } ?>
</li>
Re: Активный пункт меню
Олег, спасибо за оперативность. Попробую разобраться
Re: Активный пункт меню
и рекомендую просто переписать в css правило. предназначенное для класса ссылки active, на правило для ссылки, размещенной в теге li класса
Олег, спасибо за советы. Воспользовался вторым. Все получилось, как нельзя лучше. Работает даже со стандартной вставкой (не i18n).
Еще на стадии адаптации шаблона под систему, стили навигации показались странноватыми, но нужен был толчок в нужную сторону..
Потом посмотрел, как все это реализовано в стандартной теме Cardinal, все оказалось рядом и не надо было смотреть исходные коды сайтов и прочего. Но без толчка топтался бы еще довольно долго.
Третий способ не рассматривал, а по второму навскидку можно сказать, что он для моего случая избыточен: мне не нужны дополнительные поля и дополнительные уровни меню - оно у меня одноуровневое. Но с плагином i18 надо разбираться - потенциал в нем заложен огромный.
Чуть не по теме: существует ли русский перевод руководства по упомянутому плагину и если существует, где его взять?
Еще раз спасибо за толчок.
Re: Активный пункт меню
мне казалось я все описал, и даже больше http://getsimplecms.ru/plaginy-dlya-get … agin-i18n/
Re: Активный пункт меню
мне казалось я все описал, и даже больше
Кладезь знаний, и опять все рядом - никуда ходить не надо.
Единственное желание: иметь бы все это под рукой, оффлайн.
Re: Активный пункт меню
есть программа, позволяющая сохранять сайты на комп http://www.httrack.com/
Re: Активный пункт меню
есть программа, позволяющая сохранять сайты на комп http://www.httrack.com/
Скачал сайт с приличной глубиной дней 10-12 назад, потом праздники, все забылось. Сейчас решил закачать и обнаружил уже готовое зеркало.
Но я имел ввиду несколько другое, типа руководства в формате CHM. Но и то, что есть радует.
Кстати WebHTTrack Website Copier пользуюсь и под Linux, и под Windows.
Еще раз спасибо за титанический труд.
Re: Активный пункт меню
чтобы писать руководство, нужно быть писателем
Re: Активный пункт меню
Тоже столкнулся с такой же проблемой. К сожалению познаний в CSS и HTML поверхностные. В качестве шаблона использую стоковый, под названием Innovation. Практически ничего не менял, добавил только контент на сайт и ссылки на сайдбаре (ссылки на страницы сайта). Дочерних страниц нет, да и вообще страниц очень мало. Ссылки добавил в "Редактировать компоненты" sidebar. Выглядит это дело вот так:
<h2>Сведения об образовательной организации</h2>
<ul><h3>
<li><a href="/index.php?id=about">Основные сведения</a></li>
<li><a href="/index.php?id=struct">Структура и органы управления</a></li>
<li><a href="/index.php?id=docs">Документы</a></li>
<li><a href="/index.php?id=obrazovanie">Образование</a></li>
<li><a href="/index.php?id=rucovodstvo">Руководство. Педагогический состав</a></li>
</h3></ul>
Куда что добавить, чтобы ссылка становилась не ссылкой , когда пользователь переходит по ней в тот раздел, в которой она его бросает, и снова становилась активной, когда юзер переходит по другой ссылке, т.е. на другую страницу сайта. Спасибо.
Re: Активный пункт меню
вот это вы зря <ul><h3> так не бывает
по-моему нет ни одного плагина, который убирал бы ссылку, плагины добавляют к активной ссылке класс current, без плагинов также добавляется этот класс, а если вы просто разместили ссылки в сайдбаре, то тут вам поможет только создание для каждой страницы отдельного сайдбара
хотя если ссылок немного, можете попробовать такой код
<ul>
<?php if ( return_page_slug() == 'about' ) { ?>
<li class="current">Основные сведения</li>
<?php } else { ?>
<li><a href="/index.php?id=about">Основные сведения</a></li>
<?php } ?>
<?php if ( return_page_slug() == 'struct' ) { ?>
<li class="current">Структура и органы управления</li>
<?php } else { ?>
<li><a href="/index.php?id=struct">Структура и органы управления</a></li>
<?php } ?>
<?php if ( return_page_slug() == 'docs' ) { ?>
<li class="current">Документы</li>
<?php } else { ?>
<li><a href="/index.php?id=docs">Документы</a></li>
<?php } ?>
<?php if ( return_page_slug() == 'obrazovanie' ) { ?>
<li class="current">Образование</li>
<?php } else { ?>
<li><a href="/index.php?id=obrazovanie">Образование</a></li>
<?php } ?>
<?php if ( return_page_slug() == 'rucovodstvo' ) { ?>
<li class="current">Руководство. Педагогический состав</li>
<?php } else { ?>
<li><a href="/index.php?id=rucovodstvo">Руководство. Педагогический состав</a></li>
<?php } ?>
</ul>
в этой теме для body есть идентификатор, и пропишите стили для класса current
Re: Активный пункт меню
olsv64 Вот это да! Все заработало! Благодарю!
вот это вы зря <ul><h3>
Можно узнать почему? Эффект от тега h3 есть. Или правильно такие параметры надо задавать в соответствующем файле css?
Re: Активный пункт меню
теги li не должны быть заключены в тег h3, контейнером для них является тег ul, тег h3 - это заголовок третьего уровня, используйте CSS для настроек внешнего вида ваших ссылок
Re: Активный пункт меню
Я использовал такой скрипт в header:
<script>
$(function () {
$("<?php return_page_slug(); ?> a:contains('<?php get_page_title(); ?>')").parent().addClass('active');
});
</script>
а в CSS дбавил:
.active a {
color: #5c5b60;
font-weight: bold;
}