Выбор группы. Хак.

 
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Встречал на форуме вопросы на данную тему и решил попробовать сделать. Получилось, возможно не очень красиво, но всё работает. Проверял на чистой 1.10.4. В редактирование профиля добавляется поле со списком групп ( задаются в админке ) из которых юзер может выбрать для себя нужную.
1.Добавляем в базу поле
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `groop` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `city` ;
2.файл /components/users/frontend.php
2.1 в начало ( например после $model = new cms_model_users();) пишем
Код PHP:
  1. $cfg = $inCore->loadComponentConfig('users');
2.2 в if ($do == 'view'){...
в // Возможные входные переменные
добавляем
Код PHP:
  1. $groop = cmsCore::request('groop', 'str');
2.3 /**Редактирование профиля **/
if ($do=='editprofile'){...
if ($opt == 'edit'){...
перед
Код PHP:
  1. cmsPage::initTemplate('components', 'com_users_edit_profile')->
пишем
Код PHP:
  1. $groop = cmsCore::request('groop','str');
  2. if($cfg['group_access']){
  3. $group_access = $cfg['group_access'] = implode(",", $cfg['group_access']);
  4. $groops = $inDB->get_table('cms_user_groups','id IN('.$group_access.')','*');
  5. }
  6. else
  7. {
  8. $groops = cmsUser::getGroups();
  9. }
в
Код PHP:
  1. cmsPage::initTemplate('components', 'com_users_edit_profile')->
дописываем
Код PHP:
  1. assign('groops', $groops)->
2.4 // Если сохраняем профиль
в if ($opt == 'save'){...
Код PHP:
  1. $profiles['groop'] = cmsCore::request('groop', 'str');
перед
Код PHP:
  1. $inDB->update('cms_user_profiles', cmsCore::callEvent('UPDATE_USER_PROFILES', array_merge(array('id'=>$usr['pid'], 'user_id'=>$usr['id']), $profiles)), $usr['pid']);
Код PHP:
  1. $usr['grp'] = $profiles['groop'];
  2. $groops_id = $inUser-> getGroupId($usr['grp']);
  3. $usr['group_id'] = $groops_id;
  4. $users['group_id'] = $usr['group_id'];
3. файл /templates/components/com_users_edit_profile.tpl
вставляем в первую форму
Код PHP:
  1. <tr>
  2. <td valign="top"> <strong>Выберете группу:</strong>
  3. </td>
  4. <td valign="top">
  5. <select name="groop" >
  6. {foreach key=id item=grup from=$groops}
  7. <option value="{$grup.title}"{if $grup.title==$usr.groop} selected {/if}> {$grup.title}</option>
  8. {/foreach}
  9. </select>
  10. </td>
  11. </tr>
4. файл /admin/components/users/backend.php
4.1 после
$model = new cms_model_users();
пишем
$cfg = $model->config;
4.1 в if ($opt=='saveconfig'){...
Код PHP:
  1. $is_access = cmsCore::request('is_access', 'int', '');
  2. if (!$is_access){
  3. $cfg['group_access'] = cmsCore::request('allow_group', 'array_int', '');
  4. } else { $cfg['group_access'] = ''; }
4.2 в <div id="basic">
Спойлер
5.в /core/classes/user.class.php
добавляем
Код PHP:
  1. public static function getGroupId($user_id){
  2.  
  3. return cmsDatabase::getInstance()->get_field('cms_user_groups', "title='{$user_id}'", 'id');
  4.  
  5. }
6. файл /components/users/model.php
6.1 в $cfg = array(
пишем
'group_access' => '',
6.2 в public function getUser($login){
добавляем

p.groop as groop,

Всё.
Кому лень писать здесь архив с файлами на замену.
Редактировалось: 3 раз (Последний: 26 марта 2015 в 21:29)
Посетитель
small user social cms
Медаль
Сообщений: 427
Lora, отлично работает) Только логин и пасс рекомендовал бы спрятать в хайд joke Хотя, дело Ваше)
от 16% в месяц на автопилоте
Недорогой и надежный хостинг Промокод 20% скидка - 841de7-20
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 446
Мега круто! Скорее всего и для 1.10.3 подойдет, но стоит проверить, а лучше обновиться, но... боюсь(
Просто так...
Посетитель
small user social cms
Медаль
Сообщений: 702
уже был хак, и он работал на 1.10.3 http://instantcms.ru/blogs/angliiskaja-versija-instantcms/vybor-grupy-pri-registraci-pokaz-kontenta-v-profile-dlja-opredelenoi-grupy-vyvod-opredelenyh-danyh-v-profile-dlja-raznyh-grup.html
Редактировалось: 1 раз (Последний: 23 июня 2014 в 12:06)
Посетитель
small user social cms
Медаль
Сообщений: 427
trOid, здесь настройка из админки и после регистрации, немного другое решение)
от 16% в месяц на автопилоте
Недорогой и надежный хостинг Промокод 20% скидка - 841de7-20
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
trOid:
уже был хак, и он работал на 1.10.3
Хороший хак, грамотный, но вроде с моим нет ничего общего, а если и кто то видет, тоже хорошо, есть вариант выбрать.Не стал делать выбор при регистрации, так как не вижу смысла, если есть выбор в профиле.

PolarOne:
Скорее всего и для 1.10.3 подойдет
Скорее всего, да.

PolarOne:
а лучше обновиться, но... боюсь
А насчёт обновиться, я патчем обновился, проблем не было.
Редактировалось: 1 раз (Последний: 25 июня 2014 в 21:53)
Посетитель
small user social cms
Медаль
Сообщений: 446
Lora, вот жеж спасибо! Я что-то про патч забыл и думал как бы узнать все измененные файлы.
Просто так...
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.