LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2012, 17:24:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Необходима помощь в настройке нестандартного меню  (Прочитано 1154 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
d.zasypkin
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« : 15.10.2010, 02:50:17 »

Задача следующая:

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

На данный момент это реализовано следующим образом:
Код
<body id="body" class="page<?php echo JRequest::getInt( 'Itemid' )?>">

По классам, заданным id, настроены СSS.

В php я не силён, этот способ посчитал для себя наиболее подходящим.

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

Плодить темплейты тоже не хотелось бы.
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #1 : 15.10.2010, 03:07:56 »

Код:
<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$chapter = isset($active)? $active->tree[0] : null;
?>
<body id="body" class="page<?php echo $chapter ?>">

Вот только я не помню там дерево идет от предков к потомкам или наоборот... Если наоборот то вместо $active->tree[0] будет array_shift($active->tree) (кажется)
Записан
d.zasypkin
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #2 : 15.10.2010, 03:14:51 »

Код:
<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$chapter = isset($active)? $active->tree[0] : null;
?>
<body id="body" class="page<?php echo $chapter ?>">

Вот только я не помню там дерево идет от предков к потомкам или наоборот... Если наоборот то вместо $active->tree[0] будет array_shift($active->tree) (кажется)

Всё работает, большое спасибо!
Записан
d.zasypkin
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #3 : 15.10.2010, 03:22:16 »

Код:
<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$chapter = isset($active)? $active->tree[0] : null;
?>
<body id="body" class="page<?php echo $chapter ?>">

Вот только я не помню там дерево идет от предков к потомкам или наоборот... Если наоборот то вместо $active->tree[0] будет array_shift($active->tree) (кажется)

Совсем забыл!

Есть ещё сопряжённый вопрос более эстетического толка.

Как можно вызвать Псевдоним раздела меню, а не айдишник?
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #4 : 15.10.2010, 03:39:03 »

Код
<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$chapter_id = isset($active)? $active->tree[0] : null;
$chapter = ($menu->getItem($chapter_id))? $menu->getItem($chapter_id) : $menu->getDefault();
$alias = $chapter->alias;
?>
<body id="body" class="page<?php echo $alias ?>">
Записан
d.zasypkin
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #5 : 15.10.2010, 03:56:24 »

Код
<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$chapter_id = isset($active)? $active->tree[0] : null;
$chapter = ($menu->getItem($chapter_id))? $menu->getItem($chapter_id) : $menu->getDefault();
$alias = $chapter->alias;
?>
<body id="body" class="page<?php echo $alias ?>">

Предел мечтаний)
Еще раз спасибо!
Записан
HYBRID
Давно я тут
****

Репутация: +37/-0
Offline Offline

Пол: Мужской
Сообщений: 296


Они захватят мир


« Ответ #6 : 16.10.2010, 00:35:26 »

Даник, плюс тебе за то что помог развитию идеи, похожая идея как у d.zasypkin летала где-то в голове а тут бац и готовое решение для этого Azn
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #7 : 16.10.2010, 02:03:36 »

Еще вместо алиаса тут можно употребить Суффикс класса страницы - прописывается в параметрах пункта меню
Записан
HYBRID
Давно я тут
****

Репутация: +37/-0
Offline Offline

Пол: Мужской
Сообщений: 296


Они захватят мир


« Ответ #8 : 16.10.2010, 04:23:19 »

пора тебе завести свой блог "полезные рецепты для joomla" Wink
Записан
Garrison
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #9 : 01.02.2012, 15:16:09 »

А подскажите с помощью какого "сниппета" можно добавить id не текущего пункта меню, как в примерах выше а присвоить вложенным пунктам меню id родителя? то. е. к примеру есть меню вида
колбаса
-вареная
-копченная

где id пункта "колбаса" 20
какой "сниппет" добавить в код, чтобы в коде страницы у вложенных пунктах -вареная, и  -копченная присутствовал id родителя 20?
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #10 : 01.02.2012, 15:30:20 »

Просмотрите сообщения внимательней. Тут как раз эта проблема и решалась. Только второй кусок кода вместо id выводил алиас пункта меню, чтоб было не <body class="page-47" /> а <body class="page-kolbasa" />
Записан
Garrison
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #11 : 01.02.2012, 15:55:31 »

Когда я подставляю код из примера выше у меня выходит не совсем то что нужно...  Вот меню:
Колбаса         (id20) (это сепаратор)
-вареная        (a class= "mainlevel")
-копченая      (a class= "mainlevel")
Деликатесы    (id21) (это сепаратор)
-ветчина        (a class= "mainlevel")
-грудинка       (a class= "mainlevel")


и вот классу mainlevel  нужно приписать  mainlevel-20  для вареной и копченой и mainlevel-21 для ветчины и грудинки. А у меня для всех прописывается mainlevel-20 если я открыл вареную или копченую и mainlevel-21 если соответственно ветчину или грудинку... Иными словами ВСЕМ подпунктам присваевается id того сепаратора, подменю которого сейчас открыто.

« Последнее редактирование: 01.02.2012, 16:59:43 от Garrison » Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #12 : 01.02.2012, 17:29:55 »

А, так вы имеете ввиду именно пункты меню, а не страницы, соответсвующие им. И для чего вам это нужно? Опишите задачу которую хотите решить
Записан
Garrison
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #13 : 01.02.2012, 17:57:15 »

Все очень просто  меню состоит из четырех сепараторов  каждый сепаратор имеет свой id которому соответствует свой цвет фона.  Цвет текста каждого подменю по замыслу должен соответсвовать цвету фона своего сепаратора.  сепаратор и подменю выводится примерно в вледующем виде:  
<div><h3 class="s5_am_toggler">
<p class="pas21">
<span class="separator">
<span>ГИГИЕНА ПРЕДПРИЯТИЯ</span></span>
</p></h3>

и подменю:

ul class="s5_am_innermenu">
<li class="s5_am_inner_li item27">
<a class="mainlevel69" href="/4/hugien/moduli-gigieniceskie.html">
<span>Модули гигиенические</span></a></li></ul></div>

для сепаратора я смог впихнуть в код модуля строку <p class="pas21">  и прописал в CSS для pas21 цвет фона. А вот для подменю цвет текста прописать не могу ибо сыы игнорирует все упрямо делая цвет таким который соответствует а class... Вот я и пытаюсь приписать mainlevel  id родного сепаратора чтобы потом указать ему цвет текста, и чтобы потом в будущем при добавлении новых подпунктов они сразу имели нужный стиль... Как видите сейчас там 69 что соответствует текущему пункту меню (ваш пример в работе)
« Последнее редактирование: 02.02.2012, 08:29:25 от Garrison » Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Offline Offline

Пол: Мужской
Сообщений: 2978



« Ответ #14 : 01.02.2012, 18:28:37 »

Что то вобще непонятная разметка. Такую разметку дает джумловское меню? Или что? где тут вобще джумловское меню используется? Это будет аккордеон? есть же готовые модули нормальные. Уверен все решается гораздо проще. Дайте ссылку на сайт.
Записан
Garrison
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #15 : 01.02.2012, 21:34:16 »

Да разметку дает джумловский модуль   s5 accordion menu. Адрес сайта ****  Там на сайте два одинаковых левых меню аккордеон. Нижнее меню я сделал сначала но оно к сожалению иногда глючит . Поэтому я решил сделать такое же но на основе модуля  s5 accordion menu А он выдает такую вот разметку.
« Последнее редактирование: 02.02.2012, 21:28:21 от Garrison » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet