С помощью чего выводить меню на concrete5.6.1.2

Любая помощь по установке/настройке/модификации concrete5

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 23 апр 2013, 10:11 ,  »  Сообщение:#16

По адремсу www\concrete\blocks\autonav\templates есть шаблоны, 2 шт.
Берем header_nav.php или создаем новый на его основе.

Видим в нем такое:

Код: Выделить всё
<?php  defined('C5_EXECUTE') or die(_("Access Denied."));
$navItems = $controller->getNavItems();
?>

<ul class="nav-header">

<?php  foreach ($navItems as $ni) {
   
   $classes = array();
   if ($ni->isCurrent) {
      $classes[] = 'nav-selected';
   }
   if ($ni->inPath) {
      $classes[] = 'nav-path-selected';
   }
   if ($ni->isFirst) {
      $classes[] = 'first';
   }
   $classes = implode(" ", $classes);
   ?>
   
   <li class="<?php echo $classes?>">
      <a class="<?php echo $classes?>" href="<?php echo $ni->url?>" target="<?php echo $ni->target?>"><?php echo $ni->name?></a>
   </li>
<?php  } ?>

</ul>

<div class="ccm-spacer">&nbsp;</div>


Смотрим на переменную-массив $classes. Все что мы туда добавим в пределах текущего цикла будет добавлено как класс в наши элементы "li" и "a".
Следовательно, пишем в массив нужный нам класс.
После
Код: Выделить всё
$classes = array();
добавляем такое:
Код: Выделить всё
$classes[] = 'item-'.$ni->cID;

В $ni->cID не уверен, дампните переменную $ni и гляньте как точно там прописан cID страницы.
Ну а если нужно только для последнего пункта, то смотрите на этот пример для первого.
Код: Выделить всё
if ($ni->isFirst) {
      $classes[] = 'first';
   }

Дампните таки $ni, возможно там есть булионовская метка для последнего.
Правки по адресу www\concrete\blocks\autonav\template не вносить! Переопределите, если знаете что это. Если нет, то вот тут писали об этом viewtopic.php?f=30&t=364&p=2284&hilit=override#p2284
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 23 апр 2013, 10:27 ,  »  Сообщение:#17

Не помогло, к сожалению.

Я если честно в программировании особо не силен и слабо представляю, как можно дампнуть переменную. Можно ли подробнее рассказать?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 23 апр 2013, 10:31 ,  »  Сообщение:#18

Kiskenbassker писал(а):Я если честно в программировании особо не силен и слабо представляю, как можно дампнуть переменную. Можно ли подробнее рассказать?


Код: Выделить всё
var_dump($ni);

или
Код: Выделить всё
print_r($ni);


эти команды выведут содержимое переменных в удобно читаемом виде, если у вас включен xdebug.
Если вы хостите данный сайт на локальном сервере, то вероятнее всего модуль включен.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 23 апр 2013, 10:53 ,  »  Сообщение:#19

А куда эту команду вставлять?

Я вставил в шаблон модуля left_sidebar.php, но в браузер вывело NULL.
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 23 апр 2013, 10:56 ,  »  Сообщение:#20

Или причина в том, что не включен xdebug?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 23 апр 2013, 11:03 ,  »  Сообщение:#21

причина в том, что не туда вставили.
вставьте в шаблон навигатора. переменная то наша там.

команда выводит всегда, но при отстуствии xdebug, выводит просто в строчку- нечитаемо
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 25 апр 2013, 17:03 ,  »  Сообщение:#22

Возникла проблема.

Создал новый шаблон для меню. Потом открываю режим редактирования — «Оформление» — ставлю его. Мне выдает:

Fatal error: [] operator not supported for strings in /home/myaccount/data/www/mysite.ua/concrete/blocks/autonav/templates/head.php on line 18

Что это? Подскажите пожалуйста.
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 25 апр 2013, 17:28 ,  »  Сообщение:#23

видимо чисто синтаксическая ошибка в PHP шаблона. смотрите 18 строку в шаблоне
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 25 апр 2013, 17:29 ,  »  Сообщение:#24

Разобрался. По-видимому, причина в том, что изменил код. Вернул исходный все заработало.
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 25 апр 2013, 17:47 ,  »  Сообщение:#25

guyasyou писал(а):Правки по адресу www\concrete\blocks\autonav\template не вносить! Переопределите, если знаете что это. Если нет, то вот тут писали об этом viewtopic.php?f=30&t=364&p=2284&hilit=override#p2284


Трудно понять.

Вопрос 1. Если альтернативный шаблон сохранять не в папку template, то куда?

Вопрос 2. class FileHelper extends Concrete5_Helper_File - как эта фраза будет выглядеть применительно к моему шаблону меню? Что за класс? А то что он extends - это название моего файла шаблона Header_menu, или что-то другое?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 25 апр 2013, 17:59 ,  »  Сообщение:#26

1- кидаете шаблон по адресу www\blocks\autonav\template\

2- это не относиться к вашему случаю, но когда вам понадобится перегрузить хелпер или что-то типо этого, то пригодиться.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 06 июн 2013, 15:54 ,  »  Сообщение:#27

Добрый день!

Хотел еще проконсультироваться по такой вот ситуации. У меня на сайте два меню — одно слева, другое справа. Для того, чтобы вывести левое меню, я сделал соответствующую структуру в карте сайта:

Home
- Пункт 1
- Пункт 2
- Пункт 3

Затем вывел модуль Auto-Nav «под указанной страницей» Home — и получилось меню.

Пока все отлично. А теперь надо вывести меню справа. Я создаю в меню новый «Пункт 4», убираю его из навигации, карты сайта и вообще отовсюду, откуда можно убрать. И затем под ним создаю страницы моего следующего меню. Получается такая вот структура:

Home
- Пункт 1
- Пункт 2
- Пункт 3
- Пункт 4
- Подпункт 1
- Подпункт 2
- Подпункт 3

Затем вывожу справа тоже модуль Auto-Nav «под указанной страницей» Пункт 4. Меню создано.

Но есть несколько проблем:

1. Формируются слишком длинные URL —
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
— они вполне могли быть короче на один уровень.
2. Несмотря на то, что я убрал страницу «Пункт 4» и из навигации, и из карты сайта, и из sitemap.xml, в Breadcrumbs она все равно отображается. Получается, что есть ссылка на пустую и совершенно не нужную мне страницу.

Соответственно, мой вопрос — можно ли вывести меню каким—то другим способом, чтобы этих проблем не было?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение guyasyou » 06 июн 2013, 16:01 ,  »  Сообщение:#28

я чет не помню, чтобы в крошках был фильтр по отмеченным "скрыть из навигации".
а насчет длины ссылки, там же что-то есть по поводу дополнительных ссылок-синонимов, в настройках страницы, попробуйте там прописать свои ссылки, как вам угодно
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение cmsservice » 06 июн 2013, 16:46 ,  »  Сообщение:#29

1. Формируются слишком длинные URL —
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
— они вполне могли быть короче на один уровень.

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

Получается, что есть ссылка на пустую и совершенно не нужную мне страницу.

Можно этой пустой странице добавить атрибут:

Handle: replace_link_with_first_in_nav
Type: Checkbox
Functionality: Если у страницы отмечен этот атрибут, то нажатие на этот пункт меню будет вызывать переход на первую дочернюю страницу.

я чет не помню, чтобы в крошках был фильтр по отмеченным "скрыть из навигации".

Это смотря какие крошки, но здесь скрывать смысла не имеет пропадут уровни под скрытой страницей.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: С помощью чего выводить меню на concrete5.6.1.2

Сообщение Kiskenbassker » 06 июн 2013, 17:14 ,  »  Сообщение:#30

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


А какой же правильный подход? Моя задача — сделать на сайте два меню с разными пунктами, одно слева, другое справа. Как я это сделал, уже подробно описал выше. Если Вы можете посоветовать другую структуру, позволяющую это осуществить и одновременно решить указанные выше проблемы, я буду очень признателен...

guyasyou писал(а):а насчет длины ссылки, там же что-то есть по поводу дополнительных ссылок-синонимов, в настройках страницы, попробуйте там прописать свои ссылки, как вам угодно


Но я там не видел настроек, чтобы эти ссылки делать каноническими взамен той, которую формирует сама система.
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

Пред.След.

Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron