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

malkawian

  • Захожу иногда
  • 21
  • 2
Уважаемые форумчане, подскажите решение вопросика:

Есть Joomla 1.6 + компонент AcyMailing 2.0

Нужно сделать, чтобы при создании материала, в определенном разделе происходила отправка писем всем подписчикам.
Как сделать рассылку понятно, но вот как привязать её к событию создания материала, да еще и в определенном разделе, ума не приложу.
« Последнее редактирование: 29.08.2013, 09:58:20 от b2z »
*

malkawian

  • Захожу иногда
  • 21
  • 2
Идея как это реализовать появилась, но смутная.

Решил написать плагин, который при добавлении материала выдергивал бы нужные поля этого материала и передавал бы в компонент AcyMailing для отправки рассылки.

Только никак не разберусь с плагинами. Точнее с используемыми событиями. Написал плагин по инструкции на форуме, изменил под 1.6, установил, сделал активным и нифига не работает. Сам класс плагина загружается, но на события никакой реакции нет. В чем проблема?

Код
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.plugin.helper');

class plgContentSendacymailing extends JPlugin
{

function __construct(&$subject)
{
parent::__construct($subject);
  }

  function onAfterContentSave(){
die('content saving');
  }

}
?>

*

malkawian

  • Захожу иногда
  • 21
  • 2
Какие тут все не общительные однако...

Буду писать что делал и что из этого вышло, может пригодится кому в будущем.

Решение проблемы с запуском плагина нашел: в 1.6 изменили название событий и вместо
Код
onAfterContentSave
стало
Код
onContentAfterSave

Пишем тело плагина...
*

malkawian

  • Захожу иногда
  • 21
  • 2
Завис на следующей проблеме. Не отправляется письмо с помощью компонента AcyMailing.

Код плагина теперь такой:
Код
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');

class plgContentSendacymailing extends JPlugin
{

function __construct(&$subject)
{parent::__construct($subject);}

function onContentAfterSave($context, &$article, $isNew){
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'mailer.php')) return true;
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'classes'.DS.'listmail.php')) return true;
$mailer = new mailerHelper();
$mailer->Subject = $article->title;
$mailer->Body = $article->introtext;
$mailer->to[] = 'user@domain.com';
$mailer->send();
echo $mailer->reportMessage;
echo $mailer->errorNumber;
die('content saving event catched');
    }


}
?>

Причем       
Код
echo $mailer->reportMessage;
Выдает сообщение об успешной отправке.
Думал, что проблема с настройкой компонента, но и в компоненте твориться что-то странное:
При отправке тестового письма из окна настроек все проходит отлично. Письмо отправляется и доходит практически моментально. А если создать новое сообщение и отправить тестовое письмо для этого сообщения, то начинается полтергейст: компонент сообщает об успешной отправке, но ничего на почту не приходит. То же самое, если запустить это сообщение в рассылку. Успешный отчет при нулевом результате. Кто-нибудь с таким сталкивался?
*

malkawian

  • Захожу иногда
  • 21
  • 2
Уже.

Есть такой класс:
/components/com_acymailing/inc/phpmailer/class.phpmailer.php
Который отвечает за отправку почты компонентом Acymailing. До него данные доходят, передаются в PHP функцию mail() и  результат всегда TRUE, значит письмо ушло. Но из одного места письма доходят, а из другого нет. Проверял входные данные, все в порядке.

Ничего не понимаю.
*

Magi

  • Осваиваюсь на форуме
  • 110
  • 0
У меня есть пример хака для Joomla 1.0.x с помощью которого почта отправляется на адрес списка рассылки mailman, а потом соответственно подписчикам. Если интересует могу выложить.
*

malkawian

  • Захожу иногда
  • 21
  • 2
У меня есть пример хака для Joomla 1.0.x с помощью которого почта отправляется на адрес списка рассылки mailman, а потом соответственно подписчикам. Если интересует могу выложить.

Да, было бы замечательно.
*

Magi

  • Осваиваюсь на форуме
  • 110
  • 0
Если получится переделать под 1.7 выложите здесь.

1. Положить в корень ЦМС файл for_mail.php.
2. В корне ЦМС открываем файл index2.php и после строки
require_once( 'includes/joomla.php' );
вставляем
require_once( 'for_mail.php' );
3. В дире administrator в файле index2.php после строки
require_once( '../configuration.php' );
вставляем
require_once( '../for_mail.php' );
4. В дире components/com_content открываем файл content.php и ищем строку
if (!$row->store()) {
и после закрывающей '}' вставляем строку
SendNewsMail($row->id);
5. В дире administrator/components/com_content открываем файл
admin.content.php и ищем строку
if (!$row->store()) {
и после закрывающей '}' вставляем строку
SendNewsMail($row->id);

[вложение удалено Администратором]
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
Идея как это реализовать появилась, но смутная.

Решил написать плагин......

какой плагин?! вы чё?!
есть такая штука называется тэги. например этот: {autocontent:cat1-|min:1|max:5|order:id,DESC|filter:created|type:intro|link|pict:1}
из категории 1 тащит статьи от 1 и до 5, сортировка по ID, только новые, только вступление, активный заголовок, показывать изображения.
ВСЁ! что еще надо хорошему человеку )))))

P.S. ну и естественно нужна Business или enterprise версия, для настройки крон
*

malkawian

  • Захожу иногда
  • 21
  • 2
А для тех, кто не готов раскошеливаться на бизнес или энтерпрайз версии готов поделиться плагином:)

Код
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');

class plgContentSendacymailing extends JPlugin
{
function __construct(&$subject) {parent::__construct($subject);}

function onContentAfterSave($context, &$article, $isNew){
if($isNew) { //проверяем запись и если она новая, запускаем процедуру формирования и отправки письма
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'mailer.php')) return true;
$db =& JFactory::getDBO(); //получаем соединение с БД
$query = 'SELECT subid, email, name FROM [JOOMLA_TABLE_PREFIX]_acymailing_subscriber WHERE enabled = 1'; // делаем запрос для получения всех активных подписчиков
$db->setQuery($query); //выполняем запрос
$db->query();
$allSubid = $db->loadRowList(); //получаем результаты запроса
$mailer = new mailerHelper();
$mailer->Subject = $article->title; //заполняем тему письма
$mailer->Body = $article->introtext; //заполняем текст письма
$to = array(); //заполняем получателей
foreach($allSubid as $subscriber) {
$mailer->to[] = array($subscriber[2],$subscriber[1]);
}
$mailer->send(); //отправляем письмо
}


    }
}
?>

Плагин максимально простой с минимумом наворотов. Не подходит для большого количества адресатов.
Нарастить функционал очень просто, поэтому, если есть желающие, милости просим заняться этим вопросом и поделиться результатами.
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
Это для тех у кого нет денег и в то же время из принципа не хочет пользоваться.... ну, это..... уже бесплатным
*

malkawian

  • Захожу иногда
  • 21
  • 2
А также для тех, у кого нет крона или он не знает что это такое:)
*

Magi

  • Осваиваюсь на форуме
  • 110
  • 0
Плагин вроде подразумевает наличие XML файла. А как ставить этот?
*

malkawian

  • Захожу иногда
  • 21
  • 2
я сделал самый примитивный вариант. Выглядит примерно так:
Код
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/plugin-install.dtd">
<install type="plugin" version="1.5" group="content">
<name>AcyMailing : (auto)Sending articles</name>
<creationDate>07 2011</creationDate>
<version>1.0</version>
<author>IT-Nanny</author>
<authorEmail>web@it-nanny.ru</authorEmail>
<authorUrl>http://www.it-nanny.ru</authorUrl>
<copyright>Copyright (C) 2011 IT-Nanny.</copyright>
<description>Automatically sending e-mail with Article add</description>
<files>
<filename plugin="sendacymailing">sendacymailing.php</filename>
</files>

</install>
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
А также для тех, у кого нет крона
а чё, такое бывает?

Подскажите, как оптимизировать процесс отправки писем, у меня отправляется всего 300 писем в час.
Когда создаю сообщение, делаю его отправить, он отправляет на все 9000 адресов, НО! они не доходят. Посмотрела обработку очереди, там стоит что 300 писем в час. Я так понимаю, что они зависают на сервере.
Как сделать так, что отправлял сразу все и они нормально доставлялись?
Спасибо за ответ!
*

FerrumLogic

  • Давно я тут
  • 213
  • 17
  • Я ушел чтобы с разбегу вернуться
С такой скоростью рассылки Вас добавят в спам-листы
*

malkawian

  • Захожу иногда
  • 21
  • 2
В таком случае нужно использовать очереди отправки компонента AcyMailing, либо придумывать что-то своё.
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
С такой скоростью рассылки Вас добавят в спам-листы
сто пудов. надо максимум 300
у меня в настройках:
Послать  сообщений 100 и перед отправкой следующего пакета сообщений ждать 5 мин
с такой же настройкой ваши 9000 писем разошлются за 7.5 часов
*

неон

  • Осваиваюсь на форуме
  • 37
  • 2
Подскажите кто знает как в этом компоненте настраивается функция  -Отказаться от рассылки писем:-
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
не понял вопроса.
пользователь жмёт кнопочку и там выбирает от каких рассылок отказаться
*

неон

  • Осваиваюсь на форуме
  • 37
  • 2
Данный компонента я использую только для рассылки писем зарегистрировавшимся пользователям (типа пора зайти и посмотреть что нового на сайте) Использую стандартный шаблон компонента немного переделаны под себя. В шаблоне есть активная ссылка на отказ от рассылки, при нажатии перекидывает на сайт и на этом все.Мне кажется в настройках компонента надо поставить какую та ссылку на удаления рассылки. Но где ее взять и куда поставить ума не приложу.
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
Теперь понятно
Конфигурация->Интерфейсы->Страница отказа от подписки
у меня так


думаю больше ничего не нужно
*

WolfHunter

  • Осваиваюсь на форуме
  • 50
  • 1
ссылка должна быть типо этой
http://сайт.ru/index.php?option=com_acymailing&ctrl=user&task=optout&mailid=38&subid=1983&key=4aa970e08fe0a8ad298b70a0b1586965&Itemid=71
и при отказе появляется вот это
*

неон

  • Осваиваюсь на форуме
  • 37
  • 2
Спасибо, разобрался.
+
*

cat_helena

  • Новичок
  • 1
  • 0
Уже.

Есть такой класс:
/components/com_acymailing/inc/phpmailer/class.phpmailer.php
Который отвечает за отправку почты компонентом Acymailing. До него данные доходят, передаются в PHP функцию mail() и  результат всегда TRUE, значит письмо ушло. Но из одного места письма доходят, а из другого нет. Проверял входные данные, все в порядке.

Ничего не понимаю.
Скажите, как разобрались с доставкой писем. У меня сейчас та же прблема.
*

malkawian

  • Захожу иногда
  • 21
  • 2
Скажите, как разобрались с доставкой писем. У меня сейчас та же прблема.

http://joomlaforum.ru/index.php/topic,172873.msg978008.html#msg978008
*

AnDS

  • Захожу иногда
  • 10
  • 0
Хочу сделать автоматическую рассылку, в настройках (Конфигурация--Обработка очереди) отображается сообщение: "Вероятно планировщик не включен, не забудьте его создать!"

Подскажите, как создать планировщик?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль\плагин добавления материалов пользователями

Автор sanni55

Ответов: 8
Просмотров: 316
Последний ответ 17.03.2017, 15:30:40
от sanni55
Acymailing невыводит сообщения при ошибке CAPTCHA

Автор Paha_web

Ответов: 0
Просмотров: 190
Последний ответ 20.01.2017, 23:58:37
от Paha_web
H1 в списоке материалов категории

Автор KSS

Ответов: 0
Просмотров: 167
Последний ответ 28.09.2016, 17:17:04
от KSS
Как настроить автоматическую публикацию материалов?

Автор Mr.Indigo

Ответов: 3
Просмотров: 321
Последний ответ 11.08.2016, 03:32:34
от alae
Как восстановить картинки из материалов?

Автор Омск

Ответов: 6
Просмотров: 350
Последний ответ 14.06.2016, 21:37:39
от fbr