Создание меню пользователя в виде отдельного блока

Прислано: Siegfrid@drupal.org

чт, 11/03/2010 - 08:21

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

Заранее благодарен!

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано stenli21 в чт, 11/03/2010 - 10:17.

1. в файле page.tpl.php вашей темы, к выводу $tabs добавляете условие if (arg(0) != 'user') для скрытия табов на страницах начинающихся на user - т.е. страницах пользователя.

2. Создаете новый блок, включаете формат ввода php и пишем примерно следующее:

<?php
global $user;
if (
$user->uid>&& 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;
}
?>

Ну вот как-то так, вариации по ссылкам и условиям могут быть различными, но общий метод такой..


Опубликовано Siegfrid@drupal.org в чт, 11/03/2010 - 10:20.

Не очень красивое решение. Хотелось бы, чтобы больше автоматики было, а то каждый раз да ручками править...

В целом все то же самое можно реализовать и модулем, вопрос в том, есть ли готовое решение или надо писать с нуля?


Опубликовано stenli21 в чт, 11/03/2010 - 10:49.

это решение наиболее простое и наименее затратное. Любой модуль - это доп.нагрузка на сервер, здесь же все быстро, просто и понятно даже начинающему сайтостроителю, а если Вам нужен модуль, то проблем нет - 2 дня работы и он будет, только не за бесплатно конечно...


Опубликовано Siegfrid@drupal.org в чт, 11/03/2010 - 11:13.

stenli21 написал(а):

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

А вот тут не соглашусь! Если не выводить переменную на экран, это не означает, что не будут тратиться ресурсы на ее создание. Что на счет написание модуля, это меня не пугает, больше напрягает то, что придется тратить на это время, его не так уж и много... Ну а заказывать разработку на стороно - для меня это пока что не вариант, я еще бы подумал над javascropt, но не для для php/sql!


Опубликовано stenli21 в чт, 11/03/2010 - 11:18.

Ну так, как говориться, флаг Вам в руки и т.д. и т.п.... В общем - удачи...


Опубликовано kosilko в чт, 11/03/2010 - 11:52.

создаете блок с кодом:

$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;

"Siegfrid@drupal.org" написал(а):

Если не выводить переменную на экран, это не означает, что не будут тратиться ресурсы на ее создание.

в случае с menu_local_tasks в недрах ядра используется static кэш, ресуры особо не пострадают, можете не беспокоиться.


Опубликовано Siegfrid@drupal.org в чт, 11/03/2010 - 13:35.

2kosilko: Это решение мне нравится больше, чем просто менять ручками html. Спасибо за подсказку! Надо будет покумекать над задачей.


Опубликовано edhel в чт, 11/03/2010 - 14:40.

фактически тему надо поменять - выводить табсы в другом месте и в другом виде


Опубликовано Bezonich в чт, 02/09/2010 - 11:58.

буду рад, если кому то пригодится) блок пользователя с регистрацией, авторизацией и аватаркой.
пример исползования.


Новое на сайте