Добавление поля skype в контактах и при регистрации

+28
3.91K
Иллюстрация
Сегодня расскажу как добавить поле skype в контактах и при регистрации

1) добавляем поле skype после поля icq в таблицу cms_users
  1. ALTER TABLE `cms_users` ADD `skype` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `icq` ;
2) в файле /components/users/frontend.php после
  1. $users['icq'] = preg_replace('/([^0-9])/ui', '', cmsCore::request('icq', 'str'));
добавить
  1. $users['skype'] = preg_replace('/([^a-z0-9\._\-])/ui', '', cmsCore::request('skype', 'str'));
3) далее в файл model.php
после
  1. u.icq,
добавить
  1. u.skype,
в двух местах

4)далее в шаблоне com_users_profile.tpl после
  1. {if $usr.showicq && $usr.icq}
  2. <div class="field">
  3. <div class="title">ICQ:</div>
  4. <div class="value">{$usr.icq}</div>
  5. </div>
  6. {/if}
добавляем
  1. <div class="field">
  2. <div class="title">Skype:</div>
  3. <div class="value">{$usr.skype}</div>
  4. </div>
5) и в шаблоне com_users_edit_profile.tpl после
  1. <tr>
  2.  
  3. <td valign="top"><strong>{$LANG.NUMBER_ICQ} :</strong></td>
  4.  
  5. <td valign="top"><input name="icq" class="text-input" type="text" id="icq" style="width:300px" value="{$usr.icq}"/></td>
  6.  
  7. </tr>
добавить
  1. <tr>
  2.  
  3. <td valign="top"><strong>Skype :</strong></td>
  4.  
  5. <td valign="top"><input name="skype" class="text-input" type="text" id="skype" style="width:300px" value="{$usr.skype}"/></td>
  6.  
  7. </tr>
Вот и все, в профиле теперь можно указать skype.
Но и теперь можно ввести его и при регистрации
1) в файле com_registration.tpl после
  1. {if $cfg.ask_icq}
  2. <tr>
  3. <td valign="top" class=""><strong>ICQ:</strong></td>
  4. <td valign="top" class="">
  5. <input name="icq" type="text" class="text-input" id="icq" value="{$item.icq}" style="width:300px"/>
  6. </td>
  7. </tr>
  8. {/if}
добавляем
  1. {if $cfg.ask_skype}
  2. <tr>
  3. <td valign="top" class=""><strong>Skype:</strong></td>
  4. <td valign="top" class="">
  5. <input name="skype" type="text" class="text-input" id="skype" value="{$item.skype}" style="width:300px"/>
  6. </td>
  7. </tr>
  8. {/if}
2) в файле /components/registration/frontend.php
находим
  1. $item['icq'] = preg_replace('/([^0-9])/ui', '', cmsCore::request('icq', 'str', ''));
и добавляем ниже
  1. $item['skype'] = preg_replace('/([^a-z0-9\._\-])/ui', '', cmsCore::request('skype', 'str', ''));
3) в файле model.php
находим
  1. 'ask_icq' => 1,
и добавляем ниже
  1. 'ask_skype' => 1,
4) в файле /admin/components/registration/backend.php
находим
  1. $cfg['ask_icq'] = cmsCore::request('ask_icq', 'int');
и ниже добавляем
  1. $cfg['ask_skype'] = cmsCore::request('ask_skype', 'int');
5) в этом же файле /admin/components/registration/backend.php находим
  1. <tr>
  2. <td><strong>Запрашивать ICQ при регистрации:</strong> </td>
  3. <td>
  4. <label><input name="ask_icq" type="radio" value="1" <?php if ($cfg['ask_icq']) { echo 'checked="checked"'; } ?>/> Да</label>
  5. <label><input name="ask_icq" type="radio" value="0" <?php if (!$cfg['ask_icq']) { echo 'checked="checked"'; } ?>/> Нет</label>
  6. </td>
  7. </tr>
и ниже добавляем
  1. <tr>
  2. <td><strong>Запрашивать skype при регистрации:</strong> </td>
  3. <td>
  4. <label><input name="ask_skype" type="radio" value="1" <?php if ($cfg['ask_skype']) { echo 'checked="checked"'; } ?>/> Да</label>
  5. <label><input name="ask_skype" type="radio" value="0" <?php if (!$cfg['ask_skype']) { echo 'checked="checked"'; } ?>/> Нет</label>
  6. </td>
  7. </tr>
Вот и все. Говорим Спасибо lokanaft'у за помощь.
+9
Петр Петр 11 лет назад #
в следующий раз могу рассказать подробнее, как добавить в доску объявлений поля цена, а так же вывод их на страницу категории + сортировка по цене. А также как вывести skype, телефон и прочее в страницу объявления из профиля пользователя.
0
nedoriko nedoriko 11 лет назад #
ждемсссс.
а также ждем данное чудо в виде плагина)))
+1
Петр Петр 11 лет назад #
в виде плагина врядли. так как вообще ноль в php.
в виде "это заменить на это, тут добавить это" я могу.
0
afinskiy afinskiy 11 лет назад #
Ждем!
+6
alexbabo alexbabo 11 лет назад #
За работу плюс.Насколько я знаю, того жэ результата можно добиться зайдя в админку, в конструктор форм и добавить новое поле Skyoe в анкету пользователя, это поле надо установить обязательным и оно будет показываться при регистрации и в профиле пользователя.
0
alexbabo alexbabo 11 лет назад #
Начиная с версии 1.10
0
Петр Петр 11 лет назад #
где ж вы раньше то были? smile ахахха, проверил на другом сайте, действительно работает! Минут 10 я ржал :))))
0
Петр Петр 11 лет назад #
тут один только момент, если тебе нужно чтобы оно было не обязательно - то да :)))
0
wportal wportal 11 лет назад #
исправьте п.4 на /admin/components/registration/backend.php
0
wportal wportal 11 лет назад #
и в п.5
0
Sonat Sonat 11 лет назад #
Погодите, есть же для этого конструктор форм. Зачем городить огород и править код системы?
0
Sonat Sonat 11 лет назад #
Вот только что проверил на локалхосте, все делается быстро и просто.
Спойлер
0
Петр Петр 11 лет назад #
вы выше комментарии читаете?
0
Петр Петр 11 лет назад #
например у меня все это делалось для вывода контактов в объявлении.
через конструктор форм было бы сложнее считать информацию.
0
Слава Слава 11 лет назад #
Согласен. Можно так же сделать значок рядом, при клике на который, открывается клиент. А в форме этого не сделаешь.
0
Keep Keep 10 лет назад #
Подскажите пожалуйста как добавить Приватность на новое поле skype в настройках как у ICQ ?
+1
Петр Петр 10 лет назад #
нужно добавлять новую переменную например - $usr.showskype, по аналогии с $usr.showicq
+1
Петр Петр 10 лет назад #
распишу подробнее:
1) сначала добавляем новое поле в phpmyadmin
Код PHP:
  1. ALTER TABLE `cms_users_profiles` ADD `showskype` TINYINT( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT `0` AFTER `showicq` ;
2) в файле /components/users/frontend.php
после строки
Код PHP:
  1. $profiles['showicq'] = cmsCore::request('showicq', 'int');
добавляем
Код PHP:
  1. $profiles['showskype'] = cmsCore::request('showskype', 'int');
3)в файле /components/users/model.php
после
Код PHP:
  1. p.showicq,
добавляем
Код PHP:
  1. p.showskype,
4)ну и наконец в файле /templates/_default_/components/com_users_profile.tpl
вместо
Код PHP:
  1. {if $usr.skype}
вставляем
Код PHP:
  1. {if $usr.showskype && $usr.skype}
+1
Петр Петр 10 лет назад #
не проверял, но должно работать
0
Андрей Андрей 10 лет назад #
на запрос в базе выдает ошибку

#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 'CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT `0` AFTER `showicq`' at line 1
0
Петр Петр 10 лет назад #
с кавычками немного не то
вот так верно
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `showskype` TINYINT( 1 ) NOT NULL DEFAULT '1' AFTER `showicq` ;
0
Андрей Андрей 10 лет назад #
благодарю, сработало
+1
Петр Петр 10 лет назад #
А, еще забыл, в файле шаблона com_users_edit_profile.tpl, после
Код PHP:
  1. <tr>
  2. <td valign="top"><strong>{$LANG.SHOW_ICQ}:</strong></td>
  3. <td valign="top">
  4. <label><input name="showicq" type="radio" value="1" {if $usr.showicq}checked{/if}/> {$LANG.YES} </label>
  5. <label><input name="showicq" type="radio" value="0" {if !$usr.showicq}checked{/if}/> {$LANG.NO} </label>
  6. </td>
  7. </tr>
добавить
Код PHP:
  1. <tr>
  2. <td valign="top"><strong>Показывать skype?:</strong></td>
  3. <td valign="top">
  4. <label><input name="showskype" type="radio" value="1" {if $usr.showskype}checked{/if}/> {$LANG.YES} </label>
  5. <label><input name="showskype" type="radio" value="0" {if !$usr.showskype}checked{/if}/> {$LANG.NO} </label>
  6. </td>
  7. </tr>
+1
Keep Keep 10 лет назад #
Большое вам спасибо, всё получилось, также создал поле phone.

Еще от автора

Сoin slider - легконастраиваемый слайдер
Доброе утро. Сегодня мы с вами установим модуль слайдера.
Немного SEO в доску объявлений
Подросла карма, можно и блог теперь создать. Теперь к делу - заметил что в объявлениях не совсем правильный description, т.е. description=title
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.