1

Тема: Активный пункт меню

Я не программист, поэтому вопрос для меня сложный.
При создании собственных меню не получается внедрить в компонент (Тема -> Компоненты) PHP-код, который бы подсвечивал активный пункт меню, например, по id страницы (постоянная ссылка).

Поделиться

2

Re: Активный пункт меню

зачем вам внедрять PHP-код, если можно использовать для этой цели средства CSS, просто пропишите свойства для классов current и currentpath тега li

или вы создаете какие-то собственные меню? а чем вас плагины не устраивают?

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

3

Re: Активный пункт меню

собственно, в этом и проблема, как присвоить активному пункту меню (тэгу li) класс. повторюсь, меню создаются в компонентах.
кроме того, дочерние страницы главного меню также не подсвечивают родительский пункт.
наверное, можно задать вопрос так: как создать в компонентах динамическое меню?

Поделиться

4

Re: Активный пункт меню

рекомендую использовать плагин http://getsimplecms.ru/plaginy-dlya-get … agin-i18n/
с его помощью можно создать любое количество меню в любом месте

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

5

Re: Активный пункт меню

мне очень понравилась СMS - она шикарна и проста в освоении, но плагины.... мне не удалось заставить заработать ни один, включая i18n - в смысле, я их устанавливаю, вижу в админке, но что-то с их помощью сделать - нереально.  например, все вложенные пункты так и выводятся в первом уровне.

Поделиться

6

Re: Активный пункт меню

долой СУБД - увольте программиста, а потом попробуйте установить плагины к этой "лёгкой" системе и возьмите программиста обратно smile

Поделиться

7

Re: Активный пункт меню

вообще-то основные плагины как раз достаточно просты, если не лезть в создание блогов и мультиязычных сайтов, изначально CMS ориентирована на малый бизнес, а не на разработчиков сайтов, просто за 4 года развития появились и плагины посложнее, позволяющие создавать более функциональные сайты smile

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

8

Re: Активный пункт меню

scorpio9 пишет:

мне очень понравилась СMS - она шикарна и проста в освоении, но плагины.... мне не удалось заставить заработать ни один, включая i18n - в смысле, я их устанавливаю, вижу в админке, но что-то с их помощью сделать - нереально.  например, все вложенные пункты так и выводятся в первом уровне.

а вы внимательно прочитали текст на странице с описанием плагина? вы там коды не заметили, которые нужно вставлять? а с темой по созданию многоуровневого меню ознакомились? http://forum.getsimplecms.ru/viewtopic.php?id=37

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

9

Re: Активный пункт меню

Хочу вернуться к вопросу реализации активного пункта меню в Getsimple.
Прочитал тему и понял, что надо попробовать применить плагин i18n.
Попробовал, но разобраться не смог. Походил по форуму на оф.сайте, ничего не нашел.
Видимо, дело не стомт и выеденного яйца, потому и нет ничего. Но для меня пока тайна за семью печатями.
Есть разметка и стили к ней, соответственно и результат.
Под спойлером

+ открыть спойлер

http://s5.hostingkartinok.com/uploads/images/2014/01/0051002f3893b7fb44b4d7be09a354c1.png

Оказывается больше одной ссылки вставлять нельзя? Придется разбить сообщение на части.

Сайт vyatsky

Поделиться

10

Re: Активный пункт меню

Продолжение
При переносе в GetSimple реализовано так. Под спойлером

+ открыть спойлер

http://s3.hostingkartinok.com/uploads/images/2014/01/5b8fb3c17fc55ef1b06665428c705dfa.png

Сайт vyatsky

Поделиться

11

Re: Активный пункт меню

Продолжение
Вопрос - как сделать, чтобы отображение было, как в HTML?
На форуме оф. сайта был вопрос о подстрочных надписях в меню, аналогичных этому примеру.
В ответе чуть-ли разработчик системы сказал, что реализация надписей в горизонтальных меню невозможна, а в вертикальных достаточно тяжела.
Шут с ними надписями, но как сохранить стиль активного пункта меню в GetSimple?
Почитав руководство к плагину i18n, нашел несколько упоминаний об активном пункте меню, но как это реализовать не понял.

+ открыть спойлер

http://s3.hostingkartinok.com/uploads/images/2014/01/522efcd4dbc6d724407ea31c3f9c96d4.png

Чувствую, что решение где-то рядом, но как сделать не пойму. Стиль есть, но как его запихнуть в тему...
Посмотрел исходный код нескольких сайтов, работающих на GetSimle. В коде видно использование активного пункта меню и, соответственно его стиля, но как прописать это в теме не понял.
Прошу помочь разобраться.

Сайт vyatsky

Поделиться

12

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>
Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

13

Re: Активный пункт меню

Олег, спасибо за оперативность. Попробую разобраться

Сайт vyatsky

Поделиться

14

Re: Активный пункт меню

и рекомендую просто переписать в css правило. предназначенное для класса ссылки active, на правило для ссылки, размещенной в теге li класса

Олег, спасибо за советы. Воспользовался вторым. Все получилось, как нельзя лучше. Работает даже со стандартной вставкой (не i18n).
Еще на стадии адаптации шаблона под систему, стили навигации показались странноватыми, но нужен был толчок в нужную сторону..
Потом посмотрел, как все это реализовано в стандартной теме Cardinal, все оказалось рядом и не надо было смотреть исходные коды сайтов и прочего. Но без толчка топтался бы еще довольно долго.
Третий способ не рассматривал, а по второму навскидку можно сказать, что он для моего случая избыточен: мне не нужны дополнительные поля и дополнительные уровни меню - оно у меня одноуровневое. Но с плагином i18 надо разбираться - потенциал в нем заложен огромный.
Чуть не по теме: существует ли русский перевод руководства по упомянутому плагину и если существует, где его взять?

Еще раз спасибо за толчок.

Сайт vyatsky

Поделиться

15

Re: Активный пункт меню

мне казалось я все описал, и даже больше smile http://getsimplecms.ru/plaginy-dlya-get … agin-i18n/

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

16

Re: Активный пункт меню

мне казалось я все описал, и даже больше

Кладезь знаний, и опять все рядом - никуда ходить не надо.
Единственное желание: иметь бы все это под рукой, оффлайн.

Сайт vyatsky

Поделиться

17

Re: Активный пункт меню

есть программа, позволяющая сохранять сайты на комп http://www.httrack.com/

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

18

Re: Активный пункт меню

есть программа, позволяющая сохранять сайты на комп http://www.httrack.com/

Скачал сайт с приличной глубиной дней 10-12 назад, потом праздники, все забылось. Сейчас решил закачать и обнаружил уже готовое зеркало.
Но я имел ввиду несколько другое, типа руководства в формате CHM. Но и то, что есть радует.
Кстати WebHTTrack Website Copier пользуюсь и под Linux, и под Windows.
Еще раз спасибо за титанический труд.

Сайт vyatsky

Поделиться

19

Re: Активный пункт меню

чтобы писать руководство, нужно быть писателем smile

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

20

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>

Куда что добавить, чтобы ссылка становилась не ссылкой smile, когда пользователь переходит по ней в тот раздел, в которой она его бросает, и снова становилась активной, когда юзер переходит по другой ссылке, т.е. на другую страницу сайта. Спасибо.

Поделиться

21

Re: Активный пункт меню

вот это вы зря <ul><h3> smile так не бывает
по-моему нет ни одного плагина, который убирал бы ссылку, плагины добавляют к активной ссылке класс current, без плагинов также добавляется этот класс, а если вы просто разместили ссылки в сайдбаре, то тут вам поможет только создание для каждой страницы отдельного сайдбара smile
хотя если ссылок немного, можете попробовать такой код

<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

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

22

Re: Активный пункт меню

olsv64 Вот это да! Все заработало! Благодарю!

+ offtop

вот это вы зря <ul><h3>

Можно узнать почему? Эффект от тега h3 есть. Или правильно такие параметры надо задавать в соответствующем файле css?

Поделиться

23

Re: Активный пункт меню

теги li не должны быть заключены в тег h3, контейнером для них является тег ul, тег h3 - это заголовок третьего уровня, используйте CSS для настроек внешнего вида ваших ссылок

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

24

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;
}

Поделиться