Re: Контакт
есть же плагин lightbox, его и приспособьте
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
есть же плагин lightbox, его и приспособьте
и как я понимаю у всех проблемы с отображением писем когда они приходят на вашу доменную почту ?
попробуйте gmail.com или mail.ru, если все ок, то бейте своих хостеров
В том то и дело, что письма у меня приходят на @mail.ru и в кривой кодировке.
Причем выкладывал сайт на двух разных хостингах, без изменений. Значит хостеры здесь не причем.
Переустановил плагин заново. Тоже самое...
У меня был скрипт обратной связи, где было прописано примерно это
Content-type:text/plain; charset=utf-8\r\n
В нашем же плагине я не нашел подобного.
Может кто подскажет куда можно подставить такую строчку в наше плагин?
надо смотреть код отправки почты, поищите там строчку со словом mail, в теле этой функции есть место под метатеги
Update.. найди
$header
 и на следующей строке вставьте это - 
$header .= "Content-type: text/plain; charset=\"utf-8\"";
надо смотреть код отправки почты, поищи там строчку со словом mail, в теле этой функции есть место под метатеги
Это?
if (mail($recipient, $subject, $body, $header)) {
                            Notification::set('success', __('A letter has been sent!', 'contact'));
                            Request::redirect(Page::url());artapp-ds пишет:надо смотреть код отправки почты, поищи там строчку со словом mail, в теле этой функции есть место под метатеги
Это?
if (mail($recipient, $subject, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url());
да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
Спасибо большое, вопрос решен добавлением этой строчки
$header .= "Content-type: text/plain; charset=\"utf-8\"";
artapp-ds пишет:да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
Спасибо большое, вопрос решен добавлением этой строчки
$header .= "Content-type: text/plain; charset=\"utf-8\"";
Все работает?:)
Хм.. У меня не работает.. Пишу всё правильно. Ответ: "Неверный код каптча!".
Что делать?
Добрый день. Тут ( http://forum.template-cms.ru/post/6832/#p6832 ) был описан простой способ прикрепления файлов к сообщению.
Я смог разобраться в форме и языковом файле, но нужно же, чтобы все работало:
    
    
    
    
    
    
    
    
    Что нужно дописать в файле плагина, чтобы все заработало?
С телефоном просто. 
Идете в contact.plugin.php копируйте и вставляйте между имени и емаилом в виде все, что связанно с Name и заменяете name на phone в только что вставленных Вами данных.
Что касается файлов - это сложнее, нужно ставить проверки, ограничения на форматы, заливку и отправку в виде письма. Тут уж лучше попросить, кого конкретно дописать плагин, со всеми проверками.
Хотя согласен Добаление к форме Phone и прикрепление файла типа xlsx docx pdf zip jpg png с ограничением на 5 метров было бы удобным.
Всем здравия!
Уже несколько дней мучаюсь с одной проблемой в форме обратной связи. Добавил в нее поле ввода телефонного номера.
/**
     * Shorcode: {contact recipient="admin@site.org"}
     */ 
    Shortcode::add('contact', 'Contact::_shorcode');
    /**
     * Usage: 
     */
    class Contact {
        public static function _shorcode($attributes) {
            return Contact::form($attributes['recipient']);
        }
        public static function form($recipient) {
            $name  = Request::post('contact_name');
            $phone = Request::post('contact_phone'); 
            $email = Request::post('contact_email');                    
            $body  = Request::post('contact_body'); 
            $errors = array();
            if (Request::post('contact_submit')) {
                if (Security::check(Request::post('csrf'))) {
                    if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') {
                        $errors['contact_empty_fields'] = __('Empty required fields!', 'contact');
                    }
                    if ( ! Valid::email(Request::post('contact_email'))) {
                        $errors['contact_email_not_valid'] = __('Email address is not valid!', 'contact');
                    }
                    if (Option::get('captcha_installed') == 'true' && ! CryptCaptcha::check(Request::post('answer'))) { 
                        $errors['users_captcha_wrong'] = __('Captcha code is wrong', 'users');
                    }
                    if (count($errors) == 0) {
                        $recipient = $recipient;
                        $subject = $name;
                        $header = "From: ". $name . " \r\n";
                        if (mail($recipient, $subject, $body, $header)) {
                            Notification::set('success', __('A letter has been sent!', 'contact'));
                            Request::redirect(Page::url());
                        } else {
                            Notification::set('error', __('A Letter was not sent!', 'contact'));
                        }
                    }
                } else { die('csrf detected!'); }
            }
            return View::factory('contact/views/frontend/form')
                    ->assign('name', $name)
                    ->assign('phone', $phone)
                    ->assign('email', $email)
                    ->assign('body', $body)
                    ->assign('errors', $errors)
                    ->render();            
        }
        public static function display($recipient) {
            echo Contact::form($recipient);          
        }
    }Поле успешно добавилось. Номер можно ввести, и даже попытаться отправить  НО!
 НО!
При заполнении формы данными получаем такой результат:
А при отправке номер прыгает в поле "Имя" и данные из формы не посылаются на мыло. При этом внизу сообщается, что "Пустые поля обязательны для заполнения":
Заранее благодарен за любой совет и помощь!
Вы написали как вы ловите данные, а что вы с ними делаете дальше и что у вас прописано в полях вьюхи известно только вам и ГБ. Какой совет вы хотите получить?

Вы добавили телефон только в класс вывода, и повесили на него проверку ошибок, а также в шаблон вывода.
Однако в том же файле ДО шорткода и класса, вы не добавили соответсвующую верификацию поля ТЕЛЕФОН: его запись и отправку. По аналогии с Именем требовалось копировать ВСЕ возможные функции или строки в файле плагина.
Пробема с формой обратной связи.
Вставляю шорткод в контент на странице второго уровня - /blabla/feedback
После нажатия на кнопку Отправить меня переправляет на страницу /feedback - которой не существует, т.е. не учитывается что страница на втором уровне находится.
Faust
Однако в том же файле ДО шорткода и класса, вы не добавили соответсвующую верификацию поля ТЕЛЕФОН: его запись и отправку. По аналогии с Именем требовалось копировать ВСЕ возможные функции или строки в файле плагина.
До шорткода в этом файле присутствуют только эти строчки:
Я хочу разобраться сам, мне бы просто ткнуть носом, где именно прописывать функции телефона. Код имеющегося файла для меня не очевиден 
Большое спасибо!
if (mail($recipient, $subject, $body, $header)) {
                            Notification::set('success', __('A letter has been sent!', 'contact'));
                            Request::redirect(Page::url());
                        } else {
                            Notification::set('error', __('A Letter was not sent!', 'contact'));
                        }Не вижу здесь телефона
Конкретно в Этом файле требовалось добавить 4 раза:
*** Первый ***
$name  = Request::post('contact_name'); 
$phone  = Request::post('contact_phone');
$email = Request::post('contact_email');                    
$body  = Request::post('contact_body'); *** Второй ***
if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') {
                        $errors['contact_empty_fields'] = __('Empty required fields!', 'contact');
                    }
*** Третий ***
if (mail($recipient, $subject, $phone, $body, $header)) {
                            Notification::set('success', __('A letter has been sent!', 'contact'));
                            Request::redirect(Page::url());
                        } else {
                            Notification::set('error', __('A Letter was not sent!', 'contact'));
                        }*** Четвертый ***
return View::factory('contact/views/frontend/form')
                    ->assign('name', $name)
                    ->assign('phone', $phone)
                    ->assign('email', $email)
                    ->assign('body', $body)
                    ->assign('errors', $errors)
                    ->render(); P.S. А все же 5 сам пропустил
              $recipient = $recipient;
                        $subject = $name;
                        $phone = $phone;
                        $header = "From: ". $name . " \r\n";А без каких-либо проверок реально написать?
Ну телефон вы ввели уже.
if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') {
                        $errors['contact_empty_fields'] = __('Empty required fields!', 'contact');
                    }Если отсюда исключите телефон, то проверка заполненного поля на него не потребуется (теоритически отправиться должен он и без проверки, нужно проверять)
а на счет файлов, очень не советую, без проверок вы открываете дыру в безопасности, зальют через него скрипт, что потом делать будите?
Faust, большое Вам человеческое спасибо. Я все именно так и сделал изначально, символ в символ с написанным Вами.
Но, не работает... "Пустые поля обязательны для заполнения". Причем, если телефонное поле убрать - то все отлично отправляет  . Мне кажется, что поле не проходит проверку по каким-то критериям. Но ограничений по типу вводимых символов в форме нет! В чем тогда дело?..
. Мне кажется, что поле не проходит проверку по каким-то критериям. Но ограничений по типу вводимых символов в форме нет! В чем тогда дело?..
UPD: Нашел свою ошибку в form.view.php, вместо
был
И тем не менее, письмо все равно не отправляет. Просто выдает ошибку.
UPD2: Еще выявлено, что отправка не реагирует на капчу. Можно ввести символы отличные от тех, что сгенерированы - и капча их примет.
UPD3: Капчу исправил, работает. Видимо при копипасте кода где-то кавычку убрало.
На данный момент ситуация следующая: письмо просто не отправляет.
На всякий пожарный вложу коды.
contact.plugin.php
     */
    class Contact {
        public static function _shorcode($attributes) {
            return Contact::form($attributes['recipient']);
        }
        public static function form($recipient) {
            $name  = Request::post('contact_name');
            $phone = Request::post('contact_phone'); 
            $email = Request::post('contact_email');                    
            $body  = Request::post('contact_body'); 
            $errors = array();
            if (Request::post('contact_submit')) {
                if (Security::check(Request::post('csrf'))) {
                    if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') {
                        $errors['contact_empty_fields'] = __('Empty required fields!', 'contact');
                    }
                    if ( ! Valid::email(Request::post('contact_email'))) {
                        $errors['contact_email_not_valid'] = __('Email address is not valid!', 'contact');
                    }
                    if (Option::get('captcha_installed') == 'true' && ! CryptCaptcha::check(Request::post('answer'))) { 
                        $errors['users_captcha_wrong'] = __('Captcha code is wrong', 'users');
                    }
                    if (count($errors) == 0) {
                        $recipient = $recipient;
                        $subject = $name;
                        $header = "From: ". $name . " \r\n";
                        if (mail($recipient, $subject, $phone, $body, $header)) {
                            Notification::set('success', __('A letter has been sent!', 'contact'));
                            Request::redirect(Page::url());
                        } else {
                            Notification::set('error', __('A Letter was not sent!', 'contact'));
                        }
                    }
                } else { die('csrf detected!'); }
            }
            return View::factory('contact/views/frontend/form')
                    ->assign('name', $name)
                    ->assign('phone', $phone)
                    ->assign('email', $email)
                    ->assign('body', $body)
                    ->assign('errors', $errors)
                    ->render();            
        }
        public static function display($recipient) {
            echo Contact::form($recipient);          
        }
    }form.view.php
На данный момент ситуация следующая: письмо просто не отправляет.
Откуда отправляете если с localhost то у вас скорее всего не установлен sendmail и не настроены данные для SMTP. Если с хостинга то там скорее всего отключена функция mail. Попробуйте hostinger.ru у них точно работает.
NBro, с хостинга все отправляется, в случае, если отключить поле ввода телефонного номера. То есть, плагин функционирует нормально до того момента, как в него внедряю ввод телефона 
Форум работает на PunBB, при поддержке Informer Technologies, Inc