0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 1564 Просмотров
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Добрый день.

Как можно отправить данные формы на почту через Joomla?
Хостинг бесплатный и не поддерживает функцию mail
Форма вставлена в сам шаблон

Код
					<form class="m1-form" action="post.php" method="post">
<h2>ЗАКАЖИ СЕЙЧАС</h2>
                        <input type="text" name="name" placeholder="Введите Имя" required="">
                        <input type="text" name="phone" placeholder="Введите телефон" required="">
                        <button type="submit" class="buy">Заказать со скидкой</button>
                        <p>
+ получить клатч в подарок
</p>
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="timeShift" id="timeShift" value="" />
<input type="hidden" name="hash" id="hash" value="1f601578dd4f2bb5850260b2306e076ef9c9cdbd" /> <span style="display:none" id="goodPrice"></span>
<span style="display:none" id="fullPrice"></span>
<span style="display:none" id="CountryId">175</span>
<input type="hidden" id="goodArticle" name="goodArticle" value="" />
                    </form>

В корне сайта создал файл post.php ДЛЯ ПРОВЕРКИ ОТПРАВКИ со следующим содержанием:
Код
<?php

//получаем настройки сайта
$config = & JFactory::getConfig();
//Получаем экземпляр класса JMail
$mailer = JFactory::getMailer();
//Указываем что письмо будет в формате HTML
$mailer->IsHTML( true );
//Указываем отправителя письма
$mailer->setSender( array( $config->get( 'config.mailfrom' ), $config->get( 'config.fromname' ) ) );
//указываем получателя письма
$mailer->addRecipient( 'admin@site.ru' );
//Добавляем текст письма
$mailer->setBody('<h1>Hello User!</h1>');
//Отправляем письмо
$mailer->send();
?>

В итоге ошибка:
Fatal error: Uncaught Error: Class 'JFactory' not found in /home/s/s25845m/s25845m.beget.tech/public_html/post.php:4 Stack trace: #0 {main} thrown in /home/s/s25845m/s25845m.beget.tech/public_html/post.php on line 4
« Последнее редактирование: 09.10.2017, 13:05:31 от kompado »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
заплатить 100 рублей за месяц и не извращаться )
либо на каком-то своем платном хостинге положить файлик-отправщик, которому из формы передавать данные.
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
заплатить 100 рублей за месяц и не извращаться )
либо на каком-то своем платном хостинге положить файлик-отправщик, которому из формы передавать данные.

На платный хостинг из-за одной функции))
Сама Joomla отправляет почту через установленные компоненты (через SMTP)
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Несколько месяцев назад как раз писал скрипт для отправки данных через движок, проверял на beget, все работает, если хочешь, скину.
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Несколько месяцев назад как раз писал скрипт для отправки данных через движок, проверял на beget, все работает, если хочешь, скину.

Скинь, пожалуйста
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Вот сайт:
http://xn--e1aocufo.xn--p1ai/kontakty/napisat-nam
Хостится на beget на бесплатном тарифе, есть самописная рабочая форма обратной связи. На движке должен быть корректно настроен SMTP, так как отправки идет посредством функционала движка.

Вот скрипт отправки send.php:
Код
<?php

$imya = $_POST['imya'];
$imya = htmlspecialchars($imya);
$imya = urldecode($imya);
$imya = trim($imya);

$telefon = $_POST['telefon'];
$telefon = htmlspecialchars($telefon);
$telefon = urldecode($telefon);
$telefon = trim($telefon);

$pochta = $_POST['pochta'];
$pochta = htmlspecialchars($pochta);
$pochta = urldecode($pochta);
$pochta = trim($pochta);

$tekst = $_POST['tekst'];
$tekst = htmlspecialchars($tekst);
$tekst = urldecode($tekst);
$tekst = trim($tekst);


define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);

// Load system defines
if (file_exists(JPATH_BASE . '/defines.php'))
{
    require_once JPATH_BASE . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';


//получаем настройки сайта
$config = & JFactory::getConfig();
//Получаем экземпляр класса JMail
$mailer = JFactory::getMailer();
//Указываем что письмо будет в формате HTML
$mailer->IsHTML( true );
//Указываем отправителя письма
$mailer->setSender( array( 'centum174@gmail.com', 'CENTUM ' ) );
//указываем получателя письма
$mailer->addRecipient( 'centum174@gmail.com' );
//Добавляем текст письма
$mailer->setSubject("+$telefon $imya");
// Добавояем тему письма
$mailer->setBody( "Электронный адрес: $pochta <br /> Сообщение: $tekst" );
//Отправляем письмо
$mailer->send();
if ($send !== true) {
header("Location: index.php/home/uspeh");
} else {
header("Location: index.php/home/neudacha");
}
?>

Вот форма:
Код
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script src="/jquery.maskedinput.min.js"></script>
<script>
$(function(){
  $("#phone").mask("+7 (999) 999-99-99");
});
</script>
<script type="text/javascript">
   function agreeForm(f) {
    // Если поставлен флажок, снимаем блокирование кнопки
    if (f.agree.checked) f.submit.disabled = 0
    // В противном случае вновь блокируем кнопку
    else f.submit.disabled = 1
   }
</script>

<div data-uk-scrollspy="{cls:'uk-animation-slide-top'}" style="display: table; margin: 0 auto;">
<h1 style="text-align: center; text-shadow: white 0px 0px 10px; margin-top: 0px; margin-bottom: 50px;">Написать нам</h1>
<form action="/send.php" method="post" class="uk-form" data-uk-margin="{cls:'uk-margin-top'}">
<input maxlength="20" style="border-color: #f00;" name="imya" class="uk-form-width-medium" type="text" placeholder="Ваше имя" required /><br />
<input style="border-color: #f00;" name="telefon" id="phone" class="uk-form-width-medium" type="tel" placeholder="Контактный телефон" required /><br />
<input style="border-color: #aaa;" name="pochta" class="uk-form-width-medium" type="email" placeholder="Электронная почта" /><br />
<textarea style="border-color: #4fd389; height: 200px;" name="tekst" class="uk-form-width-large" type="text" placeholder="Сообщение" required /></textarea><br />
<input type="checkbox" name="agree" onclick="agreeForm(this.form)"> <span style="text-shadow: white 0 0 10px;">Даю согласие на обработку персональных данных<br />в соответствии с <a title="Оферта" href="http://центум.рф/kontakty/politika-obrabotki-personalnykh-dannykh" target="_blank" rel="noopener noreferrer">Пользовательским соглашением</a></span><br />
<input type="submit" name="submit" value="Отправить" onclick="this.parentNode.submit();" disabled>
</form>

</div>

Если что непонятно, спрашивай.

P. S. jquery.maskedinput.min.js это плагин с просторов сети, добавляющий маску для поля телефон.
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Спасибо!
Сейчас буду пробовать.
По результату отпишусь
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Спасибо!
Сейчас буду пробовать.
По результату отпишусь

Вообще, тебе сколько полей надо в форме и каких? Если что у меня есть компонент нормальный, для формы обратной связи, учитывающий требования об обработке персональных данных. В том варианте что выше скинул, много лишнего для твоего сайта, легче с нуля написать или использовать компонент.
« Последнее редактирование: 09.10.2017, 15:44:06 от dm-krv »
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Вообще, тебе сколько полей надо в форме и каких? Если что у меня есть компонент нормальный, для формы обратной связи, учитывающий требования об обработке персональных данных. В том варианте что выше скинул, много лишнего для твоего сайта, легче с нуля написать или использовать компонент.

2 поля всего, но форма в самом шаблоне
Код попробую в свою форму добавить, убрав лишнее
« Последнее редактирование: 09.10.2017, 16:53:26 от kompado »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
2 поля всего, но форма в самом шаблоне (скопированный лендинг ))
Код попробую в свою форму добавить, убрав лишнее

Тогда не майся дурью, есть простое как топор рабочее решение, главное что бы лендинг твой на движке был. Он же на Joomla? Если да, то скину способ.
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Тогда не майся дурью, есть простое как топор рабочее решение, главное что бы лендинг твой на движке был. Он же на Joomla? Если да, то скину способ.

Да, на Joomla 3.8
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Да, на Joomla 3.8

Есть такой компонент:
http://joomly.ru/modul-obratnogo-zvonka
Качаешь бесплатную версию и убираешь водяной знак, либо покупаешь платную.

Водяной знак можно убрать в файле /modules/mod_joomly_callback/tmpl/default.php
74-ая строка:
<div class="tel"><?php echo JText::_('MOD_JOOMLY_CALLBACK_TEL');?></div>
Заменить на <br />

После установки компонента компонент, в настройках указываешь, что показывать кнопку не надо:
Какой элемент показывать на форме? => Никакой
Выводишь его в какой-нибудь позиции, например в debug. Далее, на самом сайте, в нужном тебе место просто вставляешь кнопку вызова:
<button class="button-joomly-callback-form joomly-callback" type="submit" value="save">НАЗВАНИЕ КНОПКИ</button>
Кнопку можно без проблем и в сам шаблон воткнуть.

Внутри кнопки можешь дописать стили настров внешний вид как тебе надо, например:
<button style="border-radius: 5px;" class="button-joomly-callback-form joomly-callback" type="submit" value="save">ЗАКАЗАТЬ</button>

Пример использования здесь:
http://xn--e1aocufo.xn--p1ai/
Смотри ближе к концу страницы, кнопка заказа звонка.

Или тебе надо не в виде кнопки, но в виде формы?
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Спасибо большое! Выручил.

Сделал так:
Код
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script src="/jquery.maskedinput.min.js"></script>
<script>
$(function(){
  $("#phone").mask("+7 (999) 999-99-99");
});
</script>


<form class="m1-form" action="/send.php" method="post">
<h2>ЗАКАЖИ СЕЙЧАС</h2>
                        <input type="text" name="imya" placeholder="Введите Имя" required="">
                        <input type="text" name="telefon" id="phone" placeholder="Введите телефон" required="">
                        <button type="submit" class="buy" onclick="this.parentNode.submit()">Заказать со скидкой</button>
                        <p>
+ получить клатч в подарок
</p>
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="timeShift" id="timeShift" value="" />
<input type="hidden" name="hash" id="hash" value="1f601578dd4f2bb5850260b2306e076ef9c9cdbd" /> <span style="display:none" id="goodPrice"></span>
<span style="display:none" id="fullPrice"></span>
<span style="display:none" id="CountryId">175</span>
<input type="hidden" id="goodArticle" name="goodArticle" value="" />
                    </form>

В корне сайта создал send.php
Код
<?php

$imya = $_POST['imya'];
$imya = htmlspecialchars($imya);
$imya = urldecode($imya);
$imya = trim($imya);

$telefon = $_POST['telefon'];
$telefon = htmlspecialchars($telefon);
$telefon = urldecode($telefon);
$telefon = trim($telefon);

define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);

// Load system defines
if (file_exists(JPATH_BASE . '/defines.php'))
{
    require_once JPATH_BASE . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';


//получаем настройки сайта
$config = & JFactory::getConfig();
//Получаем экземпляр класса JMail
$mailer = JFactory::getMailer();
//Указываем что письмо будет в формате HTML
$mailer->IsHTML( true );
//Указываем отправителя письма
$mailer->setSender( array( '*******@mail.ru', 'Time Premium' ) );
//указываем получателя письма
$mailer->addRecipient( 'admin@*****.ru' );
//Добавляем текст письма
$mailer->setSubject("+$telefon $imya");
// Добавояем тему письма
$mailer->setBody( "Электронный адрес: '*******@mail.ru' <br /> Сообщение: 'Заказ часов Emporio Armani' " );
//Отправляем письмо
$mailer->send();
if ($send !== true) {
header("Location: index.php/home/uspeh");
} else {
header("Location: index.php/home/neudacha");
}
?>


ВСЁ РАБОТАЕТ  :D
« Последнее редактирование: 09.10.2017, 16:52:30 от kompado »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Рад за тебя) Только закинь в корень сайта следующий файл.

http://my-files.ru/6rt87w

Это плагин добавляющий маску вида +7 (999) 999-99-99 к полю с id= "phone"

Если же без маски делаешь, то удали скрипт в начале формы и убери плюсик в файле send.php вот тут
$mailer->setSubject("+$telefon $imya");
« Последнее редактирование: 09.10.2017, 16:56:17 от dm-krv »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
И еще, у тебя нет проверки проставлена галочка в согласии на обработку или нет, а значит вот этот элемент лишний, удаляй его нафиг: onclick="this.parentNode.submit()"
*

kompado

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Благодарю.
Сейчас всё работает как надо. Маску немного изменил, чтоб не сбрасывались введённые цифры при нажатии на другую область экрана:
Код
$("#phone").mask("+7 (999) 999-99-99",{autoclear: false});
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 348
Последний ответ 05.02.2024, 11:45:36
от web1
Тип поля формы Select sql, как заполнить его через функцию php?

Автор GuDeVic

Ответов: 13
Просмотров: 976
Последний ответ 07.10.2022, 12:25:45
от fsv
Joomla не отправляет почту при регистрации

Автор Mick_20

Ответов: 1
Просмотров: 399
Последний ответ 20.12.2021, 08:46:13
от wishlight
jQuery. Передать значение в поле формы Битрикс24

Автор fbr

Ответов: 40
Просмотров: 1545
Последний ответ 21.11.2021, 12:05:18
от gartes
Изменить данные автора в статьях

Автор pavel33

Ответов: 1
Просмотров: 396
Последний ответ 05.11.2021, 18:17:08
от darkghost