Перейти к содержимому


Расширеная форма регистрации


  • Вы не можете ответить в тему
Сообщений в теме: 9

#1 Mihalich75

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородНевинномысск

Отправлено 11 February 2013 - 06:18 PM

Стоит такая задача: первым полем в форме регистрации стоит выпадающий список с выбором группы пользователей (розница, опт, партнёр). В зависимости от выбраной группы в форме задаются наборы полей.
Поиск результатов не дал, поэтому решил взяться сам. За основу взял обработчик поля "Страна" и по аналогии попробовал сделать то же для поля "группа пользователей".

В файл core/tpl/user/шаблон/register.tpl.html после строки
<table cellspacing="0" cellpadding="0" align="center">
вписал

		  {if $custgroups}
		  <tr>
		    <td align="right" valign="middle"><span class="error">*</span> {$smarty.const.CUSTGROUPS_NAME}:&nbsp;</td>
		    <td valign="middle" align="left">
   <select name="custgroupID" onchange='billingAddressCheckHandler(); changeСustgroupHandler();'>			   
			    {section name=i loop=$custgroups}				
			    <option value="{$custgroups[i].custgroupID}"
				    {if $custgroupID ne NULL}
					    {if $custgroups[i].custgroupID == $custgroupID} selected {/if}
				    {else}
					    {if $custgroups[i].custgroupID == $smarty.const.CONF_DEFAULT_CUSTGROUPS} selected {/if}
				    {/if}
			    >{$custgroups[i].custgroup_name}</option>			   
			    {/section}
		    </select>
   </td>
		  </tr>
		  <tr>
		    <td colspan="2" style="height: 6px;"></td>
		  </tr>
		  {else}
		  <tr>
		    <td><input type=hidden name='custgroupID' value='NULL'></td>
		  </tr>
		  {/if}

В файл core/functions/setting_functions.php добавил функцию
function settingCONF_DEFAULT_CUSTGROUPS()
{
	    if ( isset($_POST["save"]) )
			    _setSettingOptionValue( "CONF_DEFAULT_CUSTGROUPS",
							    $_POST["settingCONF_DEFAULT_CUSTGROUPS"] );
	    $res = "<select name='settingCONF_DEFAULT_CUSTGROUPS'>";
	    $res .= "<option value='0'>".ADMIN_NOT_DEFINED."</option>";
	    $selectedID = _getSettingOptionValue("CONF_DEFAULT_CUSTGROUPS");
	    $count_row = 0;
	    $custgroups = cnGetCustgroups( array(), $count_row );
	    foreach( $custgroups as $custgroup )
	    {
			    $res .= "<option value='".$custgroup["custgroupID"]."'";
			    if ( $selectedID == $custgroup["custgroupID"] )
					    $res .= " selected ";
			    $res .= ">";
			  $res .= "	    ".$custgroup["custgroup_name"];
			    $res .= "</option>";
	    }
	    $res .= "</select>";
	    return $res;
}

И в файл core/languages/russian.php добавил строку
define('CUSTGROUPS_NAME', 'Группа пользователей');

Поле на странице не отобразилось, значит в коде есть ошибка. Знающие люди ткните носом...

Далее реализавывать думаю через создание отдельных файлов для каждого варианта регистрации. Но для начала нужно решить данное затруднение.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 February 2013 - 08:10 PM

Стоит такая задача: первым полем в форме регистрации стоит выпадающий список с выбором группы пользователей (розница, опт, партнёр). В зависимости от выбраной группы в форме задаются наборы полей.

Я бы на факт выбора нужного элемента выпадающего списка (<select onchange=....) повесил javascript-функцию, которая бы вставляла в нижерасположенный контейнер (div или еще какой) HTML-код с соответствующим набором полей.

Далее реализавывать думаю через создание отдельных файлов для каждого варианта регистрации

Событие выбора варианта из выпадающего списка (в вашем коде это функции billingAddressCheckHandler(); changeСustgroupHandler()) отрабатывается уже на стороне клиента, браузером. Каким образом предполагается использование "отдельных файлов" для каждого варианта выбора, если к моменту выбора все уже загружено в браузер? Либо перегружать страницу, либо использовать AJAX. Оба варианта для данного случая - из пушки по воробьям.

PS. Посмотрите, каким способом изменяется содержимое корзины при варианте корзины AjaxCart - просто подсовывается в контейнер с id="cart" новое HTML-содержимое. Похоже, Вам что-то примерно такое же и надо.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 Mihalich75

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородНевинномысск

Отправлено 11 February 2013 - 08:56 PM

Спасибо за совет. Буду учить матчасть на предмет скриптования.
Только вот ответа нет на вопрос почему не отобразилось поле.
  • 0

#4 Mihalich75

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородНевинномысск

Отправлено 14 February 2013 - 10:31 PM

Скоро модуль будет. Пообещали помочь.
  • 0

#5 Mihalich75

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 19 сообщений
Репутация: 0
Начинающий
  • ГородНевинномысск

Отправлено 19 February 2013 - 05:18 PM

Модуль готов. С результатом можно ознакомиться здесь. Кого интересует пишите в личку.
  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 February 2013 - 06:41 PM

Кого интересует пишите в личку.

Нафиг не надо никуда писать, достаточно зайти по ссылке и нажать "Посмотреть исходный код", там все есть. Тот самый <select onclick=... и JS-функция онклика.

PS. Интересно, из каких соображений в HTML-код сайта "Оптовые поставки посуды на Северном Кавказе" надо пихать Гвинею Биссау, Соломонские острова и прочие перспективные для оптовых поставок посуды страны? Непонимание, что весь этот набор стран тянется браузером клиента или реальные надежды на "а вдруг?!" :)))))
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 l17l

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 106 сообщений
Репутация: -5
Начинающий

Отправлено 27 February 2013 - 08:13 AM

Как можно убрать те поля что не нужны при регистрации ???
  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2013 - 10:32 AM

Как можно убрать те поля что не нужны при регистрации ???

Если в обсуждаемом блоке поля добавлены штатным путем (либо речь вообще не об этом блоке а о штатной регистрации), то в Админка-Информация-Форма_регистрации. Дополнительные поля можно удалить, три штатных поля (адрес, город, область) можно отключить, оставшийся минимальный набор (логин, пароль, ФИО, емейл....) убирается только редактированием кода.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 l17l

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 106 сообщений
Репутация: -5
Начинающий

Отправлено 27 February 2013 - 03:40 PM

да да, то что в коде, где убрать ?
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2013 - 04:23 PM

да да, то что в коде, где убрать ?

Что "да-да"? О каком коде речь?
Если о том, про который эта тема, то у меня его нет (не надо, да и проще самому написать).
Если о штатном, то вопрос несколько не для этой темы, логичнее оформить его отдельной темой и по человечески. В стиле "не нужны такие-то поля, как их убрать", а не "то что в коде".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)