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

1529
""
Сегодня расскажу как добавить поле skype в контактах и при регистрации

1) добавляем поле skype после поля icq в таблицу cms_users
Код PHP:
  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 после
Код PHP:
  1. $users['icq'] = preg_replace('/([^0-9])/ui', '', cmsCore::request('icq', 'str'));
добавить
Код PHP:
  1. $users['skype'] = preg_replace('/([^a-z0-9\._\-])/ui', '', cmsCore::request('skype', 'str'));
3) далее в файл model.php
после
Код PHP:
  1. u.icq,
добавить
Код PHP:
  1. u.skype,
в двух местах

4)далее в шаблоне com_users_profile.tpl после
Код PHP:
  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}
добавляем
Код PHP:
  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 после
Код PHP:
  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>
добавить
Код PHP:
  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 после
Код PHP:
  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}
добавляем
Код PHP:
  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
находим
Код PHP:
  1. $item['icq'] = preg_replace('/([^0-9])/ui', '', cmsCore::request('icq', 'str', ''));
и добавляем ниже
Код PHP:
  1. $item['skype'] = preg_replace('/([^a-z0-9\._\-])/ui', '', cmsCore::request('skype', 'str', ''));
3) в файле model.php
находим
Код PHP:
  1. 'ask_icq' => 1,
и добавляем ниже
Код PHP:
  1. 'ask_skype' => 1,
4) в файле /admin/components/registration/backend.php
находим
Код PHP:
  1. $cfg['ask_icq'] = cmsCore::request('ask_icq', 'int');
и ниже добавляем
Код PHP:
  1. $cfg['ask_skype'] = cmsCore::request('ask_skype', 'int');
5) в этом же файле /admin/components/registration/backend.php находим
Код 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>
и ниже добавляем
Код PHP:
  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'у за помощь.
Немного SEO в доску объявлений | Сoin slider - легконастраиваемый слайдер
Комментарии (24)
trOid 9 сентября 2013 в 10:57 +9
small user social cms
в следующий раз могу рассказать подробнее, как добавить в доску объявлений поля цена, а так же вывод их на страницу категории + сортировка по цене. А также как вывести skype, телефон и прочее в страницу объявления из профиля пользователя.
nedoriko 9 сентября 2013 в 17:26 0
small user social cms
ждемсссс.
а также ждем данное чудо в виде плагина)))
trOid 11 сентября 2013 в 04:20 +1
small user social cms
в виде плагина врядли. так как вообще ноль в php.
в виде "это заменить на это, тут добавить это" я могу.
afinskiy 10 сентября 2013 в 18:27 0
small user social cms
Ждем!
alexbabo 9 сентября 2013 в 11:16 +6
small user social cms
За работу плюс.Насколько я знаю, того жэ результата можно добиться зайдя в админку, в конструктор форм и добавить новое поле Skyoe в анкету пользователя, это поле надо установить обязательным и оно будет показываться при регистрации и в профиле пользователя.
alexbabo 9 сентября 2013 в 11:17 0
small user social cms
Начиная с версии 1.10
trOid 9 сентября 2013 в 11:42 0
small user social cms
где ж вы раньше то были? smile ахахха, проверил на другом сайте, действительно работает! Минут 10 я ржал :))))
trOid 9 сентября 2013 в 11:43 0
small user social cms
тут один только момент, если тебе нужно чтобы оно было не обязательно - то да :)))
wportal 9 сентября 2013 в 13:26 0
small user social cms
исправьте п.4 на /admin/components/registration/backend.php
wportal 9 сентября 2013 в 13:29 0
small user social cms
и в п.5
Sonat 9 сентября 2013 в 14:44 0
small user social cms
Погодите, есть же для этого конструктор форм. Зачем городить огород и править код системы?
Sonat 9 сентября 2013 в 14:54 0
small user social cms
Вот только что проверил на локалхосте, все делается быстро и просто.
Спойлер
trOid 9 сентября 2013 в 15:28 0
small user social cms
вы выше комментарии читаете?
trOid 9 сентября 2013 в 15:43 0
small user social cms
например у меня все это делалось для вывода контактов в объявлении.
через конструктор форм было бы сложнее считать информацию.
Слава 9 сентября 2013 в 22:24 0
small user social cms
Согласен. Можно так же сделать значок рядом, при клике на который, открывается клиент. А в форме этого не сделаешь.
Keep 21 января 2014 в 17:54 0
small user social cms
Подскажите пожалуйста как добавить Приватность на новое поле skype в настройках как у ICQ ?
trOid 22 января 2014 в 03:51 +1
small user social cms
нужно добавлять новую переменную например - $usr.showskype, по аналогии с $usr.showicq
trOid 22 января 2014 в 04:07 +1
small user social cms
распишу подробнее:
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}
trOid 22 января 2014 в 04:08 +1
small user social cms
не проверял, но должно работать
Андрей 12 февраля 2014 в 12:22 0
small user social cms
на запрос в базе выдает ошибку

#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
trOid 12 февраля 2014 в 16:40 0
small user social cms
с кавычками немного не то
вот так верно
Код PHP:
  1. ALTER TABLE `cms_user_profiles` ADD `showskype` TINYINT( 1 ) NOT NULL DEFAULT '1' AFTER `showicq` ;
Андрей 12 февраля 2014 в 16:46 0
small user social cms
благодарю, сработало
trOid 22 января 2014 в 04:11 +1
small user social cms
А, еще забыл, в файле шаблона 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>
Keep 22 января 2014 в 06:03 +1
small user social cms
Большое вам спасибо, всё получилось, также создал поле phone.