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

+41
6.11K
Иллюстрация

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


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

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

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

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

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

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

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

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

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

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

Иллюстрация
Иллюстрация
Иллюстрация
Иллюстрация
Иллюстрация
Иллюстрация



Принимаются в виде:
1. Плюс за пост.
2. Плюс в карму.
3. R383456634573 (instantcms.ru)
4. R180804111832 (мой)


По просьбам пользователей добавил для 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
  1. ALTER TABLE `cms_board_items` ADD `phone` TEXT NOT NULL AFTER `content`
Скачать


Вышла новая версия Маска для поля ICMS2
+5
Джехутимери Джехутимери 6 лет назад #
За маску для инпута + :)
+1
Алексей Т Алексей Т 6 лет назад #
Проверил тут все работает ок +
Единственное заменил false на true, а то после +7(стояло 4 позиции для ввода цифр, а не 3)
+1
Def Def 6 лет назад #
а так отлично! спасибо за дополнеине!!!
+2
Soul Soul 6 лет назад #
Тип поля переписан полностью! Предложенный ранее вариант не поддерживается и не предоставляется в виду ряда причин. Просьба удалить и не использовать ранее выложенный вариант (использование на свой страх и риск).
+1
Sergey Necr Sergey Necr 6 лет назад #
Не решилась проблема с пробелом...


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

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

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

В обоих вариантах номер читаем да и при наборе телефон не требует вводить скобки. :)
+2
Слава Слава 6 лет назад #
Понятно. Спасибо .
+2
Soul Soul 6 лет назад #
Чуть по-позже доработаю и выложу обновление.. (пока со временем - беда..)
0
Def Def 6 лет назад #
почему то в консоли выдает ошибку jquery.bind-first-0.1.min.js:8 Uncaught TypeError: Cannot read property 'keypress' of undefined
+2
Soul Soul 6 лет назад #
выдает ошибку jquery.bind-first-0.1.min.js:
от данной версии в поле уже отказался... (автор плангина не поддерживает свою разработку около 2 лет).. уже переработано в другом направлении, но.... нет "физического времени" для завершении работы.. уж простите... но... - и еще раз - но...... как смогу - поделюсь....
+1
Soul Soul 6 лет назад #
Вышла новая версия Маска для поля ICMS2
0
Андрей Андрей 6 лет назад #
поставил на 1.10.6 все отлично заработало
еще бы добавить поля

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

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

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

Еще от автора

Маска для поля ICMS2
Доброго времени суток, уважаемые пользователи instantcms.ru! В продолжение темы Тип поля "номер телефона" ICMS2 + Хак для ICMS1.10.
Виджет "Пол ребенка"
Незамысловатый виджет для icms 2 определения пола ребенка по обновлению крови.
3 простых виджета
3 виджета для ICMS2: курс валют и два прогноза погоды
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.