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


Фотография
- - - - -

Требуется помощь с кастомными полями в форме регистрации (за вознаграждение)


  • Закрытая тема Тема закрыта
Сообщений в теме: 15

#1 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 20:00

Здравствуйте, уважаемые знатоки!

Суть проблемы вот в чем. На моем форуме (v 3.4.4) есть острая необходимость разделения пользователей по половому признаку. Тоесть для как для девушек так и для мужчин есть закрытый форумы. Поэтому их необходимо разделять при регистрации раз и на всегда (естественно любой может создать акк указав другой пол и попасть в этот закрытый форум и т.д., но это уже другой разговор)

 

Для реализации требуемого я приобрел

Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытое содержание

 (Прикрепленный файл  (SOS33) User Groups in Register Form & Control Panel 1.1.4.zip   197,6К    скачиваний 10) и изменил в файле hook.xml (Прикрепленный файл  hook.xml   17,49К    скачиваний 13)

 

вот это:

 

$to_update = array( 'member_group_id'   => $group, 'real_group'        => $chosenGroup );
 

на вот это:

 

$to_update = array( 'member_group_id' => '3','mgroup_others'   => $group, 'real_group'        => '3');
 

Поясню, дефолтовая группа для регистрации у меня имеет ID = 3, то есть это обычные пользователи. А real_group я поставил из подстраховки (так как не понял для чего это).

 

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

 

Но есть одно но! Очень хочется чтобы при регистрации, также записывалось значение кастомного поля "Пол" (у меня это field_21) дабы при поиске можно было отсортировать отдельно девушек:) и в профиле это красиво отображалось (со значком) 

 

В общем добавляю я ниже строки:

 

$gender = 'm';
$to_update = array( 'field_21' => $gender );
ipsRegistry::DB()->update( 'pfields_content', $to_update, "member_id=".$member['member_id'] );
 

$gender = 'm'; - использую для теста (в поле будут два ключа m или f) 

 

Проблема в том, что рега происходит успешно, но поле field_21 имеет значение NULL! И хоть убей я не пойму в чем дело. Возможно после того как работает этот хук срабатывает еще один который и обновляет дополнительные поля профилей, но я нуб как в php так и в ipb новичок, потому прошу помощи у ВАС. Готов заплатить за работу в пределах 20 уев.. Заранее спасибо

 



Заработок и обучение заработку

#2 Оффлайн   ๖ۣۣۜDesperate™

    Администратор


  • Администраторы
  • Репутация
    4 616
    • Cообщений: 8 560
    • Форум:3.4.х
    • Город:IpbZona
    Участник

Отправлено 19 Апрель 2013 - 20:21

А вы в АЦ - Пользователи - Дополнительные поля создавали новые для мужского и женского пола?

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

 

Итог, мы получаем 2 новые группы у которых ID будет например 8 (мужики) 9(девушки) вот эти ID и нужно прописывать например в хук.



#3 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 20:28

А вы в АЦ - Пользователи - Дополнительные поля создавали новые для мужского и женского пола?

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

 

Итог, мы получаем 2 новые группы у которых ID будет например 8 (мужики) 9(девушки) вот эти ID и нужно прописывать например в хук.

 

Да поля созданы. Можно конечно чтобы при реге пользователь выбирал два раза свой пол (первый раз для поля, второй раз для группы, но это не совсем элегантно:)) И как я с казал с разделением по группам проблем нет. Проблема только в том что в поле field_21 не записывается НИКАКИХ данных, в то время как в поля 'member_group_id' и 'mgroup_others' значения записываются без проблем.



#4 Оффлайн   ๖ۣۣۜDesperate™

    Администратор


  • Администраторы
  • Репутация
    4 616
    • Cообщений: 8 560
    • Форум:3.4.х
    • Город:IpbZona
    Участник

Отправлено 19 Апрель 2013 - 20:41

Так, давайте я сам по эксперементирую с хуком ) Для пояснения: нам нужно чтобы при регистрации будь это мужчина или женщина попадал(а) в свою группу? Если все верно, то попробую воссоздать вашу картину в реальность.



#5 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 20:55

Да я не против)) Я даже выложил его в первом посте темы. только объясню еще раз:

 нам нужно чтобы при регистрации будь это мужчина или женщина попадал(а) в свою группу

 

это я уже сам сделал)) Все отлично работает. При регистрации пользователь получает второстепенную группау в зависимости от его выбора.

Я долблюсь над тем, чтобы хук также записывал в кастомное поле букву m или f.  Если в этом поле будет 'f' то в профиле будет такая красота 

Прикрепленный файл  profile gender.PNG   10,19К    скачиваний 3

 

а также пользователей можно будет отсортировать по полу при поиске

Прикрепленный файл  gender search.PNG   12,63К    скачиваний 3

 



#6 Гость_churs82_*


  • Гости
  • Репутация
    0

Отправлено 19 Апрель 2013 - 21:17

Оптимально решить на уровне шаблона. Просто сделать поле пол скрытым в форме и выставлять его при отправке формы яваскриптом.



#7 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 21:24

Оптимально решить на уровне шаблона. Просто сделать поле пол скрытым в форме и выставлять его при отправке формы яваскриптом.

 

Не очень оптимальное решение по моему. Да можно повесить на кнопку регистрации код, в нем проверить это поле.. но по моему это костыль. По идее все должно работать и в самом хуке, видно просто что-то я напутал



Хотя все равно большой сенкс, без наличия других решений буду копать в этом направлении



#8 Гость_churs82_*


  • Гости
  • Репутация
    0

Отправлено 19 Апрель 2013 - 21:34

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

Там не хук срабатывает, а оригинальная функция из родительского класса:

return parent::onCreateAccount( $member );


#9 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 22:22

даа вот я и имел в виду, именно это)) Но посмотрев файл register.php я нашел только это

 

 

if ( is_array($custom_fields->out_fields) and count($custom_fields->out_fields) )
{
$this->DB->update( 'pfields_content', $custom_fields->out_fields, 'member_id=' . $mid );
}
 

Вроде тоже только апдейт, или оно жестко апдейтит все подряд(((



#10 Оффлайн   Iona Dneprovsky

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 10
    • Форум:3.4.х

Отправлено 19 Апрель 2013 - 22:26

О, я понял)) надо попробовать засунуть после 102 строчки   где  public function onCompleteAccount( $member ), верно?)