Тип поля "номер телефона" ICMS2 + Хак для ICMS1.10.6

5212


Почитал на форуме тему о необходимости поля "номер телефона"..
С этого все и началось laugh


Долго объяснять, я полагаю, не зачем, все как с любым другим типом поля.

Назначение поля — заставить вводить номер телефона в нужном формате +7(999)999-99-99.
В настройках поля можно выбрать режим вывода в шаблон:

При выключенной функции «защита от ботов» — номер выводится в виде обычного строкового поля.

При включенной функции «защита от ботов» — номер выводится в виде набора изображений.

«Защита» от неправильно введенного номера — значения сбрасываются при не заполненности хотя бы 1 цифры.

Загрузите файлы согласно иерархии. Внимание! Если используется собственный шаблон — файлы phone.tpl.php и jquery.maskedinput.min.js должны располагаться в Вашем шаблоне!

Задать маску для ввода можно в файле \templates\ваш шаблон\assets\fields\phone.tpl.php в строке:

Код PHP:
  1. $("#<?php echo $field->id; ?>").mask(" +7(999)999-99-99", {placeholder:"_"});
где +7 -Россия.

Возможность создавать несколько полей «номер телефона» с различным способом вывода в шаблон.

Немного скриншотов:









Благодарности
По просьбам пользователей добавил для 1.10.6



Поле выполнено в виде хака доски объявлений.
Если не боитесь того, что "все слетит" после обновления - можете использовать..
Долго расписывать не стану, изменения коснулись следующих файлов:
\components\board\frontend.php
\languages\ru\components\board.php
\templates\_default_\components\com_board_edit.tpl
\templates\_default_\components\com_board_item.tpl
В коде прокомментированы все внесенные изменения.
Выполнить запрос к БД для создания поля phone
Код PHP:
  1. ALTER TABLE `cms_board_items` ADD `phone` TEXT NOT NULL AFTER `content`
Скачать


Вышла новая версия Маска для поля ICMS2
Виджет "Пол ребенка" | Маска для поля ICMS2
Комментарии (33)
Джехутимери 14 августа 2015 в 01:21 +5
За маску для инпута + :)
Алексей Тимофеев 14 августа 2015 в 03:09 +1
Проверил тут все работает ок +
Единственное заменил false на true, а то после +7(стояло 4 позиции для ввода цифр, а не 3)
Def 15 августа 2015 в 12:30 +1
а так отлично! спасибо за дополнеине!!!
Soul 22 августа 2015 в 15:10 +2
Тип поля переписан полностью! Предложенный ранее вариант не поддерживается и не предоставляется в виду ряда причин. Просьба удалить и не использовать ранее выложенный вариант (использование на свой страх и риск).
Sergey Necr 22 августа 2015 в 17:07 +1
Не решилась проблема с пробелом...


Как было <img src="/upload/phone_img/" .gif=""> так и осталось или это не исправляли?
Soul 22 августа 2015 в 17:21 +2
не сразу понял суть... Вы пробел в маску прописываете? :)
Sergey Necr 22 августа 2015 в 18:41 0
Да, думаю, что +7 (945) 122-2564 выглядит интереснее чем +7(945)122-2564
Soul 22 августа 2015 в 21:54 +2
можно создать gif без названия, можно прописать замену, а можно изменить вид скобок :)
Sergey Necr 23 августа 2015 в 09:18 +1
О скобках я и не подумал, все ж элементарно =)
Благодарю.

Вот мои цифры
Sergon 22 августа 2015 в 18:53 0
а можно его сделать, чтобы при нажатии на картинку происходил набор номера? Ну если с мобильных устройств просматривать, очень удобно бы было.
Sergon 22 августа 2015 в 19:06 0
залил на дефолтный шаблон, маска почему-то не работает...
Sergey Necr 22 августа 2015 в 19:12 +1
На первый вопрос, можно, сделайте href="tel:номер телефона"
На второй, значит что то не так делаете. как видите выше, все работает - скрин с сайта.
Sergon 22 августа 2015 в 19:24 0
это я знаю, а куда вот воткнуть не разберусь)
Soul 22 августа 2015 в 20:21 +2
Загрузите файлы из папки default в папку с вашим шаблоном.
Sergon 22 августа 2015 в 19:22 0
заработало когда поставил в файле phone.tpl.php в пути default, возможно у меня что-то не то. Soul пожалуйста реализуйте как дополнение нажатие для быстрого набора.
Sergey Necr 22 августа 2015 в 20:21 0
В файле system\fields\phone.php найди

Код PHP:
  1.  
  2. public function parse($value){
  3.  
  4.  
  5. if ($this->getOption('is_html_filter')){
  6.  
  7. $config = cmsConfig::getInstance();
  8.  
  9. $images = cmsModel::yamlToArray($value);
  10.  
  11. $html = '<img src=/upload/phone_img/phone.gif> ';
  12.  
  13. $phone = preg_split('//', $value, -1, PREG_SPLIT_NO_EMPTY);
  14. foreach($phone as $number){
  15. $full = isset($paths[$this->getOption('size_full')]) ? $paths[$this->getOption('size_full')] : '';
  16. $html .= '<img src=/upload/phone_img/'.$number.'.gif>';
  17. }
  18. return $html;
  19.  
  20. } else {
  21. return nl2br(htmlspecialchars($value));
  22. }
  23.  
  24. }
  25.  
оно отвечает за вывод номера. Или в нем делай или жди пока кто то сделает.
Sergey Necr 22 августа 2015 в 20:23 +2
Кстати, я так понимаю тогда смысл борьбы с ботами теряется, номер будет в теге Tel.
Soul 22 августа 2015 в 21:59 +3
кстати о тегах... спасибо за напоминание! в phone.tpl.php проверьте 1 строку (исправил в архиве) и приведите ее к виду:
Код PHP:
  1. <?php if ($field->title) { ?><label for="<?php echo $field->id; ?>"></label><?php } ?>
Про ботов... написать алгоритм можно для всего..
lesterkey 15 сентября 2015 в 00:31 0
тестил только сегодня... также не срабатывала маска. помогло замена в пути ( ' ) на ( " ) кавычки. в phone.tpl.php
Ї Ђãîķℳāŋ Ї 4 сентября 2015 в 22:03 +1
Подскажите где взять подобное на 1.10.6 ? Очень надо!
Soul 5 сентября 2015 в 10:07 +2
на 1.10.6 у меня точно нет.. если делать - то только в виде хака...
Ї Ђãîķℳāŋ Ї 5 сентября 2015 в 14:34 +1
Хак тоже пойдёт. Почти все кто подаёт объявления, забывают указывать в текстовом поле номер телефона и цену. Это не дело! Появится хак в долгу не останусь!
Soul 5 сентября 2015 в 21:44 +3
Добавил для ICMS1.10.6. - выполнено в виде хака. "Топорно" но свою функцию выполняет. Код прокомментирован, по тому же принципу можно добавить и другие поля. Допустимые маски можно посмотреть здесь
Ї Ђãîķℳāŋ Ї 6 сентября 2015 в 08:26 +1
Это отличная новость! Огромное спасибо за отзывчивость и оперативность!
Слава 14 сентября 2015 в 14:17 +1
А если у пользователя 6-ти значный номер. А код города 4-х значный?
Soul 14 сентября 2015 в 15:48 +2
А в чем тут проблема? Количество вводимых символов не меняется.
Например:
Челябинск +7 (351) 111-11-11 - вывод в маску +7 (351) 111-11-11
Копейск +7 (35139) 111-11 - вывод в маску +7 (351) 391-11-11

В обоих вариантах номер читаем да и при наборе телефон не требует вводить скобки. :)
Слава 14 сентября 2015 в 16:09 +2
Понятно. Спасибо .
Soul 14 сентября 2015 в 17:01 +2
Чуть по-позже доработаю и выложу обновление.. (пока со временем - беда..)
Def 1 октября 2015 в 23:36 0
почему то в консоли выдает ошибку jquery.bind-first-0.1.min.js:8 Uncaught TypeError: Cannot read property 'keypress' of undefined
Soul 2 октября 2015 в 19:51 +2
выдает ошибку jquery.bind-first-0.1.min.js:
от данной версии в поле уже отказался... (автор плангина не поддерживает свою разработку около 2 лет).. уже переработано в другом направлении, но.... нет "физического времени" для завершении работы.. уж простите... но... - и еще раз - но...... как смогу - поделюсь....
Soul 18 октября 2015 в 12:38 +1
Вышла новая версия Маска для поля ICMS2
Андрей 29 января 2016 в 14:27 0
поставил на 1.10.6 все отлично заработало
еще бы добавить поля

"цена"
"автор"

и кнопку: "использовать данные пользователя?"

и в профиль маску на поле заполнения телефона прикрутить.
Андрей 29 января 2016 в 14:28 0
соответственно, если кнопку нажать, то с профиля чтобы брались соответствующие данные и прописывались в объяву
но! чтобы после этого их можно было бы редактировать на любом этапе работы с объявлением