Forums / National / Russian / Идеи / Настройка регистрации с выбором группы пользователя

webitproff
#1 2023-04-21 10:00

Как это выглядит? - демонстрация.

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

По-умолчанию при установке плагина Usergroupselector создается две дополнительные группы: фрилансеры и работодатели. Чтобы установить эти группы основными нужно в настройках этого плагина выбрать их в выпадающем списке.

Также в этом плагине можно настроить правила как должен работать выбор группы. Например, первый параметр отвечает на возможность изменять группу через профиль пользователя. Если включена эта опция, то пользователь в любой момент сможет сменить свою группу через настройки своего профиля. Второй параметр отвечает за обязательность выбора группы. Он требуется когда например на вашем сайте необходимо обязательно разделить пользователей на группы. На некоторых сайтах нет необходимости в таком разделении, именно поэтому мы сделали такую опцию для настройки.

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

 

Теперь, что касается шаблона регистрации пользователей. Этот шаблон называется users.register.tpl, он расположен в папке вашей темы, например themes/Мой-Скин/modules/users.register.tpl

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

1. Как сделать выбор группы через выпадающий список (select)

Для этого нужно просто заменить тэг {USERS_REGISTER_GROUPSELECT}  на тэг {USERS_REGISTER_GROUPSELECTBOX}

 

 

2. Как сделать отдельные страницы регистрации для разных групп пользователей

В этом случае нужно выполнить немного сложные действия. Но если вас это не пугает, то let`s go!

1.  Для начала нужно изменить главную страницу регистрации, чтобы на ней выводились ссылки на формы регистрации выбранных групп. Для этого мы изменим код шаблона users.register.tpl:

<!-- BEGIN: MAIN -->

    <div class="breadcrumb">{USERS_REGISTER_TITLE}</div>
    <div class="well" style="padding-left: 50px;">
        <div class="input-prepend input-append">
            <div class="btn-group">
                <!-- BEGIN: USERGROUP_ROW -->
                <a href="{USERGROUP_ROW_ALIAS|cot_url('users', 'm=register&usergroup='$this)}" class="btn btn-large span5<!-- IF {USERGROUP_ROW_ACTIVEID} --> active<!-- ENDIF -->">{USERGROUP_ROW_TITLE}</a>
                <!-- END: USERGROUP_ROW -->
            </div>
        </div>
    </div>

<!-- END: MAIN -->

Из этого кода видно, что цикл USERGROUP_ROW создает список ссылок на страницы регистрации в зависимости от выбранной группы. В ссылках появляется еще один параметр usergroup, который как раз и определяет выбранную группу.

2. В новой редакции плагина Usergroupselector можно создавать свои шаблоны для разных групп пользователей. Например, если у вас группа фрилансеров имеет псевдоним freelancer, то отдельная страница регистрации должна иметь шаблон с именем файла: users.register.freelancer.tpl, для группы работодтелей (employer), шаблон будет называться users.register.employer.tpl

Стандартный код этих шаблонов будет следующим:

<!-- BEGIN: MAIN -->

    <div class="breadcrumb">{USERS_REGISTER_TITLE}</div>
    <div class="well" style="padding-left: 50px;">
        <div class="input-prepend input-append">
            <div class="btn-group">
                <!-- BEGIN: USERGROUP_ROW -->
                <a href="{USERGROUP_ROW_ALIAS|cot_url('users', 'm=register&usergroup='$this)}" class="btn btn-large span5<!-- IF {USERGROUP_ROW_ACTIVEID} --> active<!-- ENDIF -->">{USERGROUP_ROW_TITLE}</a>
                <!-- END: USERGROUP_ROW -->
            </div>
        </div>
    </div>
    <div class="well">
        {FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/warnings.tpl"}
        <form name="login" action="{PHP.usergroup|cot_url('users', 'm=register&a=add&usergroup='$this)}" method="post" enctype="multipart/form-data">
            <input type="hidden" name="ruserusergroup" value="{PHP.usergroupid}" />
            <table class="table">
                <tr>
                    <td class="width30">{PHP.L.Username}:</td>
                    <td class="width70">{USERS_REGISTER_USER} *</td>
                </tr>
                <tr>
                    <td>{PHP.L.users_validemail}:</td>
                    <td>
                        {USERS_REGISTER_EMAIL} *
                        <p class="small">{PHP.L.users_validemailhint}</p>
                    </td>
                </tr>
                <tr>
                    <td>{PHP.L.Password}:</td>
                    <td>{USERS_REGISTER_PASSWORD} *</td>
                </tr>
                <tr>
                    <td>{PHP.L.users_confirmpass}:</td>
                    <td>{USERS_REGISTER_PASSWORDREPEAT} *</td>
                </tr>
                <tr>
                    <td>{USERS_REGISTER_VERIFYIMG}</td>
                    <td>{USERS_REGISTER_VERIFYINPUT} *</td>
                </tr>
                <!-- IF {USERS_REGISTER_USERAGREEMENT} -->
                <tr>
                    <td>{PHP.L.useragreement}</td>
                    <td><label class="checkbox">{USERS_REGISTER_USERAGREEMENT} *</label></td>
                </tr>
                <!-- ENDIF -->
                <tr>
                    <td></td>
                    <td>
                        <button class="btn btn-primary btn-large">{PHP.L.Submit}</button>
                    </td>
                </tr>
            </table>
        </form>
    </div>

<!-- END: MAIN -->

Этот код немного отличается от исходного кода регистрации в исходниках, так как нам нужно зафиксировать выбранную группу в форме через скрытый инпут и изменить аттрибут ACTION в форме, чтобы данные отсылались в соответствии с выбранной группой:

<form name="login" action="{PHP.usergroup|cot_url('users', 'm=register&a=add&usergroup='$this)}" method="post" enctype="multipart/form-data">
            <input type="hidden" name="ruserusergroup" value="{PHP.usergroupid}" />

в шаблон users.edit.tpl

добавьте:

					<!-- IF {USERS_EDIT_GROUPSELECT} -->
					<tr>
						<td>{PHP.L.profile_group}:</td>
						<td>{USERS_EDIT_GROUPSELECT}</td>
					</tr>
					<!-- ENDIF -->

 

P.S. по материалам из открытых источников.

 

 

Добавлено 5 Минуты спустя:

Уточню. на демонстрации установлен только плагин выбора группы, а сам код шаблона users.register.tpl

<!-- BEGIN: MAIN -->
{FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/warnings.tpl"}
<section class="uk-grid-collapse uk-child-width-1-2@s" uk-grid>
	<div class="uk-background-cover uk-visible@s" style="background-image: url('{PHP.cfg.mainurl}/themes/{PHP.theme}/img/user-auth-bg.jpg');" uk-height-viewport>
		<div class="uk-padding-large uk-light">

			<div class="uk-container uk-text-center uk-margin-large-top uk-animation-fade">
			<div class=" uk-overlay uk-overlay-default uk-border-rounded">
				<header class="uk-visible@m">
					<h1 class="uk-link-text uk-text-uppercase uk-heading-large uk-text-bold">
						<a class="uk-link-reset" href="{PHP|cot_url('index')}">{PHP.cfg.maintitle}</a>
					</h1>
				</header>
				<h2 class="uk-link-text uk-text-uppercase uk-heading-medium uk-text-bold uk-hidden@m">{PHP.cfg.maintitle}</h2>
				<h5 class="uk-link-text uk-text-uppercase">Уже зарегистрированы?</h5>
				<a class="uk-button uk-button-large uk-button-default uk-light uk-margin-top" href="{PHP|cot_url('login')}">{PHP.L.Login}</a>
			</div>
			</div>
		</div>
	</div>
    <aside class="uk-padding-large">
	<div class="uk-container uk-container-small">
		<header class="uk-text-bold">
			<h2 class="uk-heading-bullet uk-text-uppercase uk-link-text">{USERS_REGISTER_TITLE}</h2>
		</header>
		
		<form name="login" action="{USERS_REGISTER_SEND}" method="post" enctype="multipart/form-data" class="uk-form-stacked">

			<!-- IF {USERS_REGISTER_GROUPSELECTBOX} -->
			<div class="uk-margin">
				<label class="uk-form-label uk-text-uppercase">{PHP.L.profile_group}:</label>
				<div class="uk-form-controls">
					{USERS_REGISTER_GROUPSELECTBOX}
				</div>
			</div>
			<!-- ENDIF -->
			<div class="uk-margin">
				<label class="uk-form-label"><span class="uk-text-uppercase">{PHP.L.Username}:</span><span class="uk-text-danger"> {PHP.L.Username_note}</span></label>
				<div class="uk-form-controls">
					{USERS_REGISTER_USER|cot_rc_modify($this, 'placeholder="MyNickName"')}
				</div>
			</div>
				<!-- IF {USERS_REGISTER_NAM} -->
                    <div class="uk-margin">
                        <label class="uk-form-label uk-text-uppercase">{USERS_REGISTER_NAM_TITLE}</label>
                        <div class="uk-form-controls">
                            {USERS_REGISTER_NAM}
                        </div>
                    </div>
				<!-- ENDIF -->
				<!-- IF {USERS_REGISTER_FIRST_SECOND_NAME} -->
                    <div class="uk-margin">
                        <label class="uk-form-label uk-text-uppercase">{USERS_REGISTER_FIRST_SECOND_NAME_TITLE}</label>
                        <div class="uk-form-controls">
                            {USERS_REGISTER_FIRST_SECOND_NAME}
                        </div>
                    </div>
				<!-- ENDIF -->
			<div class="uk-margin">
				<label class="uk-form-label uk-text-uppercase">{PHP.L.Email}:</label>
			<div class="uk-form-controls">
				<div class="uk-inline uk-width-1-1">
					<a class="uk-form-icon uk-form-icon-flip" href="#modal-registr-question" uk-toggle><span class="uk-text-danger" uk-icon="icon: question; ratio: 1.2"></span></a>
					<input placeholder="my_real_email@gmail.com" class="uk-input uk-width-1-1" type="text" name="ruseremail" value="" size="24" maxlength="64">
				</div>
			</div>
		<div id="modal-registr-question" class="uk-flex-top" uk-modal>
			<div class="uk-modal-dialog uk-modal-body uk-background-muted uk-border-rounded uk-margin-auto-vertical">
				<button class="uk-modal-close-default uk-button uk-icon-button" type="button" uk-close></button>
				<div class="">
					<h4 class="uk-text-bold uk-animation-slide-right uk-animation-toggle" tabindex="0">
					<img class="uk-animation-shake uk-margin-small-right" width="27" height="27" alt="" uk-img="data-src: {PHP.cfg.mainurl}/{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/img/icon/048-notification.svg" uk-svg="uk-preserve" >
					<span class="uk-text-danger uk-margin-small-left uk-text-middle">Внимание!</span></h4>
					<ul class="uk-list uk-list-decimal">
						<li><span class="uk-text-danger">E-mail</span> должен быть действующим, на него придет письмо для подтверждения регистрации</li>
						<li>Если письма для подтверждения регистрации нет во входящих, - проверьте папку "СПАМ"</li>
						<li>Если нет и в папке спама по истечению 5-15 минут, напишите администратору <a class="" href="{PHP|cot_url('contact')}">через форму обратной связи</a></li>
					</ul>		
					<div class="uk-text-right">
						<button class="uk-button uk-button-default uk-modal-close" type="button">Понятно !</button>
					</div>
				</div>
			</div>
		</div>

			</div>

			<div class="uk-margin">
				<label class="uk-form-label uk-text-uppercase">{PHP.L.Password}:</label>
				<div class="uk-form-controls">
					{USERS_REGISTER_PASSWORD}
				</div>
			</div>
			<div class="uk-margin">
				<label class="uk-form-label uk-text-uppercase">{PHP.L.users_confirmpass}:</label>
				<div class="uk-form-controls">
					{USERS_REGISTER_PASSWORDREPEAT}
				</div>
			</div>
			<div class="uk-margin">
				<label class="uk-form-label uk-text-uppercase">{USERS_REGISTER_VERIFYIMG}</label>
					<div class="uk-form-controls">{USERS_REGISTER_VERIFYINPUT}</div>
			</div>
			<div class="uk-margin">
				<!-- IF {PHP.cot_plugins_active.useragreement} -->
				<div class="">
					{PHP|cot_checkbox(0, 'ruseragreement', '')} <a href="{PHP|cot_url('plug', 'e=useragreement')}" class="uk-link-reset" target="blank"> {PHP.L.useragreement_agree}</a>
				</div>
				<!-- ENDIF -->
			</div>
			<div class="uk-margin">
				<div class="uk-alert-warning" uk-alert>
					<a class="uk-alert-close" uk-close></a>
					<span class="uk-text-small">{PHP.L.login_warning_notice}</span>
				</div>
			</div>
			<div class="uk-margin">
				<button class="uk-button uk-button-default uk-button-large uk-float-right"  type="submit" name="submit">{PHP.L.Register}
				</button>
			</div>
		</form>
	</div>
    </aside>
</section>
<!-- END: MAIN -->

то есть я не создавал users.register.mynamegroupe.tpl

Добавлено 9 Минуты спустя:

 по ID группы:

создаете users.register.tpl

в нем маленький код, то есть по клику на кнопку с названием своей группы, - пользователь попадет на отдельную страницу регистрации именно выбранной группы со своими полями, и понятно у этой группы свой ID

<!-- BEGIN: MAIN -->
<div class="container">
    <div class="row">
    <!-- BEGIN: USERGROUP_ROW -->
    <div class="col-6">
    <a href="{USERGROUP_ROW_ALIAS|cot_url('users', 'm=register&usergroup='$this)}" class="btn  <!-- IF {USERGROUP_ROW_ACTIVEID} --> active<!-- ENDIF -->">{USERGROUP_ROW_TITLE}</a>
    </div>
    <!-- END: USERGROUP_ROW -->
    </div>
</div>
<!-- END: MAIN -->

 

Добавлено 9 Минуты спустя:

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

users.register.usergroupename1.tpl, users.register.usergroupename2.tpl

и  уже в каждый их эти шаблонов код такой

<!-- BEGIN: MAIN -->
<div class="container"> {FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/warnings.tpl"} </div>
<div>
  <div class="container">
    <div>
      <h2 class="text-center">
        <span>{PHP.cot_groups.4.name}</span>
      </h2>
      <div class="row">
        <!-- BEGIN: USERGROUP_ROW -->
        <div class="col-6">
          <a href="{USERGROUP_ROW_ALIAS|cot_url('users', 'm=register&usergroup='$this)}" class="btn
						<!-- IF {USERGROUP_ROW_ACTIVEID} --> active
						<!-- ENDIF -->">{USERGROUP_ROW_TITLE} </a>
        </div>
        <!-- END: USERGROUP_ROW -->
      </div>
      <form class="form" name="login" action="{PHP.usergroup|cot_url('users', 'm=register&a=add&usergroup='$this)}" method="post" enctype="multipart/form-data">
        <!-- ID группы (value="4") обязатально в строке "<input type="hidden" value="4" name="ruserusergroup">" -->
        <input type="hidden" value="4" name="ruserusergroup">
        <div class="row">
          <input type="text" name="rusername" placeholder="Имя" required="" />
        </div>
        <div class="row">
          <input type="text" name="ruseremail" placeholder="Действующий e-mail" required="" />
        </div>
        <div class="row">
          <input type="password" name="rpassword1" placeholder="Пароль" required="" />
        </div>
        <div class="row">
          <input type="password" name="rpassword2" placeholder="Подтвердить пароль" required="" />
        </div>
        <div class="row">
          <label>{USERS_REGISTER_VERIFYIMG}</label>
          <input maxlength="20" size="10" value="" name="rverify" />
        </div>
        <div class="row">
          <button class="btn">Регистрация</button>
        </div>
      </form>
    </div>
  </div>
</div>
<!-- END: MAIN -->

 

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

Dit bericht is bewerkt door webitproff (2023-04-21 11:22, 1 jaar ago)