Создание меню пользователя в виде отдельного блока
Прислано: Siegfrid@drupal.org
чт, 11/03/2010 - 08:21
Может кто подскажет, есть ли такой модуль, который позволяет создавать меню пользователя в виде отдельного блока. При большом меню пользователя базовый вывод в виде кнопок (tabs) не очень удобен.
Заранее благодарен!
- Siegfrid@drupal.org's blog
- Для комментирования войдите или зарегистрируйтесь
1. в файле page.tpl.php вашей темы, к выводу $tabs добавляете условие if (arg(0) != 'user') для скрытия табов на страницах начинающихся на user - т.е. страницах пользователя.
2. Создаете новый блок, включаете формат ввода php и пишем примерно следующее:
<?php
global $user;
if ($user->uid>0 && is_numeric(arg(1)) && arg(1) == $user->uid){
$output = '<ul class="menu">';'
$output .= <li><a href = "/user/'.$user->uid.'/edit" title="Редактировать">Редактировать</a></li>';
$output .= '<li><a href = "/user/'.$user->uid.'/openid" title="OpenID">OpenID</a></li>';
$output .= '<li><a href = "/user/'.$user->uid.'/track" title="Материалы пользователя">Материалы пользователя</a></li>';
$output .= '</ul>';
print $output;
}
?>Ну вот как-то так, вариации по ссылкам и условиям могут быть различными, но общий метод такой..
- Для комментирования войдите или зарегистрируйтесь
Не очень красивое решение. Хотелось бы, чтобы больше автоматики было, а то каждый раз да ручками править...
В целом все то же самое можно реализовать и модулем, вопрос в том, есть ли готовое решение или надо писать с нуля?
- Для комментирования войдите или зарегистрируйтесь
это решение наиболее простое и наименее затратное. Любой модуль - это доп.нагрузка на сервер, здесь же все быстро, просто и понятно даже начинающему сайтостроителю, а если Вам нужен модуль, то проблем нет - 2 дня работы и он будет, только не за бесплатно конечно...
- Для комментирования войдите или зарегистрируйтесь
это решение наиболее простое и наименее затратное. Любой модуль - это доп.нагрузка на сервер, здесь же все быстро, просто и понятно даже начинающему сайтостроителю
А вот тут не соглашусь! Если не выводить переменную на экран, это не означает, что не будут тратиться ресурсы на ее создание. Что на счет написание модуля, это меня не пугает, больше напрягает то, что придется тратить на это время, его не так уж и много... Ну а заказывать разработку на стороно - для меня это пока что не вариант, я еще бы подумал над javascropt, но не для для php/sql!
- Для комментирования войдите или зарегистрируйтесь
Ну так, как говориться, флаг Вам в руки и т.д. и т.п.... В общем - удачи...
- Для комментирования войдите или зарегистрируйтесь
создаете блок с кодом:
$output = ''; if ($primary = menu_primary_local_tasks()) { $output .= "<ul class=\"tabs primary\">\n". $primary ."</ul>\n"; } if ($secondary = menu_secondary_local_tasks()) { $output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n"; } return $output;
этот код из ядра. Модифицируйте на свой вкус. Например "tabs primary" и "tabs secondary" в данном коде заменяете своими классами, можно стандартным "menu", можно попробовать вложить одно в другое;
в шаблоне темы естественно убиваете $tabs;
Если не выводить переменную на экран, это не означает, что не будут тратиться ресурсы на ее создание.
в случае с menu_local_tasks в недрах ядра используется static кэш, ресуры особо не пострадают, можете не беспокоиться.
- Для комментирования войдите или зарегистрируйтесь
2kosilko: Это решение мне нравится больше, чем просто менять ручками html. Спасибо за подсказку! Надо будет покумекать над задачей.
- Для комментирования войдите или зарегистрируйтесь
фактически тему надо поменять - выводить табсы в другом месте и в другом виде
- Для комментирования войдите или зарегистрируйтесь
буду рад, если кому то пригодится) блок пользователя с регистрацией, авторизацией и аватаркой.
пример исползования.
- Для комментирования войдите или зарегистрируйтесь



Комментарии