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

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

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

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

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

ищем:
  1. $gender = cmsCore::getSearchVar('gender');
ниже вставляем:
  1. $semya = cmsCore::getSearchVar('semya');
ищем:
  1. // Добавляем в выборку пол, если есть
  2. if($gender){
  3. $model->whereGenderIs($gender);
  4. if($gender == 'm'){
  5. $stext[] = $_LANG['MALE'];
  6. } else {
  7. $stext[] = $_LANG['FEMALE'];
  8. }
  9. }
ниже вставляем:
  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. }
ищем:
  1. $profiles['gender'] = cmsCore::request('gender', 'str');
ниже вставляем:
  1. $profiles['semya'] = cmsCore::request('semya', 'str');
ищем:
  1. $smarty->assign('gender', $gender);
ниже вставляем:
  1. $smarty->assign('semya', $semya);
Открываем components/users/model.php
ищем:
  1. public function whereGenderIs($gender) {
  2. $this->inDB->where("p.gender = '$gender'");
  3. }
ниже вставляем:
  1. public function whereSemyaIs($semya) {
  2. $this->inDB->where("p.semya = '$semya'");
  3. }
ищем (строка 243):
  1. p.city, p.karma, p.imageurl,
ниже вставляем:
  1. p.semya as semya,
ищем (строка 333):
  1. p.gender as gender,
ниже вставляем:
  1. p.semya as semya,
ищем:
  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. }
ниже вставляем:
  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
ищем:
  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.fgender}
  2. <div class="field">
  3. <div class="title">{$LANG.SEX}:</div>
  4. <div class="value">{$usr.fgender}</div>
  5. </div>
  6. {/if}
ниже вставляем
  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
ищем:
  1. $_LANG['SEX'] ='Пол';
ниже вставляем
  1. $_LANG['SEMYA'] ='Семейное положение';
Скачиваем файл: скачать
И заливаем /templates/_default_/js/

Выполним запрос в базу данных:
  1. ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;

Webmoney:
R274715901195
0
omarov omarov 11 лет назад #
Все отлично, большое спасибо. Может кто взяться и в научить меня делать запрос в БД? Не то я это не смогу реализовать(
0
lezginka.ru lezginka.ru 11 лет назад #
запрос в БД
спроси у хостера где phpmyAdmin или myAdmin
как найдешь , поищи там вкладку SQL или Выполнить SQL-запрос(ы) к базе данных, откроет пустое окно-туда копируешь свою мечту - нажимаешь "ок"
Будь внимателен, если не туда нажмешь, люди в черных масках могут приехать...
0
omarov omarov 11 лет назад #
Люди в черных масках свои люди), мечта неописуема, а вот за помощь оХромное спасибо)
0
trufel trufel 11 лет назад #
При запросе в бд выдается такое сообщение:
#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
0
Димитриус Димитриус 11 лет назад #
вы вот так вставляли? ALTER TABLE 'cms_user_profiles' ADD 'semya' varchar(1) NOT NULL; ?
префикс не меняли у таблиц?
0
trufel trufel 11 лет назад #
Перфикс не менял, вставлял так
0
trufel trufel 11 лет назад #
мб попробывать через структуру добавить в ручную поле семья (phpmyadmin)
0
Димитриус Димитриус 11 лет назад #
сделайте так: SQL -> вставте запрос -> выполнить
0
Умные Интернет Разработки Умные Интернет Разработки 11 лет назад #
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
эта ошибка говорит, что поле уже создано, зачем второй раз создавать
0
Умные Интернет Разработки Умные Интернет Разработки 11 лет назад #
ой, не то выложил:
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `semya` varchar(1) NOT NULL;
вот такой запрос выполните, блог подправил

не внимательно прочитал, не кидайте помидорами smile !!!
0
Димарио Димарио 11 лет назад #
Огромное спасибо !!! плюс.. Если ещё напишете как в поиск значения добавить или хотя бы что бы значение было мето тегом, вообще цены не будет.
+1
Умные Интернет Разработки Умные Интернет Разработки 11 лет назад #
да, уже готово, сегодня размещу вечерком для регистрации и поиска
0
trufel trufel 11 лет назад #
Поставил все как надо, запрос сделал в бд, но в профиле не отображается sad приходит нулевое значение (хотя в бд все сохраняется) мб подскажите куда копать? (весь код перепроверил все норм)
0
trufel trufel 11 лет назад #
Пересохранение помогло smile Автору жирный плюс)
0
Dobriu Dobriu 11 лет назад #
Помогите пожалуйста всё здела как написано , проверял на 100 раз и вот што не показывает .
""

Вот мои файлы
0
Умные Интернет Разработки Умные Интернет Разработки 11 лет назад #
оказывается не внимательно делали: в файле com_content_edit.tpl
добавить забыли
Код PHP:
  1. {literal}
  2. <script type="text/javascript" src="/templates/_default_/js/select.js"></script>
  3. {/literal}
0
Dobriu Dobriu 11 лет назад #
А причём здесь com_content_edit.tpl ? если в описание com_users_edit_profile.tpl файле надо добавить , у меня там и стои.
0
irbis irbis 9 лет назад #
А никто не пробовал связать профили, например вторая половинка - указывается активная ссылка на другой профиль.
При добавлении половинки, необходимо ответное подтверждение.
0
Настёна Настёна 9 лет назад #
Спасибо огромное!!! Все прекрасно встало с первого раза, если делать все внимательно joke

Еще от автора

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