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

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

При выборе женский пол:
Иллюстрация

При выборе мужской пол:
Иллюстрация

Начнем!

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

ищем:
  1. $gender = $inCore->request('gender', 'str');
ниже вставляем:
  1. $semya = $inCore->request('semya', 'str');
ищем:
  1. gender='$gender' $forms_sql,
ниже вставляем:
  1. semya='$semya' $forms_sql,
ищем:
  1. if ($usr['gender']) {
  2. switch ($usr['gender']){
  3. case 'm': $usr['genderimg'] = '<img src="/components/users/images/male.png"/>'; $usr['gender']='мужской'; break;
  4. case 'f': $usr['genderimg'] = '<img src="/components/users/images/female.png"/>'; $usr['gender']='женский'; break;
  5. }
  6. }
ниже вставляем:
  1. if ($usr['semya']) {
  2. switch ($usr['semya']){
  3. case 'q': $usr['semya']='не женат'; break;
  4. case 'w': $usr['semya']='есть подруга'; break;
  5. case 'e': $usr['semya']='помолвлен'; break;
  6. case 'r': $usr['semya']='женат'; break;
  7. case 't': $usr['semya']='всё сложно'; break;
  8. case 'y': $usr['semya']='в активном поиске'; break;
  9. case 'u': $usr['semya']='не замужем'; break;
  10. case 'i': $usr['semya']='есть друг'; break;
  11. case 'o': $usr['semya']='помолвлена'; break;
  12. case 'p': $usr['semya']='замужем'; break;
  13. case 'a': $usr['semya']='всё сложно'; break;
  14. case 's': $usr['semya']='в активном поиске'; break;
  15. }
  16. }
Открываем components/users/model.php
ищем:
  1. p.description,
рядом вставляем (не забываем про пробелы):
  1. p.semya,
Открываем templates/шаблон/components/com_users_edit_profile.tpl
ищем:
  1. {add_css file='includes/jquery/tabs/tabs.css'}
ниже вставляем (_default_ — ставим свой шаблон, внимательней!):
  1. {literal}
  2. <script type="text/javascript" src="/templates/_default_/js/select.js"></script>
  3. {/literal}
ищем:
  1. <tr>
  2. <td valign="top"><strong>{$LANG.SEX}:</strong></td>
  3. <td valign="top">
  4. <select name="gender" id="gender" style="width:307px">
  5. <option value="0" {if $usr.gender==0} selected {/if}>{$LANG.NOT_SPECIFIED}</option>
  6. <option value="m" {if $usr.gender=='m'} selected {/if}>{$LANG.MALES}</option>
  7. <option value="f" {if $usr.gender=='f'} selected {/if}>{$LANG.FEMALES}</option>
  8. </select>
  9. </td>
  10. </tr>
ниже вставляем
  1. <tr>
  2. <td valign="top"><strong>{$LANG.SEMYA}:</strong></td>
  3. <td valign="top">
  4. <select name="semya" id="semya"></select>
  5. {literal}
  6. <script type="text/javascript">
  7. <!--
  8. // Создаем новый объект связанных списков
  9. var syncgender = new syncList;
  10. syncgender.dataList = {
  11. 'm':{'0':'- Не выбраны -','q':'Не женат','w':'Есть подруга' ,'e':'Помолвлен','r':'Женат','t':'Всё сложно','y':'В активном поиске'},
  12. 'f':{'0':'- Не выбраны -','u':'Не замужем','i':'Есть друг','o':'Помолвлена','p':'Замужем','a':'Всё сложно','s':'В активном поиске' },
  13. };
  14.  
  15. // Включаем синхронизацию связанных списков
  16. syncgender.sync("gender","semya");
  17. var objSel = document.getElementById("semya");
  18. 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}';
  19.  
  20. //-->
  21. </script>
  22. {/literal}
  23. </td>
  24. </tr>
Открываем templates/шаблон/components/com_users_profile.tpl
ищем:
  1. {if $usr.gender}
  2. <div class="field">
  3. <div class="title">{$LANG.SEX}:</div>
  4. <div class="value">{$usr.gender}</div>
  5. </div>
  6. {/if}
ниже вставляем
  1. {if $usr.semya}
  2. <div class="field">
  3. <div class="title">{$LANG.SEMYA}:</div>
  4. <div class="value">{$usr.semya}</div>
  5. </div>
  6. {/if}
Открываем languages/ru/components/users.php
ищем:
  1. $_LANG['SEX'] ='Пол';
ниже вставляем
  1. $_LANG['SEMYA'] ='Семейное положение';
Скачиваем файл: скачать
И заливаем /templates/_default_/js/

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

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

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

Всегда с Вами, Умные Интернет Разработки
+3
13 лет назад #
Спасибо, хорошая штука!
0
PrazdNik PrazdNik 13 лет назад #
как раз сегодня утром этим вопросом озадачился...спасибо!
+4
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
Скоро выйдет следующая версия "Семеное положение". Там думаю сделать еще одно поле, это выбор пользователей, если выбираешь: женат(замужем), есть подруга(друг), то появляется список с пользователями.
+3
Search Search 13 лет назад #
Правильно, но список должен быть не всех пользователей а только друзей, например как в мире mail.ru. А то пользователей может быть и тысячи, это не удобно будет искать нужного тебе пользователя.
+3
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
естественно)
0
13 лет назад #
http://ok2net.kz/users/Prozaik ошибка вышла..черт и файлы не сохранил..
+1
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
можно вернуть, это файл: components/users/model.php
Я тестировал это только на 1.7
0
Search Search 13 лет назад #
Актуальней было бы тестить на версии 1.8.
0
13 лет назад #
да, +1, не пошло на 1.8, у кого нибудь пошло?
+2
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
Работает на 1.8 отлично: вот не поленился и установил демо: http://your-page.ru/users/admin
+1
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
запрос выполни:
Код PHP:
ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
скачать файл - И заливаем /templates/_default_/js/
+1
13 лет назад #
Спасибо, все прекрасно работает!
+1
Search Search 13 лет назад #
Вообще перед любым изменением надо делать бекап.
А вообще я делаю так, у меня на локалке стоит инстант, я на нем все тестю, а потом уже устанавливаю на реальный сайт.
0
googlebot googlebot 13 лет назад #
Вау, да это же инструкция по организации зависимых полей:)
А к доске объявлений, например, подобная схемка подойдет?
0
Умные Интернет Разработки Умные Интернет Разработки 13 лет назад #
если постараться, то получиться многое)
+2
Artyom Agalakov Artyom Agalakov 13 лет назад #
Так, а чем это будет отличаться от того, что в конструкторе форм в админке запилить эту строку?
+1
pasplus pasplus 13 лет назад #
Если я правильно понял есть зависимость вывода от пола пользователя, стандартными средствами инстанта это не сделать))
0
13 лет назад #
да собственно ничем) я сделал сначала, потом удалил строку, которую делал в формах про семейное.
+1
pasplus pasplus 13 лет назад #
Забыл сказать... Спасибо!!!))))
+1
Till Till 13 лет назад #
Красяво. Помнится, на JomSocial приходилось делать "двуполые" окончания. Блин, к Инстанту появляются все новые полезные приблуды. Хорошо!
0
NickSolver NickSolver 12 лет назад #
под хромом не работает
+1
Олег Олег 12 лет назад #
Сделал всё как написано но не заработало.
на странице изменения профиля появилось пустое поле семейное положение
когда в базе поставил значеие семейного положения "y" на странице пользователя появилось семейное положение в активном поиске а на странице изменить профиль также пустое поле.
с чем это может связано???
0
Pantsakov Pantsakov 12 лет назад #
Под 1.9 у кого-нибудь работает? Блин, не могу разобраться, выходит пустое поле и все тут (
+1
Pantsakov Pantsakov 12 лет назад #
Разобрался.

В коде в 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>
0
Pantsakov Pantsakov 12 лет назад #
Этот код вставляется в файл templates/шаблон/components/com_users_edit_profile.tpl.
0
Олег Олег 12 лет назад #
убрал запятую всёравно пустое поле.
что может быть???
+2
nikolas nikolas 12 лет назад #
Олег не парся выбери конструктор форм анкета пользователя..поля формы-добавить поле-выпадающий список
через / добавь обязательное заполнение и выбери свои метки там женат(замужем) активный или посивный поиск и т.д и не нада тебе файлы править
0
Майкл Майкл 12 лет назад #
nikolas, согласен с тобой полностью!
Весь функционал имеется!
LonelyCat LonelyCat 12 лет назад #
Комментарий удален
0
nikitka nikitka 12 лет назад #
)))
0
Олег Олег 12 лет назад #
Спасибо за совет)))
наверное так и сдеаю.
0
Patriot Patriot 12 лет назад #
На 1.9 полет нормальный!+ Спасибо!
+1
Patriot Patriot 12 лет назад #
Скоро выйдет следующая версия "Семеное положение". Там думаю сделать еще одно поле, это выбор пользователей, если выбираешь: женат(замужем), есть подруга(друг), то появляется список с пользователями.

Будет ли следующая версия?
+1
Pantsakov Pantsakov 12 лет назад #
Как бы еще в модуле "Поиск пользователей" прикрутить поиск по семейному положению? ))
-2
Алексей Гаврилов Алексей Гаврилов 12 лет назад #
Пустые поля, в чем может быть проблема? использую 1.9
+2
Виктор Данилов Виктор Данилов 11 лет назад #
Скорей всего пользователь не указал свой пол...

Еще от автора

Определение возраста пользователя по дате рождения для 1.10
Продолжаем переделывать улучшения для 1.10 Определяем возраст пользователя по его дате рождения
Новое поле: семейное положение (исходя от пола) для 1.10
Здравствуйте, решил выложить переделку Семейное положение для версии 1.10.
Определение возраста пользователя по дате рождения
Решил поделиться небольшим улучшением, делал для себя, может кому-то пригодиться!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.