(1.10.6): Переключение меню пользователя

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Изменение вывода блока в зависимости от аутентификации

#1 11 августа 2015 в 13:40
Добрый день, пытаюсь разобраться с новой для меня InstantCMS, и периодически созревают вопросы. Столкнулся с такой проблемой: делаю выпадающее меню которое, в зависимости от пользователя, либо выводит меню пользователя, либо предлагает зарегистрироваться или войти.

Я подключаю чуть поправленную копию файла mod_menu.tpl из _default_ которая выглядит вот так:

  1. <li class="dropdown">
  2. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
  3. Моё меню <span class="caret"></span>
  4. </a>
  5.  
  6. <ul id="{$menu}" class="dropdown-menu">
  7. {foreach key=key item=item from=$items}
  8. {if $item.NSLevel == $last_level}</li>{/if}
  9. {math equation="x - y" x=$last_level y=$item.NSLevel assign="tail"}
  10. {section name=foo start=0 loop=$tail step=1}
  11. </li></ul></li>
  12. {/section}
  13. {if $item.NSLevel > 1 && $item.NSLevel > $last_level}<ul>{/if}
  14.  
  15. <li class="{$item.css_class} {if ($menuid==$item.id || $current_uri == $item.link) || ($currentmenu.NSLeft > $item.NSLeft && $currentmenu.NSRight < $item.NSRight)}selected{/if}">
  16. <a href="{$item.link}" target="{$item.target}" {if ($menuid==$item.id || $current_uri == $item.link)}class="selected"{/if} title="{$item.title|escape:'html'}">
  17. <span>
  18. {if $item.iconurl}<img src="/images/menuicons/{$item.iconurl}" alt="{$item.title|escape:'html'}" />{/if}
  19. {$item.title}
  20. </span>
  21. </a>
  22. {assign var="last_level" value=$item.NSLevel}
  23. {/foreach}
  24.  
  25. {section name=foo start=0 loop=$last_level step=1}
  26. </li>
  27. {/section}
  28.  
  29. </ul>
  30. </li>
Но при этом оно выводит меню пользователя вне зависимости от того, вошёл юзер, или нет. Как менять содержимое меню в зависимости от того, вошёл пользователь, или нет? Файла mod_usermenu.tpl, где было что-то подобное в этой версии ICMS я не нашёл. :(
#2 11 августа 2015 в 14:23
В 1.10.6 в шаблон меню передается переменная {$user_id} которая равна идентификатору пользователя или 0
#3 11 августа 2015 в 14:25
Отлично, то есть я могу сделать просто проверку вида, так?

  1. {if $user_id != 0}меню залогиненного пользователя{else}регистрация/фигация{/if}
#4 11 августа 2015 в 14:26
И второй вопрос: каким образом теперь дёрнуть аватар пользователя? Делаю смартёвский {debug} но в упор не вижу, как он зовётся.
#5 11 августа 2015 в 14:48
  1. {if $user_id}меню пользователя{else}регистрация{/if}
debug выводит всего лишь список доступных на странице переменных, если аватар никуда не передается, то ни в упор ни в другое место вы его не увидите.
Использовать вставки типа {user.imageurl} без бубна не сможете, остается передать его в шаблон из module.php
#6 11 августа 2015 в 14:52
Спасибо, я предполагал, что надо где-то передать это дело, но пока не разобрался ещё, где и куда вставить $smarty->assign. Стукнулся вам в скайп, с вашего позволения.
#7 11 августа 2015 в 15:28
Всё, спасибо. Если кому-то будет полезно, то, чтобы в 10.1.6 вывести аватар/аватары нужно добавить в modules/mod_menu/module.php
  1. assign('avatar', $inUser->imageurl)->
  2. assign('avatar_big', $inUser->orig_imageurl)->
После чего можно спокойно использовать их в меню. Спасибо Pasha!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.