0
0
0
Форма обратной связи.
  • Вечер добрый, борюсь теперь с формой обратной связи. Можете объяснить на примере даного кода:
    <form action="тут что? «/feedback/send_message»" id="contact-form">
    <p id="formstatus"></p>
    <div>
    <label for="name">Ваше имя: <span class="required">*</span></label>
    <input type="text" value="" name="name" id="name" class="text" />
    </div>
    <div>
    <label for="email">Электропочта: <span class="required">*</span></label>
    <br />
    <input type="text" value="" name="email" id="email" class="text" />
    </div>
    <div>
    <label for="subject">Тема сообщения: <span class="required">*</span></label>
    <br />
    <input type="text" value="" name="subject" id="subject" class="text" />
    </div>
    <div>
    <label for="message">Сообщение: </label>
    <br />
    <textarea cols="25" rows="3" name="message" id="message"></textarea>
    </div>
    <div id="Captcha">
    <label for="Captcha">Ответ:9-5:(кстати вставил стандартную капчу, не отображаются картинки) </label>
    <br />
    <input type="text" name="captcha" id="captcha" />
    </div>
    <div>
    <input type="submit" value="Submit" name="submit" id="kaya_submit" />
    <br />
    </div>
    </form>


    Только если не затруднит поподробнее.
  • Все требования к форме обратной связи перечислены здесь:
    http://www.help-dev.bagira-cms.ru/macroses/feedback/form
  • Вы меня извините конечно. Документацию читал. А в шаблоне feedback/default.tpl Нихрена не понятно,что, куда и откуда берётся?
    Например это:
    $TEMPLATE['field_73'] = <<<END
    <div class="fieldBox" style="width:100%;">
    <div class="fieldTitle">%field.name% %field.zvezd%</div>
    <div class="fieldPole"> %element%</div>
    </div>
    END;
  • И не работает капча. Всё делаю как на исходном сайте!
  • Во первых, это кусок шаблона для макроса %feedback.autoForm()%, а я скидывал ссылку на макрос %feedback.form()%. В нем все просто:


    <div id="feedback">
    <h2>Отзыв о товаре</h2>
    <a href="#" title="" class="cross"></a>

    <form action="%pre_lang%/feedback/send_message" method="post" id="reviewForm">

    <label for="name">Ваше имя</label>
    <input type="text" id="name" name="name" value="%feedback.name%"/>
    <div class="clear"></div>

    <label for="email">Ваш эл.ящик</label>
    <input type="text" id="email" name="email" value="%feedback.email%"/>
    <div class="clear"></div>

    <span>Насколько вы довольны покупкой?</span>
    <div id="reviewRate"></div>
    <div class="clear"></div>

    <h4>Комментарий</h4>
    <p>Напишите, пожалуйста, ваши впечатления от покупки. Подробно опишите все достоинства и недостатки товара. Короткие, несодержательные и отзывы с нецензурными выражениями опубликованы не будут.</p>
    <textarea cols="auto" rows="0" id="content" name="content"></textarea>

    <div class="captcha">
    <label for="random_image">Введите код</label>
    <img src="/core/random_image" id="captcha" alt="captcha" width="120" height="30"/>
    <input id="random_image" maxlength="4" name="random_image"/>
    </div>

    <input type="hidden" name="section_id" value="%page_id%">
    <input type="hidden" name="user_rate" id="rate" value="3">
    <input name="form_id" type="hidden" value="1745">
    <input name="back_url" type="hidden" value="%current_url_pn%">


    <button>Оставить отзыв</button>
    <div class="clear"></div>
    </form>
    </div>

    <script type="text/javascript" src="/css_js/feedback/review.js"></script>


    Есть тупо форма, а в поля подставляются специальные значения. Какие именно и для чего, описано в документации. Можно это файл /template/feedback/review.tpl, можно взять за основу.

    Капча работает, проверял. Не работать она может по двум причинам:
    - удалили файлы шрифтов из папки /css_js/fonts.
    - не установлено расширение GD (очень маловероятно).

  • Чо касается этого куска кода:

    $TEMPLATE['field_73'] = <<<END
    <div class="fieldBox" style="width:100%;">
    <div class="fieldTitle">%field.name% %field.zvezd%</div>
    <div class="fieldPole"> %element%</div>
    </div>
    END;

    Это оформление для отдельного типа поля. 73 - это тип поля в системе. Какое именно это поле, я думаю, можно догадаться, запустив макрос. Это пока не описанно в документации. Шаблон уже полностью готовый, ничего кроме дизайна в нем менять не нужно.

    Для большинства задач хватит функционала макроса %feedback.form()%. Лучше использовать его, а не %feedback.autoForm()%.
  • Спасибо, действительно удалил файлшрифтов из css_j. Скажите, а если яперенесу в другую папку шрифты, где поправить путь к ним?
  • Нашел где поменять пути ../modules/core/random_image.php
    Сделал, капча появилась, взял за основу Ваш стандартный шаблон: /template/feedback/review.tpl
    Теперь после отправки сообщения вылетает страничка такого содержания: {"error":0,"data":"\u041c\u044b \u0432\u0430\u0441 \u043d\u0430\u0439\u0434\u0451\u043c"}

    При этом сообщения в админку --> обратная связь, поступают.
  • Это ответ в формате json. Используется JS для обработки ответа при реализации отправки формы без перезагрузки.

    Если нужна обычная логика нужно вместо вывода json в файле /modules/feedback/controller.php добавить редиректы. В будущем планируем сделать автоопределение способа ответа.

    Сейчас тебе проще всего реализовать отправку формы без перезагрузки. Пример реализации так же есть на демо-сайте, в файле /css_js/feedback/review.js
  • Щас попробую, никуда не убегайте)))
  • Вот просто вставил всё с шаблона review.tpl. в свой и ничего. Вот ссылка можете попробывать: http://rstroy.biz/contacts
  • Поставил уже %feedback.autoForm()% с моим ID формы и тоже самое.

    Сообщения в админку приходят и на почту, а ошибка всё равно вылетает.
    Сломал уже голову и свои кривые руки над этой задачкой.
  • error 0 говорит о том что никакой ошибки нету...

    верните обратно %feedback.form()%
    в папке /css_js/feedback/ есть файл faq.js подключите его
    (без библиотеки jquery он работать не будет)
    вначале идут условия валидации формы, скорее всего там будет парочка лишних, просто по аналогии оставьте только проверку тех полей которую вам нужно,
    а последний метод $.post('/feedback/send_message', $("#faqForm").serialize(), function(data) {
    отвечает за отправку данных и получения ответа
    #faqForm - !!!html id!!! вашей формы
  • ах да еще забыл, валидация поля email проверяется regexp'ом

    else if (!reEmail.test($("#email").val())) {
    alert( 'E-mail указан в неправильном формате.' );
    $('#email').focus();


    reEmail - regexp

    он инициализируется в другом js файле
    просто добавьте такую строку в faq.js

    var reEmail = /^([a-z0-9\.\-\_])+\@(([a-zA-Z0-9\-\_])+\.)+([a-zA-Z0-9]{2,6})+$/i;
  • Ничего не понял, но попробую. Потом. Если захочу. Спасибо.
  • unlike777 все правильно объяснил. Евгений, возможно тебе нужно сначала подучить JS, Json и JQuery. Все станет намного проще)))
  • А как нибудь без JQuery обойтись нельзя? Чтобы после отправки сообщения перенаправляло на страничку в которой было бы написано "Ваше сообщение успешно отправлено"
  • Тяжко без багажа знаний. Решил так: взал за основу (faq.tpl и faq.js) подстроил под свою форму и у себя в css сменил название div, и class элементов на #faqForm

    Иначе не работало нивкакую. Хотя и валидаторе faq.js поставлял свой div id="contact-form"
    Во общем не судите строго. Можно как-ьл в будущем попроще сделать? Или проще некуда?)
  • Ну, в итоге получилось именно то, что требовалось.

    Проще некуда, можно просто по другому сделать. Сделаем и по другому.
  • И всё-таки можно совет на будущее получить. Почему когда я в "валидатор" faq.js подставляю "div id" своей формы, не работает ничего? А с Вашей всё норм? Может где-то упустил? И ещё вопрос? С какого скрипта выводится сообщение после отправки формы (Сообщение успешно отправлено! Спасибо.)
  • Почему когда я в "валидатор" faq.js подставляю "div id" своей формы, не работает ничего?

    Не единой догадки, надо бы код посмотреть, скорей всего что-то упустил.

    С какого скрипта выводится сообщение после отправки формы (Сообщение успешно отправлено!

    Вот здесь. Текст сообщения приходит от движка.


    if (data.error == 0) {
    alert(data.data);

    $('.cross').click();
    $('#random_image, #content').val('');
    $('#captcha').attr('src', '/core/random_image/'+(Math.random()*10000).toFixed(0));
    }


    Чтобы изменить текст этого сообщения, нужно зайти в редактирование формы в модуле "Обратная связь" и отредактировать поле "Сообщение для пользователя при отправке формы".
Эта тема была закрыта.
Все темы

Привет, незнакомец!

Похоже, вы новенький! Чтобы пообщаться с нами, кликните на одну из кнопок ниже :)

Войти с Facebook Войти с помощью OpenID Войти с помощью Twitter\a Вход через vkontakte.ru