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

2012
Здравствуйте, решил выложить переделку Семейное положение для версии 1.10.
А то стали часто спрашивать помощи, чтобы каждому не отвечать, решил описать в блоге, как реализовать.

Для версии 1.9 перейти

Итак, начнем!

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

ищем:
Код PHP:
  1. $gender = cmsCore::getSearchVar('gender');
ниже вставляем:
Код PHP:
  1. $semya = cmsCore::getSearchVar('semya');
ищем:
Код PHP:
  1. // Добавляем в выборку пол, если есть
  2. if($gender){
  3. $model->whereGenderIs($gender);
  4. if($gender == 'm'){
  5. $stext[] = $_LANG['MALE'];
  6. } else {
  7. $stext[] = $_LANG['FEMALE'];
  8. }
  9. }
ниже вставляем:
Код PHP:
  1. // Добавляем в выборку семья, если есть
  2. if($semya){
  3. $model->whereSemyaIs($semya);
  4. if($semya == 'q'){$stext[] = "не женат";}
  5. if($semya == 'w'){$stext[] = "есть подруга";}
  6. if($semya == 'e'){$stext[] = "помолвлен";}
  7. if($semya == 'r'){$stext[] = "женат";}
  8. if($semya == 't'){$stext[] = "всё сложно";}
  9. if($semya == 'y'){$stext[] = "в активном поиске";}
  10. if($semya == 'u'){$stext[] = "не замужем";}
  11. if($semya == 'i'){$stext[] = "есть друг";}
  12. if($semya == 'o'){$stext[] = "помолвлена";}
  13. if($semya == 'p'){$stext[] = "замужем";}
  14. if($semya == 'a'){$stext[] = "всё сложно";}
  15. if($semya == 's'){$stext[] = "в активном поиске";}
  16. }
ищем:
Код PHP:
  1. $profiles['gender'] = cmsCore::request('gender', 'str');
ниже вставляем:
Код PHP:
  1. $profiles['semya'] = cmsCore::request('semya', 'str');
ищем:
Код PHP:
  1. $smarty->assign('gender', $gender);
ниже вставляем:
Код PHP:
  1. $smarty->assign('semya', $semya);
Открываем components/users/model.php
ищем:
Код PHP:
  1. public function whereGenderIs($gender) {
  2. $this->inDB->where("p.gender = '$gender'");
  3. }
ниже вставляем:
Код PHP:
  1. public function whereSemyaIs($semya) {
  2. $this->inDB->where("p.semya = '$semya'");
  3. }
ищем (строка 243):
Код PHP:
  1. p.city, p.karma, p.imageurl,
ниже вставляем:
Код PHP:
  1. p.semya as semya,
ищем (строка 333):
Код PHP:
  1. p.gender as gender,
ниже вставляем:
Код PHP:
  1. p.semya as semya,
ищем:
Код PHP:
  1. if ($user['gender']) {
  2. switch ($user['gender']){
  3. case 'm': $user['fgender'] = $_LANG['MALES']; break;
  4. case 'f': $user['fgender'] = $_LANG['FEMALES']; break;
  5. default: $user['fgender'] = '';
  6. }
  7. }
ниже вставляем:
Код PHP:
  1. if ($user['semya']) {
  2. switch ($user['semya']){
  3. case 'q': $user['fsemya']='не женат'; break;
  4. case 'w': $user['fsemya']='есть подруга'; break;
  5. case 'e': $user['fsemya']='помолвлен'; break;
  6. case 'r': $user['fsemya']='женат'; break;
  7. case 't': $user['fsemya']='всё сложно'; break;
  8. case 'y': $user['fsemya']='в активном поиске'; break;
  9. case 'u': $user['fsemya']='не замужем'; break;
  10. case 'i': $user['fsemya']='есть друг'; break;
  11. case 'o': $user['fsemya']='помолвлена'; break;
  12. case 'p': $user['fsemya']='замужем'; break;
  13. case 'a': $user['fsemya']='всё сложно'; break;
  14. case 's': $user['fsemya']='в активном поиске'; break;
  15. }
  16. }

Открываем templates/шаблон/components/com_users_edit_profile.tpl
ищем:
Код PHP:
  1. {add_css file='includes/jquery/tabs/tabs.css'}
ниже вставляем (_default_ - ставим свой шаблон, внимательней!):
Код PHP:
  1. {literal}
  2. <script type="text/javascript" src="/templates/_default_/js/select.js"></script>
  3. {/literal}
ищем:
Код PHP:
  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>
ниже вставляем
Код PHP:
  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
ищем:
Код PHP:
  1. {if $usr.fgender}
  2. <div class="field">
  3. <div class="title">{$LANG.SEX}:</div>
  4. <div class="value">{$usr.fgender}</div>
  5. </div>
  6. {/if}
ниже вставляем
Код PHP:
  1. {if $usr.fsemya}
  2. <div class="field">
  3. <div class="title">Семейное положение:</div>
  4. <div class="value">{$usr.fsemya}</div>
  5. </div>
  6. {/if}
Открываем languages/ru/components/users.php
ищем:
Код PHP:
  1. $_LANG['SEX'] ='Пол';
ниже вставляем
Код PHP:
  1. $_LANG['SEMYA'] ='Семейное положение';
Скачиваем файл: скачать
И заливаем /templates/_default_/js/

Выполним запрос в базу данных:
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
Благодарность
Определение возраста пользователя по дате рождения | Определение возраста пользователя по дате рождения для 1.10
Комментарии (19)
omarov 4 марта 2013 в 00:07 0
Все отлично, большое спасибо. Может кто взяться и в научить меня делать запрос в БД? Не то я это не смогу реализовать(
lezginka.ru 4 марта 2013 в 00:31 0
запрос в БД
спроси у хостера где phpmyAdmin или myAdmin
как найдешь , поищи там вкладку SQL или Выполнить SQL-запрос(ы) к базе данных, откроет пустое окно-туда копируешь свою мечту - нажимаешь "ок"
Будь внимателен, если не туда нажмешь, люди в черных масках могут приехать...
omarov 4 марта 2013 в 01:03 0
Люди в черных масках свои люди), мечта неописуема, а вот за помощь оХромное спасибо)
trufel 4 марта 2013 в 07:45 0
При запросе в бд выдается такое сообщение:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''cms_user_profiles' ADD 'semya' varchar(1) NOT NULL' at line 1
MySQL 5,5
Димитриус 4 марта 2013 в 07:49 0
вы вот так вставляли? ALTER TABLE 'cms_user_profiles' ADD 'semya' varchar(1) NOT NULL; ?
префикс не меняли у таблиц?
trufel 4 марта 2013 в 07:50 0
Перфикс не менял, вставлял так
trufel 4 марта 2013 в 07:54 0
мб попробывать через структуру добавить в ручную поле семья (phpmyadmin)
Димитриус 4 марта 2013 в 08:01 0
сделайте так: SQL -> вставте запрос -> выполнить
trufel:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''cms_user_profiles' ADD 'semya' varchar(1) NOT NULL' at line 1
эта ошибка говорит, что поле уже создано, зачем второй раз создавать
ой, не то выложил:
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
вот такой запрос выполните, блог подправил

не внимательно прочитал, не кидайте помидорами smile !!!
Димарио 4 марта 2013 в 13:22 0
Огромное спасибо !!! плюс.. Если ещё напишете как в поиск значения добавить или хотя бы что бы значение было мето тегом, вообще цены не будет.
Умные Интернет Разработки 4 марта 2013 в 14:36 +1
да, уже готово, сегодня размещу вечерком для регистрации и поиска
trufel 4 марта 2013 в 14:09 0
Поставил все как надо, запрос сделал в бд, но в профиле не отображается sad приходит нулевое значение (хотя в бд все сохраняется) мб подскажите куда копать? (весь код перепроверил все норм)
trufel 4 марта 2013 в 14:15 0
Пересохранение помогло smile Автору жирный плюс)
Dobriu 4 марта 2013 в 19:38 0
Помогите пожалуйста всё здела как написано , проверял на 100 раз и вот што не показывает .
""
Изображение уменьшено. Щелкните, чтобы увидеть оригинал.

Вот мои файлы
оказывается не внимательно делали: в файле com_content_edit.tpl
добавить забыли
Код PHP:
  1. {literal}
  2. <script type="text/javascript" src="/templates/_default_/js/select.js"></script>
  3. {/literal}
Dobriu 5 марта 2013 в 14:18 0
А причём здесь com_content_edit.tpl ? если в описание com_users_edit_profile.tpl файле надо добавить , у меня там и стои.
irbis 22 июня 2014 в 21:44 0
А никто не пробовал связать профили, например вторая половинка - указывается активная ссылка на другой профиль.
При добавлении половинки, необходимо ответное подтверждение.
Настёна 28 октября 2014 в 07:42 0
Спасибо огромное!!! Все прекрасно встало с первого раза, если делать все внимательно joke