Номер телефона для 1.10.6

#1 30 января 2016 в 10:25
Очень часто обращаются пользователи с вопросами адаптации поля "номер телефона" со второй ветки на первую.
Если нужно — решение в виде хака. (хак для доски объявлений
хак для профиля и изменения для хака доски объявлений (создание единого поля с маской)
если еще не загружен jquery.maskedinput.min.js — загружаем в /includes/jquery/.
в файл шаблона \templates\_ВАШ_ШАБЛОН_\template.php перед закрывающимся тегом </body> добавьте:
  1. <script src="/includes/jquery/jquery.maskedinput.min.js" type="text/javascript" ></script>
  2. <script type="text/javascript">
  3. jQuery(function($){
  4. $("input[name='phone']).mask('+7(999)999-99-99', {placeholder:"_"});
  5. });
  6. </script>
в файле \components\users\frontend.php
замените строку 285
  1. $users['phone'] = cmsCore::request('phone', 'int', 0);
на
  1. $users['phone'] = cmsCore::request('phone', 'str');
в файле \templates\_default_\components\com_users_profile.tpl.php
строку 246
  1. <div class="value">+{$usr.phone}</div>
приведите к виду
  1. <div class="value">{$usr.phone}</div>
увеличьте в таблице cms_users значение phone с varchar(12) на varchar(20)

если используете хак доски объявлений, в \templates\_ВАШ_ШАБЛОН_\components\com_board_edit.tpl.php
удалите строки
  1. <!-- Подключаем плагин и задаем маску -->
  2. <script src="/includes/jquery/jquery.maskedinput.min.js"></script>
  3.  
  4. <script type="text/javascript">
  5. jQuery(function($){
  6. $.mask.definitions['9']='[0-9]';
  7. $('#phone').mask('+7(999)999-99-99');
  8. });
  9. </script>
  10. <!-- Подключаем плагин и задаем маску -->
  11.  
замените блок поля <!-- Выводим поле номер телефона для заполнения-->
на
  1. <!-- Выводим поле номер телефона для заполнения-->
  2. <tr id="before_form">
  3. <td valign="top">
  4. <span>{$LANG.TEXT_PHONE}:</span>
  5. </td>
  6. <td height="100" valign="top">
  7. <input name="phone" class="text-input" style="width:400px" rows="1" id="phone">{$item.phone|escape:'html'}
  8. </td>
  9. </tr>
  10. <!-- Выводим поле номер телефона для заполнения-->
Теперь для всех полей input с name='phone' будет подключаться маска.

Предвкушая вопросы по релизу обновления поля для второй ветки — скоро. smile
#2 30 января 2016 в 11:18
вот это просто супер!!!!!!!!!!!!!!!!!!!!!!
благодарю! пошел внедрять внедреж!
#3 30 января 2016 в 21:39
все сделал по инструкции… не заработало
и, наверное, правильней будет

$users['phone'] = cmsCore::request('phone', 'str', '');


и как сделать маску +7пробел(ХХХ)пробелХХХпробелХХпробелХХ?
#4 31 января 2016 в 07:12

все сделал по инструкции… не заработало

Blackman-st
перепроверил еще раз — у меня работает.
P.S. увеличьте в таблице cms_users значение phone с varchar(12) на varchar(20)

как сделать маску +7пробел(ХХХ)пробелХХХпробелХХпробелХХ

Blackman-st
  1. $("input[id='phone']").mask('+7 (999) 999 99 99', {placeholder:"_"});

наверное, правильней будет
$users['phone'] = cmsCore::request('phone', 'str', '');

Blackman-st
да
  1. $users['phone'] = cmsCore::request('phone', 'str');
Первый пост поправил.
P.S.

не заработало

Blackman-st
Можно подробнее — не выводится маска, не сохраняет или обрезает значение..?
#5 31 января 2016 в 08:49

поля пустые остаются

Blackman-st
Где? в доске объявлений? Запрос на добавление таблицы в базу сделали?
  1. ALTER TABLE `cms_board_items` ADD `phone` TEXT NOT NULL AFTER `content`
#6 31 января 2016 в 09:16
все заработало, скорее всего из-за длины поля косяк был...
благодарю!

осталось решить вопрос с полем цена и переносом контактов из профиля в форму подачи объявления (через чекбокс — использовать контакты пользователя да/нет)

и еще момент, исправил запись на
  1.  
  2. <input name="phone" class="text-input" style="width:400px" rows="1" id="phone" value="{$item.phone|escape:'html'}"/>
  3.  
показалось, что так тоже несколько корректней, ну, или привычней...

и, кстати, так же в файле com_users_edit_profile.tpl
нужно заменить строчку редактирования поля телефона на такую-же.
#7 31 января 2016 в 12:06
переделал под 1.10.3
странность заметил: редактируешь профиль, все работает, телефон сохраняет...
заходишь обратно в редактирование профиля — строчка пустая
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.