[Решено] Анонимному(не авторизованому) пользователю не видно меню входа и регистрации

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

Аватар пользователя kaname52 kaname52 15 декабря 2013 в 18:43

Из админки видно меню пользователя и лога, а анониму нет. Я же не могу написать на сайте "Вбивайте в адресной строке /user, это смешно. Есть идеи в чём проблема? Кэш чистил, дело не в браузере, все права проставлены.
Под админом

Без лога

Комментарии

Аватар пользователя Caranax Caranax 15 декабря 2013 в 23:09

"kaname52" wrote:
Он и так тем где нужно

Если бы он был там, где нужно этой бы проблемы с отсутствием формы входа у вас не возникло.

Аватар пользователя drupby drupby 10 ноября 2015 в 11:49

смотрите в page.tpl.php как выводятся эти ссылки и в template.php как они создаются
если же это User menu , то оно анониму и не должно быть видно - для входа есть блок авторизации

Аватар пользователя foreach foreach 16 декабря 2013 в 15:50

В одном из предыдущих проектов потребовалось похожее решение, код в самом низу.
Вместо Имя_Темы подставите свое значение.

Вместо значения первого аргумента "user-menu" подставите имя вашего меню, внутри Имя_Темы_tree_m0($menu_name = 'user-menu', $type = '')

Сам вывод можно положить в любое место, так как вызывается функция.
<?php Имя_Темы_user_menu_top($logged_in); ?>

Код для template.tpl.php:

function Имя_Темы_user_menu_top($logged_in) {
  global $user;
  $output = '';
  if (!$logged_in) {
//    $output .= '<li>' . l('Регистрация', 'user/register') . '</li>';
    $output .= '<li>' . l('Вход', 'user') . '</li>';
  }
  else {
    $output .= '<li>' . l('Мой кабинет', 'user/' . $user->uid) . '</li>';
    $output .= '<li>' . l('Выход', 'user/logout') . '</li>';
  }
  return '<ul class="sf-menu">' . Имя_Темы_tree_m0() . $output . '</ul>';
}

function Имя_Темы_tree_m0($menu_name = 'Имя_Вашего_Меню', $type = '') {
  static $menu_output = array();

  if (!isset($menu_output[$menu_name])) {
    $tree = menu_tree_page_data($menu_name);
    $menu_output[$menu_name] = Имя_Темы_tree_output_m0($tree, $type);
  }
  return $menu_output[$menu_name];
}

function Имя_Темы_tree_output_m0($tree, $type) {
  $output = '';
  $items = array();
  foreach ($tree as $data) {
    if (!$data['link']['hidden']) {
      $items[] = $data;
    }
  }
  $num_items = count($items);
  foreach ($items as $i => $data) {
    if ($data['below']) {
      $output .= '<li><a href="' . url($data['link']['href']) . '">' . $data['link']['title'] . '</a><ul>' . Имя_Темы_tree_output_m0($data['below'], $type) . "</ul></li>";
    }
    else {
      $output .= '<li><a href="' . url($data['link']['href']) . '">' . $data['link']['title'] . '</a>' . "</li>";
    }
  }
  return $output ? $output : '';
}

upd: добавил обертку с классом sf-menu для наглядности, у меня в проекте еще и разные уровни меню изменяются

Аватар пользователя drupby drupby 16 декабря 2013 в 11:40

в template.php

function ИМЯТЕМЫ_login(){
  global $user;
   
   
  if ($user->uid != 0) {
    print '<ul class="links inline"><li class="first"><a href="' .url('user/'.$user->uid). '">' .$user->name. '</a></li><li><a href="' .url('user/logout'). '">' .t('Logout'). '</a></li></ul>';
  }
  else {
    print '<ul class="links inline"><li class="first"><a href="' .url('user'). '" rel="nofollow">' .t('Login'). '</a></li><li><a href="' .url('user/register'). '" rel="nofollow">' .t('Register'). '</a></li></ul>';
  }
   
}

в page.tpl.php

<div id="user_links"><?php print ИМЯТЕМЫ_login() ?></div>

Аватар пользователя drupby drupby 16 декабря 2013 в 17:03

"foreach" wrote:
А функцию l() умышленно не используете ?

а ты на theme_item_list тоже умышленно подзабил ? и что же такое все таки m0 ?

Аватар пользователя seobat seobat 17 декабря 2013 в 11:16

Может все таки в браузере? У меня просто была нечто похожее, помогла смена или переустановка старого, уже не помню

Аватар пользователя drupby drupby 17 декабря 2013 в 12:27

"seobat" wrote:
У меня просто была нечто похожее, помогла смена или переустановка старого, уже не помню

можно еще как вариант винду переустановить