0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 2470 Просмотров
*

boreus

  • Захожу иногда
  • 51
  • 7 / 0
В Joomla 1.5 это можно было решить внесением хака в файл:

\modules\mod_mainmenu\tmpl\default.php

такого содержания:
Код
	if ($node->name() == 'ul') {
foreach ($node->children() as $child)
{
if ($child->attributes('access') > $user->get('aid', 0)) {
$node->removeChild($child);
}
}
    $children_count = count($node->children());
    $children_index = 0;
    foreach ($node->children() as $child) {
        if ($children_index == 0) {
            $child->addAttribute('class', 'first');
        }
...
...
и т.д.

Вопрос: какой файл править в  Joomla 2.5?
« Последнее редактирование: 26.02.2013, 11:45:02 от boreus »
*

Lentochka

  • Осваиваюсь на форуме
  • 43
  • 7 / 0
А разве нельзя стиль задать через панель управления
Параметры отображения ссылки->CSS-класс ссылки?
*

boreus

  • Захожу иногда
  • 51
  • 7 / 0
Нет. Речь идет об универсальном решении. Чтобы пункты меню можно было удалять, заменять между собой, а оформление бы оставалось неизменным без лишних движений.
То о чем говорите вы в данном случае не подходит, поскольку так классы задаются каждому пункту уникальные.
*

Lentochka

  • Осваиваюсь на форуме
  • 43
  • 7 / 0
Аа, понятно. Ну тогда дерзайте  ^-^
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Вопрос: какой файл править в  Joomla 2.5?
Правьте файл \templates\ваш шаблон\html\mod_menu\default.php .
Как то так :
Код
...

$last_child = count($list)-1 ;
foreach ($list as $i => &$item) :
$class = 'item-'.$item->id;
if($i == 0){
$class .= ' first';
}
if($i == $last_child){
$class .= ' last';
}
if ($item->id == $active_id) {
$class .= ' current';
}

...
Ответы на вопросы по CSS . Откройте для себя Firebug
*

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
перед
Код
foreach ($list as $i => &$item) :
$class = 'item-'.$item->id;
вставляем
Код
$counter = count($list);
$cc = 0;
после
Код
if($counter == 1)             
{                                 
$cc = -1;
}

if($cc == 0) {                   
$class .= ' first';
}
if($cc == $counter - 1) {     
$class .= ' last';
}
и перед
Код
endforeach;
добавляем
Код
$cc++;
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Неужели так сложно прописать этот класс при создании/редактировании пункта меню?
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Нет. Речь идет об универсальном решении. Чтобы пункты меню можно было удалять, заменять между собой, а оформление бы оставалось неизменным без лишних движений.
То о чем говорите вы в данном случае не подходит, поскольку так классы задаются каждому пункту уникальные.
Вы видимо не поняли, с админки можно пунктам меню добавлять классы. И кстати классов можно добавить несколько. То есть для первого пункта пишем first uniclass к примеру
*

Efanych

  • Глобальный модератор
  • 4687
  • 644 / 0
  • Меняю свою жизнь на 360°!
Неужели так сложно прописать этот класс при создании/редактировании пункта меню?
Причём тут сложно? Заказчик потом добавит ещё один пункт и пипец...
Создание сайтов, шаблонов, помощь в решении проблем.
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Объяснить заказчику тоже не считаю проблемой
*

boreus

  • Захожу иногда
  • 51
  • 7 / 0
Неужели так сложно прописать этот класс при создании/редактировании пункта меню?
Это как раз легче всего, но это ни разу не решение.
Вы видимо не поняли, с админки можно пунктам меню добавлять классы. И кстати классов можно добавить несколько. То есть для первого пункта пишем first uniclass к примеру
Нет это вы видимо не поняли. Задача как раз в том чтобы не совершать никаких лишних действий через админку в будущем.



Товарищи, очень много лишних слов не по делу. Я бы не создавал этой темы, если бы не перебрал эти элементарные варианты.
« Последнее редактирование: 26.02.2013, 11:10:31 от boreus »
*

boreus

  • Захожу иногда
  • 51
  • 7 / 0
dynamit и midav, большое спасибо за подсказку! Сегодня попробую.
*

Efanych

  • Глобальный модератор
  • 4687
  • 644 / 0
  • Меняю свою жизнь на 360°!
Объяснить заказчику тоже не считаю проблемой
Не считаю это предметом для спора, но всё же...
Для вас не проблема, а для заказчика? И это, конечно, единственный момент будет который нужн обьяснять...
Почему тогда не научить на PHP странички делать и нафиг та Joomla? :)
Создание сайтов, шаблонов, помощь в решении проблем.
*

boreus

  • Захожу иногда
  • 51
  • 7 / 0
Итак. Взял решение от midav и дополнил его своими строчками. Теперь мало того, что добавляются классы 'first' и 'last' к первому и последнему пункту, но и нумеруются все промежуточные пункты. Просто по порядку, начиная со второго. Вот:

Код
$last_child = count($list)-1 ;
foreach ($list as $i => &$item) :
$class = 'item-'.$item->id;
if($i == 0){
$class .= ' first';
}
elseif($i == $last_child){
$class .= ' last';
}
else {
$class .= ' punkt_nomer_'.($i + 1);
}
if ($item->id == $active_id)
{
$class .= ' current';
}
...
...

Очень удобно для оформления сложного дизайна меню. Если нужно кому - берите.
*

intcorp

  • Захожу иногда
  • 448
  • 12 / 0
Работает, но в многоуровневом меню last присваивается последнему пункту подменю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] title материалов и категорий без пунктов меню

Автор pharaoh

Ответов: 269
Просмотров: 54560
Последний ответ 03.02.2022, 02:45:26
от globus812
Как добавить описание к пункту меню в Joomla 2.5? (Как у материалов)?

Автор nia

Ответов: 7
Просмотров: 4743
Последний ответ 29.03.2021, 12:10:26
от sivers
В моб версии не откриваються норм меню

Автор umsbeauty

Ответов: 0
Просмотров: 878
Последний ответ 11.01.2021, 17:55:15
от umsbeauty
Убрать название пункта меню из URL материала

Автор fortuner

Ответов: 15
Просмотров: 7558
Последний ответ 31.10.2020, 00:46:04
от spas
Как убрать < class="moduletable ">на лицевой части сайта?

Автор indes

Ответов: 11
Просмотров: 3255
Последний ответ 07.05.2020, 17:35:38
от beliyadm