Joomla 1.5 Обязательные поля в стандарной форме обратной связи контакты

Тема в разделе "Программирование", создана пользователем vlmeh, 10.09.2010.

  1. Offline

    vlmeh Недавно здесь

    Регистрация:
    10.09.2010
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Как сделать все поля обязательными для заполнения (или, соответственно, убрать эту обязательность) в стандартной форме контактов.
    Какие файлы редактировать, и где что за что отвечает?
     
  2.  
  3. Andrey
    Offline

    Andrey Недавно здесь

    Регистрация:
    27.12.2005
    Сообщения:
    77
    Симпатии:
    4
    Пол:
    Мужской
    Берете файл components/com_contact/views/contact/tmpl/default_form.php и копируюте в templates/YOU_TEMPALTE/html/com_contact/contact/. Далее открываете этот файл и делаете нужные изменения. Правда эти права на обязательность будут работать только при включенном javascript. Если нужно более, то тут нужны знания php.
     
  4. Offline

    vlmeh Недавно здесь

    Регистрация:
    10.09.2010
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Оказалось все довольно таки просто...

    В результате глубоких научных исследований Joomla и археологических раскопок интернета вот что мне удалось нарыть:

    Вначале давайте разберемся где, что и за что отвечает в данном компоненте:
    Форма отправки сообщений - компонент контакты

    1. Папка: components/com_contact/views/contact/tmpl/
    - default.php - разметка вывода конкретного контакта и подключение формы обратной связи на этот контакт
    - default_address.php - разметка вывода адресных данных контакта
    - default_form.php - разметка вывода формы обратной связи

    2. Папка: components/com_contact/views/contact/
    - view.html.php - генерирует ввывод страницы контакты и подключает validate.js (JHTML::_('behavior.formvalidation'))

    3. Папка: components/com_contact/
    - controller.php - генерирует вывод формы (function display())
    - делает проверку вводимых данных по заблокированным e-mail, тексту и т.д. указанных в админке (function _validateInputs())
    - осуществляет отправку данных (function submit())
    - формирует переменную для вывода системного сообщения (function submit()... $msg = JText::_( 'Thank you for your e-mail'))
    - формирует переменную для перенаправления на страницу после отправки сообщения (function submit()... $link = JRoute::_('index.php?option=com_contact&view=contact&id='.$contact->slug.'&catid='.$contact->catslug, false))

    4. Файлы:
    - language/ru-RU/ru-RU.com_contact.ini - надписи и сообщения на русском
    - media/system/js/validate.js - валидатор форм
    - libraries/joomla/html/html/behavior.php - подключает системные скрипты с помощью класса behavior, в данном случае validate.js (JHTML::_('behavior.formvalidation'))
    - templates/шаблон/css/template.css - таблица стилей


    Как добавить поле в форму обратной связи подробно описано сдесь http://joomlaforum.ru/index.php/topic,121453.msg664564.html#msg664564

    Но нам надо сделать это поле обязательным для заполнения. Сделать это довольно просто - присвоить полю класс 'required'
    Код (CODE):
    1. <input type="text" name="tel" id="contact_tel" size="30" class="inputbox [color=red][u][b]required[/b][/u][/color]"  />


    Как это работает:
    При выводе страницы контакты подключается файл validate.js, который отвечает за правильность заполнения полей формы.
    При внимательном рассмотрении этого файла можно увидеть, что в одной из функций он находит поля с классом 'required' и проверяет их, при пустом значении этого поля или неправильном заполнении (для поля e-mail) и т.д. предотвращает отправку данных с формы, перекрашивает текстовую метку в красный цвет и выводит сообщение.

    Т.е. все поля формы с классом 'required' проходят проверку в файле validate.js.

    Соответственно, что бы убрать обязательность поля нужно просто удалить этот класс в файле default_form.php

    Вот и все, приятного программирования.
     

Поделиться этой страницей

Загрузка...