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

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Как обернуть каждую ссылку меню в 4 div  (Прочитано 3310 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
HarD
Осваиваюсь на форуме
***

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

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


« : 03.12.2010, 11:36:27 »

Как обернуть ссылки (item) меню в 4 div, за исключением заголовка (parent item) при стандартном выводе меню в Joomla 1.5 в виде списка.

Нужно вывести оформление ссылки при hover в виде блока с закруглениями.
Понимаю что можно было бы сделать по средством boreder radius, moz.., khtml..., но ie7,8 Sad

Понимаю, что нужно изменить файлик \temlates\<шаблон>\html\mod_mainmenu\default.php
Но вот как, помогите пожалуйста, заранее спасибо за любую помощь.
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #1 : 03.12.2010, 11:44:38 »

не надо 4. хватит двух
мне надо было для верхнего меню такую фигню сделать, тупо вязл из артистеровского шаблона mod_mainmenu и пофиксил
« Последнее редактирование: 03.12.2010, 11:51:15 от effrit » Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #2 : 03.12.2010, 13:39:31 »

не надо 4. хватит двух
мне надо было для верхнего меню такую фигню сделать, тупо вязл из артистеровского шаблона mod_mainmenu и пофиксил


Спасибо а есть ссылка на него или можешь ли из него выложить архив с mod_mainmenu, буду очень благодарен, спасибо.
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #3 : 03.12.2010, 13:55:54 »

в аттаче
default.php кидаем в папку ШАБЛОНА
\html\mod_mainmenu\
картинки в папку с картинками шаба
пример CSS для верхнего меню.

ещё можно хакнуть helper меню.
это проще, но не очень изящно )

[вложение удалено Администратором]
Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #4 : 03.12.2010, 14:21:20 »

Попробовал, пока не помогло:

<div class="menu4" id="menu4">
       <div id="menu4_1" class="div_up_hidden" onmouseover="SetVisible(this,true)" onmouseout="SetVisible(this,false)">   
      <div class="cn tr"></div>
      <div class="content">
            <div class="moduletable">
               <ul class="menu"><li class="parent item2"><a href="#"><span>Новость</span></a>
               <ul>
               <li class="item11"><a href="#"><span>Новости очень длинные новости</span></a></li>
               <li class="item12"><a href="#"><span>Новости</span></a></li>
               <li class="item13"><a href="#"><span>Новости</span></a></li>
               <li class="item14"><a href="#"><span>Новости</span></a></li></ul></li>
               </ul>
            </div>
      </div>
      <div class="cn bl"></div>
      <div class="cn br"></div>
      </div>
</div>

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

Т.е. по сути нужно обернуть ссылки в дивы

<li class="item11"><a href="#"><span>Новости очень длинные новости</span></a></li>
для скругления
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #5 : 03.12.2010, 14:29:08 »

а меню у тебя какое?
там для горизантального
Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #6 : 03.12.2010, 14:30:17 »

Убрал пару верхних строчек вверху в файлике default.php вроде начал подхватываться но все равно вывод странный:

<div class="menu4" id="menu4">
       <div id="menu4_1" class="div_up_hidden" onmouseover="SetVisible(this,true)" onmouseout="SetVisible(this,false)">   
      <div class="cn tr"></div>
      <div class="content">
            <div class="moduletable">
               <ul class="menu">
               <li access="0" level="1" id="2"><a href="#"><span>Новости</span></a>
               <ul>
               <li access="0" level="2" id="11"><a href="#"><span>Новости очень длинные новости</span></a></li>
               <li access="0" level="2" id="12"><a href="#"><span>Новости</span></a></li>
               <li access="0" level="2" id="13"><a href="#"><span>Новости</span></a></li>
               <li access="0" level="2" id="14"><a href="#"><span>Новости</span></a></li>
               </ul>
               </li>
               </ul>
            </div>
      </div>
      <div class="cn bl"></div>
      <div class="cn br"></div>
           </div>
</div>
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #7 : 03.12.2010, 14:35:56 »

короче хакай
\www\modules\mod_mainmenu\helper.php
так проще и быстрее

ищешь по файлу "href" - места, где формируется вывод ссылок, правишь код, смотришь страницу
Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #8 : 03.12.2010, 14:36:05 »

а меню у тебя какое?
там для горизантального

Вертикальное в виде списка:

т.е. в месте для модуля выводится, при наведении на блок (сначала он как бы прозрачен, при наведении появляется, скриптом):

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

Понимаю что лишний геморой но это все великий IE Azn), так бы css3 обошелся, с ним все отлично.

Новости
  Новости очень
  длинные новости
  Новости
  Новости
  Новости
Записан
Виталик
Группа развития
*****

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

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



« Ответ #9 : 03.12.2010, 15:04:57 »

можно без обойтись хаков,
в шаблоне меню там где вывод готового хтмл - включить буферизацию вывода, записать html-код меню в переменную и сделать замену
str_replace("<a""<div><div><div><div><a"$menu_html);
str_replace("</a>""</a></div></div></div></div>"$menu_html);
Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #10 : 03.12.2010, 15:07:18 »

можно без обойтись хаков,
в шаблоне меню там где вывод готового хтмл - включить буферизацию вывода, записать html-код меню в переменную и сделать замену
str_replace("<a""<div><div><div><div><a"$menu_html);
str_replace("</a>""</a></div></div></div></div>"$menu_html);

Можно об этом поподробнее?
Записан
Виталик
Группа развития
*****

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

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



« Ответ #11 : 03.12.2010, 15:14:26 »

в default.php в папке ШАБЛОНА
\html\mod_mainmenu\

замените код файла этим

Код
<?php
 
// no direct access
defined('_JEXEC') or die('Restricted access');
 
 
if ( ! defined('modMainMenuXMLCallbackDefined') )
{
function modMainMenuXMLCallback(&$node, $args)
{
$user = &JFactory::getUser();
$menu = &JSite::getMenu();
$active = $menu->getActive();
$path = isset($active)? array_reverse($active->tree) : null;
 
if (($args['end']) && ($node->attributes('level') >= $args['end']))
{
$children = $node->children();
foreach ($node->children() as $child)
{
if ($child->name() == 'ul') {
$node->removeChild($child);
}
}
}
 
if ($node->name() == 'ul') {
foreach ($node->children() as $child)
{
if ($child->attributes('access') > $user->get('aid', 0)) {
$node->removeChild($child);
}
}
}
 
if (($node->name() == 'li') && isset($node->ul)) {
$node->addAttribute('class', 'parent');
}
 
if (isset($path) && (in_array($node->attributes('id'), $path) || in_array($node->attributes('rel'), $path)))
{
if ($node->attributes('class')) {
$node->addAttribute('class', $node->attributes('class').' active');
} else {
$node->addAttribute('class', 'active');
}
}
else
{
if (isset($args['children']) && !$args['children'])
{
$children = $node->children();
foreach ($node->children() as $child)
{
if ($child->name() == 'ul') {
$node->removeChild($child);
}
}
}
}
 
if (($node->name() == 'li') && ($id = $node->attributes('id'))) {
if ($node->attributes('class')) {
$node->addAttribute('class', $node->attributes('class').' item'.$id);
} else {
$node->addAttribute('class', 'item'.$id);
}
}
 
if (isset($path) && $node->attributes('id') == $path[0]) {
$node->addAttribute('id', 'current');
} else {
$node->removeAttribute('id');
}
$node->removeAttribute('rel');
$node->removeAttribute('level');
$node->removeAttribute('access');
}
define('modMainMenuXMLCallbackDefined', true);
}
ob_start();
modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
$menu_html = ob_get_contents();
ob_end_clean();
$menu_html = str_replace("<a", "<div><div><div><div><a", $menu_html);
$menu_html = str_replace("</a>", "</a></div></div></div></div>", $menu_html);
echo $menu_html;
 

Записан
HarD
Осваиваюсь на форуме
***

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

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


« Ответ #12 : 03.12.2010, 15:33:24 »

в default.php в папке ШАБЛОНА
....

Спасибо большое
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #13 : 03.12.2010, 15:46:08 »

о. красота
тему в закладки, Виталик - спасибо )
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #14 : 03.12.2010, 15:48:32 »

ух, как интересно!  : )

мне кажется, не в закладки а в FAQ
Записан
ankoch
Завсегдатай
*****

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

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



« Ответ #15 : 14.12.2010, 11:42:30 »

Воспользовался, отличный способ, только я не дивами обернул, а спаны добавил внутрь <a>, чтобы менять фон при наведении. Виталик спасибо, +1
Записан
lamrak
Захожу иногда
**

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

Сообщений: 10


« Ответ #16 : 31.01.2011, 14:55:33 »

Спасибо, и я воспользовался.
Записан
v3rsus
Захожу иногда
**

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

Сообщений: 17


« Ответ #17 : 01.02.2011, 02:25:33 »

Классная идея, спасибо. +1
Записан
chakivetal
Осваиваюсь на форуме
***

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

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


Самомученик


« Ответ #18 : 15.08.2011, 19:53:33 »

ankoch, а можно взглянут на кусочек CSS со span-ами? На div-ах горизонтальное сделал, а вертикальное естественно разъехалось по высоте, div заменил на span - горизонтальное ушло в минус ... Короче беда!

ПОБЕДИЛ! )) Как удалить пост не пойму... Всем огромное СПАСИБО! Плюсик полетел.
« Последнее редактирование: 16.08.2011, 20:53:16 от chakivetal » Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #19 : 17.08.2011, 14:56:03 »

ну вы, блин, даете....

display:block и display:inline ваще никто не отменял...
Записан
Страниц: [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