Нужна микро-доработка стандартного модуля

#1 10 ноября 2014 в 01:14
Бразы, для v1.10.1 требуется маленькая доработка стандартного модуля "Меню пользователя". Нужно добавить 2 дополнительных пункта в меню с условием по группе пользователей. Решение сделать доп. меню в конструкторе мне не подходит, так как доп. пункты должны быть между пунктами стандартного меню пользователя, поэтому нужна php доработка.

"Пункт 1" — выводится только для группы пользователей X и админов.
"Пункт 2" — выводится только для группы пользователей X, Y и админов.

Это собственно вся задача. Если решение — это пара строчек кода, кидайте в тему, отблагодарю. Если работа больше чем на 5 минут — пишите цену в личку, сделаю предоплату.
#2 10 ноября 2014 в 06:14
В файле \modules\mod_usermenu\module.php примерно в 28 строке после
  1. assign('id', $inUser->id)->
добавить это
  1. assign('group_id', $inUser->group_id)->
чтоб получилось как-то так
  1. assign('id', $inUser->id)->
  2. assign('group_id', $inUser->group_id)->
  3. assign('newmsg', cmsUser::getNewMessages($inUser->id))->
#3 10 ноября 2014 в 06:21
Что-то быстро отправилось))).
Затем в файле \templates\_default_\modules\mod_usermenu.tpl

в нужном месте ставим это
  1.  
  2. {if $group_id == id_группы_X || $is_admin}
  3. <span class="my_class">
  4. <a href="/ссылка_куда_надо">Ссылка куда надо</a>
  5. </span>
  6. {/if}
  7. {if $group_id == id_группы_X || $group_id == id_группы_Y || $is_admin}
  8. <span class="my_class">
  9. <a href="/ссылка_куда_надо_другим">Ссылка куда надо другим</a>
  10. </span>
  11. {/if}
  12.  
#4 10 ноября 2014 в 08:05
Где же вы раньше были, уважаемый Loadырь?) Я эту тему тоже поднимала.
Мне посоветовали создать доп. меню popcorn
#5 10 ноября 2014 в 12:24
Loadырь, спасибо брат! То, что нужно. Все работает. Спрошу в личку как отблагодарить.
#6 10 ноября 2014 в 12:47
для 1.10.3 & 1.10.4 ведь тоже самое да?
#7 10 ноября 2014 в 13:24
Доротея, да
#8 10 ноября 2014 в 18:54


Доротея, да

Loadырь
Отлично)
Можете с этим тоже помочь?
В файле accerdenied (templates/default/special) есть ограничение по группам. И ссылка на приобретение на подписку.
Можно ли с помощью этого:

if ($myprofile): тут пишем что хотели натворить endif;

или
Код PHP:

if ($myprofile){ тут пишем что хотели натворить}
И то что вы посоветовали несколько часами ранее по поводу пуктов для групп, сделать следющее:
Что бы для не зарегистрированных групп был виден отдельный текст (зарегистрируйтесь и.т.д. и.т.п.)
А для тех кто зарегистрирован, но его группа не подходит по тем которые я указала в админке в пункте (доступы) отобразить другой текст. Причём для разных групп свой текст, типа (ваша группа "редакторы @group_id@" пожалуйста поменяйте подписку здесь)
Ну или что то в этом роде popcorn
Буду ооочень благодарна.
#9 11 ноября 2014 в 13:10
UPD
#10 11 ноября 2014 в 13:37
  1.  
  2. <?php
  3.  
  4. switch(cmsUser::getInstance()->group_id){
  5.  
  6. case 1: $message = 'Я пользователь'; break;
  7. case 2: $message = 'Я администратор'; break;
  8. case 8: $message = 'Я гость'; break;
  9. ...........
  10.  
  11. default: $message = 'Группа не определена';
  12. };
  13.  
  14. ?>
  15.  
  16. <table border="0" cellpadding="0" cellspacing="0" >
  17. <tr>
  18. <td width="150" valign="top">
  19. <img src="/templates/<?php echo TEMPLATE; ?>/special/images/accessdenied.png" />
  20. </td>
  21. <td>
  22. <h1 class="con_heading"><?php echo $_LANG['ACCESS_DENIED']; ?></h1>
  23. <p><?php echo $message; ?></p>
  24. </td>
  25. </tr>
  26. </table>
  27.  
#11 11 ноября 2014 в 14:39
default это для незарегистрированных? или 8 для них?
А что тогда такое default?
p.s. спасибо вам большое)
#12 11 ноября 2014 в 14:43
  1.  
  2. <?php
  3.  
  4. $g_id = cmsUser::getInstance()-> group_id;
  5.  
  6. $g_msg = array(
  7. 0 => 'Группа не определена',
  8. 1 => 'Я пользователь',
  9. 2 => 'Я администратор',
  10. 8 => 'Я гость'
  11. );
  12.  
  13. $message = isset( $g_msg[$g_id] ) ? $g_msg[$g_id] : $g_msg[0];
  14.  
  15. ?>
  16.  
#13 11 ноября 2014 в 14:56
Чуть более понятнее бы)
1 => 'Я пользователь', — это для группы id №1
А что это: $message = isset( $g_id )? $g_msg[$g_id]: $g_msg[0];
#14 11 ноября 2014 в 15:02
Да, всё правильно.
Цифры в индексе массива — номера (id) групп.

А что это: $message = isset( $g_id )? $g_msg[$g_id]: $g_msg[0];

Доротея

— Если группа не определена установит значение $g_msg[0], которое мы задали как: «Группа не определена», ранее по коду, в массиве.
#15 11 ноября 2014 в 15:14
Вот теперь огромное спасибо) popcorn
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.