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

Главные вкладки

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 11 марта 2010 в 11:21

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

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

Комментарии

Аватар пользователя stenli21 stenli21 11 марта 2010 в 13: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 Siegfrid@drupal.org 11 марта 2010 в 13:20

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

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

Аватар пользователя stenli21 stenli21 11 марта 2010 в 13:49

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

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 11 марта 2010 в 14:13

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

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

Аватар пользователя kosilko kosilko 11 марта 2010 в 14: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;

"<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a>" wrote:
Если не выводить переменную на экран, это не означает, что не будут тратиться ресурсы на ее создание.

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