Новое поле: семейное положение (исходя от пола)

2201
Здравствуйте, хочу поделиться моей собственной уже 2 доработкой.
Это новое поле, Семейное положение в зависимости от пола пользователя.
Например:
Если пользователь выбирает пол мужской, то идет подгрузка и появляется соответствующие поля выбора семейного положения и наоборот.

При выборе женский пол:


При выборе мужской пол:

Начнем!

Открываем components/users/frontend.php

ищем:
Код PHP:
$gender = $inCore->request('gender', 'str');
ниже вставляем:
Код PHP:
$semya = $inCore->request('semya', 'str');
ищем:
Код PHP:
gender='$gender' $forms_sql,
ниже вставляем:
Код PHP:
semya='$semya' $forms_sql,
ищем:
Код PHP:
    if ($usr['gender']) {
        switch ($usr['gender']){
            case 'm': $usr['genderimg'] = '<img src="/components/users/images/male.png"/>'; $usr['gender']='мужской'; break;
            case 'f': $usr['genderimg'] = '<img src="/components/users/images/female.png"/>'; $usr['gender']='женский'; break;
        }
    }
ниже вставляем:
Код PHP:
    if ($usr['semya']) {
        switch ($usr['semya']){
            case 'q': $usr['semya']='не женат'; break;
            case 'w': $usr['semya']='есть подруга'; break;
			case 'e': $usr['semya']='помолвлен'; break;
			case 'r': $usr['semya']='женат'; break;
			case 't': $usr['semya']='всё сложно'; break;
			case 'y': $usr['semya']='в активном поиске'; break;
			case 'u': $usr['semya']='не замужем'; break;
			case 'i': $usr['semya']='есть друг'; break;
			case 'o': $usr['semya']='помолвлена'; break;
			case 'p': $usr['semya']='замужем'; break;
			case 'a': $usr['semya']='всё сложно'; break;
			case 's': $usr['semya']='в активном поиске'; break;
        }
    }
Открываем components/users/model.php
ищем:
Код PHP:
p.description,
рядом вставляем (не забываем про пробелы):
Код PHP:
p.semya,
Открываем templates/шаблон/components/com_users_edit_profile.tpl
ищем:
Код PHP:
{add_css file='includes/jquery/tabs/tabs.css'}
ниже вставляем (_default_ - ставим свой шаблон, внимательней!):
Код PHP:
{literal}
<script type="text/javascript" src="/templates/_default_/js/select.js"></script>
{/literal}
ищем:
Код PHP:
                    <tr>
                        <td valign="top"><strong>{$LANG.SEX}:</strong></td>
                        <td valign="top">
                            <select name="gender" id="gender" style="width:307px">
                                <option value="0" {if $usr.gender==0} selected {/if}>{$LANG.NOT_SPECIFIED}</option>
                                <option value="m" {if $usr.gender=='m'} selected {/if}>{$LANG.MALES}</option>
                                <option value="f" {if $usr.gender=='f'} selected {/if}>{$LANG.FEMALES}</option>
                            </select>
                        </td>
                    </tr>
ниже вставляем
Код PHP:
	<tr>
                        <td valign="top"><strong>{$LANG.SEMYA}:</strong></td>
                        <td valign="top">
<select name="semya" id="semya"></select>
{literal}
<script type="text/javascript">
<!--
// Создаем новый объект связанных списков
var syncgender = new syncList;
syncgender.dataList = {
  'm':{'0':'- Не выбраны -','q':'Не женат','w':'Есть подруга' ,'e':'Помолвлен','r':'Женат','t':'Всё сложно','y':'В активном поиске'},
  'f':{'0':'- Не выбраны -','u':'Не замужем','i':'Есть друг','o':'Помолвлена','p':'Замужем','a':'Всё сложно','s':'В активном поиске' },
};

// Включаем синхронизацию связанных списков
syncgender.sync("gender","semya");
var objSel = document.getElementById("semya");
objSel.selectedIndex = '{/literal}{if $usr.gender==m}{if $usr.semya==0}0{/if}{if $usr.semya==q}1{/if}{if $usr.semya==w}2{/if}{if $usr.semya==e}3{/if}{if $usr.semya==r}4{/if}{if $usr.semya==t}5{/if}{if $usr.semya==y}6{/if}{else}{if $usr.semya==0}0{/if}{if $usr.semya==u}1{/if}{if $usr.semya==i}2{/if}{if $usr.semya==o}3{/if}{if $usr.semya==p}4{/if}{if $usr.semya==a}5{/if}{if $usr.semya==s}6{/if}{/if}{literal}';

//-->
</script>
{/literal}
                        </td>
                    </tr>
Открываем templates/шаблон/components/com_users_profile.tpl
ищем:
Код PHP:
{if $usr.gender}
<div class="field">
<div class="title">{$LANG.SEX}:</div>
<div class="value">{$usr.gender}</div>
</div>
{/if}
ниже вставляем
Код PHP:
{if $usr.semya}
<div class="field">
<div class="title">{$LANG.SEMYA}:</div>
<div class="value">{$usr.semya}</div>
</div>
{/if}
Открываем languages/ru/components/users.php
ищем:
Код PHP:
$_LANG['SEX']                       ='Пол';
ниже вставляем
Код PHP:
$_LANG['SEMYA']                       ='Семейное положение';
Скачиваем файл: скачать
И заливаем /templates/_default_/js/

Выполним запрос в базу данных:
Код PHP:
ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
Демо: http://your-page.ru/users/admin

Вот и все, Если вы хотите выразить благодарность
Webmoney:
R274715901195
Z409372671314

Яндекс.Деньги:
41001249914403

Всегда с Вами, Умные Интернет Разработки
Разные иконки форумов и каталога | Объединяем в профиле пользователя Статус и Последний визит
Комментарии (37)
0 25 апреля 2011 в 15:30 +3
Спасибо, хорошая штука!
PrazdNik 25 апреля 2011 в 15:31 0
как раз сегодня утром этим вопросом озадачился...спасибо!
Умные Интернет Разработки 25 апреля 2011 в 15:38 +4
Скоро выйдет следующая версия "Семеное положение". Там думаю сделать еще одно поле, это выбор пользователей, если выбираешь: женат(замужем), есть подруга(друг), то появляется список с пользователями.
Search 25 апреля 2011 в 15:51 +3
Правильно, но список должен быть не всех пользователей а только друзей, например как в мире mail.ru. А то пользователей может быть и тысячи, это не удобно будет искать нужного тебе пользователя.
Умные Интернет Разработки 25 апреля 2011 в 16:02 +3
естественно)
0 25 апреля 2011 в 15:46 0
http://ok2net.kz/users/Prozaik   ошибка вышла..черт и файлы не сохранил..
Умные Интернет Разработки 25 апреля 2011 в 15:51 +1
можно вернуть, это файл: components/users/model.php
Я тестировал это только на 1.7
Search 25 апреля 2011 в 15:53 0
Актуальней было бы тестить на версии 1.8.
0 25 апреля 2011 в 15:56 0
да, +1, не пошло на 1.8, у кого нибудь пошло?
Умные Интернет Разработки 25 апреля 2011 в 16:21 +2
Работает на 1.8 отлично: вот не поленился и установил демо: http://your-page.ru/users/admin
Умные Интернет Разработки 25 апреля 2011 в 15:59 +1
запрос выполни:
Код PHP:
ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
скачать файл - И заливаем /templates/_default_/js/
0 25 апреля 2011 в 16:26 +1
Спасибо, все прекрасно работает!
Search 25 апреля 2011 в 15:59 +1
Вообще перед любым изменением надо делать бекап.
А вообще я делаю так, у меня на локалке стоит инстант, я на нем все тестю, а потом уже устанавливаю на реальный сайт.
googlebot 25 апреля 2011 в 16:18 0
Вау, да это же инструкция по организации зависимых полей:)
А к доске объявлений, например, подобная схемка подойдет?
Умные Интернет Разработки 25 апреля 2011 в 16:23 0
если постараться, то получиться многое)
Artyom Agalakov 25 апреля 2011 в 18:49 +2
Так, а чем это будет отличаться от того, что в конструкторе форм в админке запилить эту строку?
pasplus 25 апреля 2011 в 19:37 +1
Если я правильно понял есть зависимость вывода от пола пользователя, стандартными средствами инстанта это не сделать))
0 25 апреля 2011 в 19:47 0
да собственно ничем) я сделал сначала, потом удалил строку, которую делал в формах про семейное.
pasplus 25 апреля 2011 в 19:38 +1
Забыл сказать... Спасибо!!!))))
Till 25 апреля 2011 в 22:36 +1
Красяво. Помнится, на JomSocial приходилось делать "двуполые" окончания. Блин, к Инстанту появляются все новые полезные приблуды. Хорошо!
NickSolver 30 октября 2011 в 02:06 0
под хромом не работает
Олег 30 ноября 2011 в 02:54 +1
Сделал всё как написано но не заработало.
на странице изменения профиля появилось пустое поле семейное положение
когда в базе поставил значеие семейного положения "y" на странице пользователя появилось семейное положение в активном поиске а на странице изменить профиль также пустое поле.
с чем это может связано???
Pantsakov 16 декабря 2011 в 08:07 0
Под 1.9 у кого-нибудь работает? Блин, не могу разобраться, выходит пустое поле и все тут (
Pantsakov 16 декабря 2011 в 08:29 +1
Разобрался.

В коде в 12-й строке после символа } не должно быть запятой

Код PHP:
    <tr>
                        <td valign="top"><strong>{$LANG.SEMYA}:</strong></td>
                        <td valign="top">
<select name="semya" id="semya"></select>
{literal}
<script type="text/javascript">
<!--
// Создаем новый объект связанных списков
var syncgender = new syncList;
syncgender.dataList = {
  'm':{'0':'- Не выбраны -','q':'Не женат','w':'Есть подруга' ,'e':'Помолвлен','r':'Женат','t':'Всё сложно','y':'В активном поиске'},
  'f':{'0':'- Не выбраны -','u':'Не замужем','i':'Есть друг','o':'Помолвлена','p':'Замужем','a':'Всё сложно','s':'В активном поиске' },
};
 
// Включаем синхронизацию связанных списков
syncgender.sync("gender","semya");
var objSel = document.getElementById("semya");
objSel.selectedIndex = '{/literal}{if $usr.gender==m}{if $usr.semya==0}0{/if}{if $usr.semya==q}1{/if}{if $usr.semya==w}2{/if}{if $usr.semya==e}3{/if}{if $usr.semya==r}4{/if}{if $usr.semya==t}5{/if}{if $usr.semya==y}6{/if}{else}{if $usr.semya==0}0{/if}{if $usr.semya==u}1{/if}{if $usr.semya==i}2{/if}{if $usr.semya==o}3{/if}{if $usr.semya==p}4{/if}{if $usr.semya==a}5{/if}{if $usr.semya==s}6{/if}{/if}{literal}';
 
//-->
</script>
{/literal}
                        </td>
                    </tr>
Pantsakov 16 декабря 2011 в 08:30 0
Этот код вставляется в файл templates/шаблон/components/com_users_edit_profile.tpl.
Олег 2 января 2012 в 18:06 0
убрал запятую всёравно пустое поле.
что может быть???
nikolas 2 января 2012 в 20:02 +2
Олег не парся выбери конструктор форм анкета пользователя..поля формы-добавить поле-выпадающий список
через / добавь обязательное заполнение и выбери свои метки там женат(замужем) активный или посивный поиск и т.д и не нада тебе файлы править
Майкл 2 января 2012 в 22:27 0
nikolas, согласен с тобой полностью!
Весь функционал имеется!
LonelyCat 3 января 2012 в 05:14 +1
nikolas:
активный или посивный

ты жжешь))))
͡﴾͡๏̯͡๏﴿ 3 января 2012 в 09:55 0
)))
Олег 17 января 2012 в 00:31 0
Спасибо за совет)))
наверное так и сдеаю.
Patriot 7 января 2012 в 11:02 0
На 1.9 полет нормальный!+ Спасибо!
Patriot 7 января 2012 в 11:15 +1
Скоро выйдет следующая версия "Семеное положение". Там думаю сделать еще одно поле, это выбор пользователей, если выбираешь: женат(замужем), есть подруга(друг), то появляется список с пользователями.

Будет ли следующая версия?
Pantsakov 9 января 2012 в 19:13 +1
Как бы еще в модуле "Поиск пользователей" прикрутить поиск по семейному положению? ))
Алексей Гаврилов 1 апреля 2012 в 10:05 -2
Пустые поля, в чем может быть проблема? использую 1.9
Виктор Данилов 13 июня 2012 в 15:22 +2
Скорей всего пользователь не указал свой пол...