Группы пользователей во вкладках

+28
1.93K
Здравствуйте!
Написал дополнение для InstantCMS 1.10.1, позволяющеедобавить вкладку группы пользователей в /users/
Иллюстрация


В файл /components/users/router.php добавляем 2 роутера
  1.  
  2. $routes[] = array(
  3. '_uri' => '/^users\/НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ.html$/i',
  4. 'group_id' => 'ID ГРУППЫ'
  5. );
  6. $routes[] = array(
  7. '_uri' => '/^users\/НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ([0-9]+).html$/i',
  8. 1 => 'page',
  9. 'group_id' => 'ID ГРУППЫ'
  10. );
  11.  
далее в frontend.php ($do = 'view')
  1.  
  2.  
  3. // Возможные входные переменные
  4. $groupid = cmsCore::request('group_id', 'int');////////////////////////это нужно добавить
  5.  
  6. if(!in_array($orderby, array('karma', 'rating'))) { $orderby = 'regdate'; $rera=false;}//$tera=false
  7. if(!in_array($orderto, array('asc', 'desc'))) { $orderto = 'desc'; $rera=false;}/////нужно добавить
  8.  
...
  1.  
  2. ///////////////////////////////////////
  3. //////////Условия выборки//////////////
  4. ///////////////////////////////////////
  5.  
  6. /****************************************/
  7. if($groupid){/////////////////////это
  8. $inDB->where("u.group_id = ".$groupid);/////////////////нужно
  9. $rera=true;///////////////////////////////добавить
  10. }
  11. /****************************************/
  12.  
...

  1.  
  2. $link['НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ'] = '/users/НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ.html';
  3. $link['latest'] = '/users';
  4. $link['positive'] = '/users/positive.html';
  5. $link['rating'] = '/users/rating.html';
  6.  
  7. if($orderby=='regdate') { $link['selected'] = 'latest'; }
  8. if($orderby=='karma') { $link['selected'] = 'positive'; }
  9. if($orderby=='rating') { $link['selected'] = 'rating'; }
  10. if($rera) { $link['selected'] = 'НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ'; }
  11.  
Файл /templates/_default_/components/com_users_view.tpl ~ 62 строка
  1. <div class="button {if $link.selected=='НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ'}selected{/if}"><a rel=”nofollow” href="{$link.НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ}">Назвние вкладки</a></div>
ВСЁ!
+3
Димитриус Димитриус 11 лет назад #
задумка хорошая.
Но ИМХО лучше сделать так:
Код PHP:
  1. '_uri' => '/^users\/gp_([a-z]+).html$/i',
Уменьшаем уровень вложения иунифицируемлинк

Правда сейчас не могу посмотреть если ли метод возвращений ид группы по названию
+1
Димитриус Димитриус 11 лет назад #
ну ли вемсто gp написать gryppa
+1
Daniil Daniil 11 лет назад #
если ли метод возвращений ид группы по названию
Можно сделать.
+1
Daniil Daniil 11 лет назад #
Код PHP:
  1. mysql_result(mysql_query("SELECT id FROM cms_user_groups WHERE alias = '{$alias}'"),0,"id");
+2
Daniil Daniil 11 лет назад #
Код PHP:
  1. $routes[] = array(
  2. '_uri' => '/^users\/gryppa_([a-z]+).html$/i',
  3. 1 => 'gr_alias'
  4. );
далее

Код PHP:
  1. $groupid = mysql_result(mysql_query("SELECT id FROM cms_user_groups WHERE alias = '{cmsCore::request('group_id', 'str')}'"),0,"id");
+3
lokanaft lokanaft 11 лет назад #
Желательно пользоваться стандартными методами для работы с бд.
+1
Daniil Daniil 11 лет назад #
Хорошо. учту...
+1
Azura Azura 11 лет назад #
СПАСИБО! Спасли меня :)))
+2
Димитриус Димитриус 11 лет назад #
От кого?=)
+1
Azura Azura 11 лет назад #
От необходимости тратить деньги на программиста, коим я пока не являюсь. :)))
+3
lokanaft lokanaft 11 лет назад #
Вы так уверены, что "пока" ?
-3
Петр Петр 11 лет назад #
блин не получилось почему то сделать...на странице группы - 404
"НАЗВАНИЕ ГРУППЫ ЛАТИНИЦЕЙ" - это любой набор букв? или нужно туда ставить "псевдоним группы"?
-3
Петр Петр 11 лет назад #
если честно - не совсем понятно что и куда добавлять.
лучше
после "кусок кода" вставить "кусок кода" и т.д.
0
SP SP 11 лет назад #
на 1.10.2 не хочет работать... проверил все, вроде не должно быть ошибки. Подскажите где поправить плиз

Еще от автора

Файлы в формах
Здравствуйте! Сделал небольшой хак для InstantCMS. Хак добавляет в конструктор форм поле файл.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.