Не нравятся результаты поиска? Попробуйте другой поиск!

Выбор группы при регистрации DLE


     11.07.2011    Хаки    8160

вопрос
Расскажте пожалуйста немого о дополнительных полях при регистрации. Меня в частности интересует такая возможность. Можно ли сделать так, чтобы изимать какую небудь функцию из них. Ну допустим имели связь с созданными категориями. К примеру, я создаю дополнительные поля в виде списка (список - 1, 2, 3, 4, 5), списки эти хочу связать с категориями новостей, пользователь при регистрации выбирает №3 из списка и ему на главной (или ещё где) в отдельном блоке высвечиваются новости из категории новостей №3. ? Может тегом кастом, или ещё как подобное реализуется? В общем мне очень интересна возможность дополнительных полей при регистрации. Благодарю.

Ответил: ПафНутиЙ


Предложу вот такой вариант:

При регистрации на DLE-сайте пользователь выбирает группу, а в шаблоне уже используем теги [group= ]

Итак даю инструкцию:

1. открываем: /engine/modules/register.php
Ищем
$tpl->set( '[registration]', "" );
Вставляем выше

$group_select = '';
$allow_group = array(3,4); // Группы доступные при регистрации
foreach ( $allow_group as $id ) {
$group = $user_group[$id];
$group_select .= '<option value="' . $group['id'] . "\">" . $group['group_name'] . "</option>\n";
}
$tpl->set( '{group}', "<select name=\"group\">".$group_select."</select>" );
Ищем (будет найдено 2 вхождения)
rawurlencode( base64_encode( $name . "||" . $email . "||" . md5( $password1 ) . "||" . md5( md5( $name . $email . DBHOST . DBNAME . $config['key'] ) )

Вставляем далее
. "||" . (int)$_POST['group']

Ищем
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );

Меняем на


$allow_group = array(3,4); // Группы доступные при регистрации
$user_arr[4] = intval($user_arr[4]);
if(!in_array($user_arr[4], $allow_group)) $user_arr[4] = 4; // Группа по умолчанию
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $user_arr[4] . "', '', '', '', '', '" . $_IP . "')" );


2. Редактируем шаблон. ./templates/[имя шаблона]/registration.tpl

в нужное место вставляем тег {group} и радуемся жизни.



ВНИМАНИЕ. Способ будет работать только для новых пользователей. Тестировалось на DLE 8.5-9.0 но и на других должно идти.



Ещё можно организовать через допполя в профиле и jQuery, но это с практической точки зрения сложнее.

Комментарии пользователей (24)

XTTP
1 | 1

XTTP - 7 декабря 2011 04:35 - Юзер

ПафНутиЙ

Подскажите пожалуйста как добавить правильно парочку id групп в моем случае чтоб был выбор между id5 и id6 ,мучаюсь уже 4часа весь интернет перерыл ... но к сожалению я ничего не понимаю в пхп :(

nowheremany
192

1659 | 1292

nowheremany - 19 августа 2012 00:51 - Эксперт

подправил
errrrrrrrrrrrrrrrrrrrrrrrrrrr

Благодарность принимаю тут Связь

timurtt
48 | 25

timurtt - 19 ноября 2012 02:38 - Юзер

извиняюсь, но я понял это решение правильно..?

Перед регистрацией пользователь может сам выбрать в какой группе зарегистрироваться, из выпадающего списка и после выбора выводятся те поля что относятся что нужно заполнить для группы... я правильно понял?

интересуюсь потому что нужно как раз такое решение что бы перед регистрацией пользователь сначала выбрал какой группе он относится. к примеру в моем случае это:

-частное лицо
-компания

так будет?

если кто сможет помочь платно напишите...

ПафНутиЙ
1065

3395 | 2434

ПафНутиЙ - 19 ноября 2012 07:48 - Админ

нет, работать не будет, потому что допполя профиля доступны всем группам.
Возможно если написать хак для допполей профиля - будет работать как надо.

Каков вопрос - таков и ответ. Просто помните об этом.

timurtt
48 | 25

timurtt - 19 ноября 2012 21:09 - Юзер

да же если доступно всем тут дело не в полях а как это можно сделать так что бы в несколько шагов в модальном окне и при помощи ajax. что бы все переход в следующий шаг был без перезагрузки.

ПафНутиЙ
1065

3395 | 2434

ПафНутиЙ - 19 ноября 2012 21:39 - Админ

стол заказов или фрилансеры )

Каков вопрос - таков и ответ. Просто помните об этом.

Aleks_Ku
1 | 2

Aleks_Ku - 20 декабря 2012 14:24 - Юзер

Подправил код до рабочей кондиции)) Переменные забыл указать в коде =))


Не правильный код


В итоге код рабочий проверил на DLE 9.7 автору спасибо. Использую для сайта Веб-студии копирайта и рерайта укротова.рф

ПафНутиЙ
1065

3395 | 2434

ПафНутиЙ - 11 апреля 2013 23:34 - Админ

Поправил ответ

Каков вопрос - таков и ответ. Просто помните об этом.

Yurets
35 | 14

Yurets - 27 октября 2013 20:04 - Юзер

DLE 10.0

Ошибка ID not valid!

Yurets
35 | 14

Yurets - 7 ноября 2013 23:03 - Юзер

нашел выход для DLE 10.0

Установка:
1. Открыть engine/modules/register.php и найти:
$path = parse_url( $config['http_home_url'] );

Добавить ниже:
$tpl->set( '{group-select}', "
<select name='user_group'>
<option value='2'>User Group ID 2</option>
<option value='3'>User Group ID 3</option>
<option value='4'>User Group ID 4</option>
</select>
");

Найти еще:
if( intval( $config['reg_group'] ) < 3 ) $config['reg_group'] = 4;

Заменить на:
if( !empty( $_POST['user_group'] ) ) $config['reg_group'] = intval( $_POST['user_group'] );


2. Открыть файл шаблона registration.tpl и в нужном месте добавить:
<tr>
<td class="label">Выберите группу:<span class="impot">*</span></td>
<td>{group-select}</td>
</tr>

Готово!

dim
78 | 17

dim - 3 января 2014 15:06 - Юзер

Yurets, у вас точно работает на DLE 10.0? Тот код, что вы написали нужно использовать вместе или вместо кода от ПафНутиЯ?

dim
78 | 17

dim - 1 января 2014 12:48 - Юзер

Насколько я понял, предложенный вариант в ответе не предназначен для регистрации пользователя в определенной группе, поскольку при выборе группы отличной от "пользователя" зарегистрировавшийся всего равно попадает в группу пользователей. Я верно понимаю?

ПафНутиЙ
1065

3395 | 2434

ПафНутиЙ - 3 января 2014 11:18 - Админ

Нет, хак предназначен именно для регистрации пользователя в определённую группу. Возможно он просто устарел или неправильно установлен (первое более вероятно).

Каков вопрос - таков и ответ. Просто помните об этом.

pogorelov
8

pogorelov - 12 января 2014 10:39 - Юзер

ваш скрипт выдает "ID not valid!". Возможно, я допустил ошибку при вставке . "||" . (int)$_POST['group'] - куда именно нужно его вставить?
Касательно скрипта Yurets: его нужно использовать вместе с вашим или отдельно?

dim
78 | 17

dim - 12 января 2014 12:46 - Юзер

pogorelov, попробуйте отдельно, у меня получилось на DLE 10.0.

aldadis
1

aldadis - 28 февраля 2014 01:04 - Юзер

Кто подскажет как на 10.1 реализовать?
Способы выше не работают, группы выводятся но регистрация производится в группу "Посетители".

Спасибо.

oazet
2

69 | 19

oazet - 4 апреля 2014 10:23 - Юзер

На версии движка 10,2 на втором шаге правки кода (вариант Пафнутия), получится такая вот строка:
rawurlencode( base64_encode( $name . "||" . $email . "||" . md5( $password1 ) . "||" . sha1( $name . $email . $stronghash . $config['key']  ). "||" . (int)$_POST['group'] ) );

Тоесть нужно правильно вставить:
. "||" . (int)$_POST['group']

и всё работает.

_123
2

_123 - 8 мая 2014 23:03 - Юзер

oazet,у меня вообще не работает и ваш код и Пафнутия.Пишит следущее:
Parse error: syntax error, unexpected ']' in /home/u445210128/public_html/engine/modules/register.php on line

_123
2

_123 - 8 мая 2014 23:04 - Юзер

у меня dle 10.2

zikwal
2

35 | 3

zikwal - 12 июня 2015 17:09 - Юзер

_123,
Там же написано, что у ВАС ошибка, А не у Пафнутия.

Если у вас не работает, то именно ВЫ что-то сделали не правильно.

P.S.
DLE 10.4 - Все работает!
(Только можно поставить только 2 группы (3 или 4, почему то не работают, но в описании и написано - 2 группы, так что)

vaniya92
17 | 1

vaniya92 - 7 апреля 2016 09:27 - Юзер

Здравствуйте, подскажите, можно ли сделать, чтобы выбиралось между 3 группами? А то после последнего комментария появились сомнения. И будет ли работать на ДЛЕ 11?

vaniya92
17 | 1

vaniya92 - 14 апреля 2016 22:03 - Юзер

Не хочет работать на DLE 11, кажет ID not valid! при выборе группы отличной от "Посетители"

vaniya92
17 | 1

vaniya92 - 14 апреля 2016 22:38 - Юзер

Хотя нет, все работает, спасибо пользователю oazet за подсказку

19mix91
1

9

19mix91 - 21 сентября 2016 14:17 - Юзер

oazet,
Спасибо за подсказку все заработало ! 11.0

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы