Здравствуйте.
Думал как расшевелить участников на сайте, чтобы они по чаще заходили и просматривали новости.
Тут мне пришла идея рассылать новости сайта, а еще эффективнее лучшие новости. Начал искать решение и наткнулся на бесплатный плагин «Mailing (большие рассылки)» + Плагин «LsDigest (дайджест лучших топиков)»
Установил Mailing и тут вылезла ошибка при запуске крона:
Warning: require_once(/var/www/zaicev/data/www/site.org/common/config/loader.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/zaicev/data/www/site.org/common/plugins/mailing/include/cron/send-mail.php on line 20
Fatal error: require_once() [function.require]: Failed opening required '/var/www/zaicev/data/www/site.org/common/config/loader.php' (include_path='.:/usr/share/php:/usr/share/pear:/var/www/zaicev/data/www/site.org/common') in /var/www/zaicev/data/www/site.org/common/plugins/mailing/include/cron/send-mail.php on line 20
Может кто-то уже адаптировал это плагин под altocms 1.х ?
августа
13
2014
+1
Массовая рассылка писем
Похожие статьи
-
Нужен плагин почтовая рассылка по зарегистрированным пользователям
Необходимо адаптировать под alto 1.1.28 2 плагина «Mailing (большие рассылки)» + Плагин «LsDigest (дайджест лучших топиков)» (https://altocms.ru/708.html), а лучше на их основе создать новый самостоятельный плагин...
-
Рассылка
Подскажите пожалуйста, как сделать массовую рассылку некоторых сообщений, к примеру, об изменениях на сайте или другой важной информации на емайлы пользователей? У меня версия 1.0.10.2
-
E-mail рассылки
Здравствуйте, подскажите есть ли модуль email рассылок по зарегистрированной в системе базе email адресов? Например как в opencart, если кто сталкивался с ним. P.S.: Mailing плагин встречал, там какие то заморочки с...
-
Еще один баг в админке
Здравствуйте! в версии 0.9.6 обнаружил еще один баг в админке: при попытке послать всем пользователям письмо (админка-->все пользователи-->написать письмо-->общее сообщение) получаю вот такую штуку:...
110 комментариев
По-идее, вам нужно зайти в конфиг виртуального хоста, и в секцию
добавить эти директории, к которым пытается получить доступ ваш скрипт.
Такая ошибка часто возникала еще на ранних версиях LS. Приходилось заходить и руками править конф. файл хостов.
Warning: require_once(/var/www/zaicev/data/www/site.org/common/config/loader.php
Есть догадки, что это за файл?
Их надо заменить на такие:
Должно помочь
Сейчас при запуске так и выдает 255 ошибку.
Путь к скрипту
В кроне это выглядит как (время конечно свое поставьте)
Мне не удалось добиться появления 255 ошибки о которой все пишут.
Я правильно понимаю, что следует только изменить код в файле по пути www/site.ru/common/plugins/mailing/include/cron/send-mail.php и все?
Если все ОК, то убедиться, что PHP-скрипт может отрабатываться из крона — и командная строка задана верно, и прав хватает. Для этого создать простой php-файл с одной сторокой:
положить этот файл в ту же папку, где лежит send-mail.php, поставить на него те же права и владельца, и прописать его в кроне или через SSH запустить. Если ошибка повторится, то проблема не в плагине и не в движке, а в настройках сайта/сервера/правах и т.д.
Мой совет: пусть Klaus вам даст точную командную строку, которой он запускал скрипт, и обращайтесь уже в саппорт хостера, мол, так и так, вот такой командной строкой все работает, а вот так я задаю в ISPManager — и не работает. Что, мол, за фигня?
Ошибка появляется при запуске задания из isp manager ( т.е. сам крон работает, а вот принудительное выполнение задания ни в какую).
Я не понимаю. При этом сам скрипт запускается, даже при принудительном запуске, а вот на строке появляется эта 255 ошибка
Может там другой php запускается, где не работает правильно ioncube, не знаю
Хотя плагин я приобретал для этого домена.
П\с этот кошелек уже в печенках сидит и у меня и у Вадима наверное))
SQL Error: Can't create table 'sovunion.#sql-d34_225ee7' (errno: 121) at /....site.ru/engine/classes/modules/database/Database.class.php line 291 — Array ( [code] => 1005 [message] => Can't create table 'sovunion.#sql-d34_225ee7' (errno: 121) [query] => ALTER TABLE `prefix_mailing` ADD CONSTRAINT `prefix_mailing_ibfk_1` FOREIGN KEY (`send_by_user_id`) REFERENCES `prefix_user` (`user_id`) [context] => /.....site.ru/engine/classes/modules/database/Database.class.php line 291 )
В файле create-mailing-digest.php в папке cron плагина проделал также по аналогии 5 строк.
При активации плагина Lsdigest выдает внутри админки красным
Ошибка:
ACTION.ADMIN.PLUGINS_ACTIVATION_REQUIRES_ERROR
У кого нибудь получилось настроить эти два плагина под Alto 1.0.7?
Всем папкам внутри папки plugins рекурсивно заданы права 777. Подскажите пожалуйста светлые головы в чем может быть проблема?
на
Файл main.tpl в акшене скина. Во-первых, находим и добавляем ему class
Собственно, чтобы получилось так:
Да и весь код от
до
— примерно от 6-той по 33-ю строки можно заменить на это
Тогда подключение modals/modal.upload_img.tpl не потребуется…
Далее
заменить на
Всё это (вместе с содержимым) можно вырезать
— строки примерно от 46-той по 71-ю.
______________
Чё-то меня понесло… В общем, добавьте класс в textarea :)
и включительно с
textarea отсюда скопировал, заменил то что было, <input type аналогично… Почему то не сработало.
Я допиливал плагин в комплексе и последовательно… По этому мог просто не обратить внимания на взаимосвязи отдельных шаблонов. Кстати, у меня тоже походу будет вопрос… (не хватило тяму).
Поэтому я оставил свои файлы, а сверху «накатил» Ваши. Теперь редакторы выводятся в любом режиме. Спасибо огромное.
(добавил файл)
Думаю, на этот вопрос может дать однозначный ответ только сам автор плагина.
Однако после сброса кэша на главной странице вместо виджетов «прямой эфир», «блоги», «теги» выводится сообщение об ошибке
(Возьму более полное из лога, на странице более короткое)
[LOG:1427309365.583-551303358E743][2015-03-25 21:49:25][PID:12982][ERROR][[
E_ERROR [1] Call to a member function getBlog() on a non-object (/var/www/example.com/engine/libs/Smarty/libs/sysplugins/smarty_internal_templatebase.php(157): eval()'d code on line 44)
— call stack — Func::_callStackError() in /var/www/example.com/engine/include/Func.php on line 147
Func::_errorLog() in /var/www/example.com/engine/include/Func.php on line 274
Func::_errorHandler() in /var/www/example.com/engine/include/Func.php on line 69
Func::done()
— end — ]][END:1427309365.583-551303358E743]
[LOG:1427309373.721-5513033DAFF5E][2015-03-25 21:49:33][PID:2373][ERROR][[
E_ERROR [1] Call to a member function getBlog() on a non-object (/var/www/example.com/_tmp/templates/brand-light/compiled/light^6edba5d50b3356b0d4b878f9ce6a117ea7b77cb5.file.widget.stream_comment.tpl.php on line 44)
— call stack — Func::_callStackError() in /var/www/example.com/engine/include/Func.php on line 147
Func::_errorLog() in /var/www/example.com/engine/include/Func.php on line 274
Func::_errorHandler() in /var/www/example.com/engine/include/Func.php on line 69
Func::done()
— end — ]][END:1427309373.721-5513033DAFF5E]
А вот что находится по указанной строчке (/var/www/example.com/_tmp/templates/brand-light/compiled/light^6edba5d50b3356b0d4b878f9ce6a117ea7b77cb5.file.widget.stream_comment.tpl.php on line 44)
Я решил его созданием файла User.entity.class.php в плагине mailing со следующим кодом
И как тогда будет выглядеть вывод url для отписывания в шаблон?
и нужно еще раскомментировать 170 строку (без неё чуда не получится) github.com/orthograf/mailing/blob/master/classes/modules/mailing/Mailing.class.php
generate-unsub-hash.php?
Не могу понять никак…
Тут же все дело в безопасности, вы же не хотите чтобы кто-то отписал вас без вашего ведома.
1. Т.е. я правильно понимаю, что по задумке создателей плагина, эти хеши генерятся отдельно скриптом и куда-то кладутся в БД, в специальное поле таблицы users, или как? Не пойму смысл этого отдельного скрипта.
2. С вашим решением хэши будут генериться сразу при создании рассылки? Каждый раз перезаписываться при создании рассылки?
3. Этот механизм отписки затрагивает все рассылки или только Digest? просто в БД поле называется user_no_digest_hash.
4. И еще вопрос в итоге как получить url отписки — он сам сгенерится и добавится?
2. мои скриптом хэш будет генерироватсья при обращении (код выше, хэш генерируется на основе почты пользователя и соли)
3. механизм относится только к Digest
4. url отписки генерируется в 170 строке что я писал выше
Ну а обращение в какой момент. Кого к кому обращение? При создании рассылки дергается метод, создается хэш и кладется в поле user_no_digest_hash БД?
Если это только для дайджеста, то зачем каждый раз генерить заново? Значит это должно только при создании дайджетста происходить, или я что-то не понимаю.
Ну хотите делайте как предусмотрено плагином, генерируйте по какому-то расписанию, или как оно там должно быть. Я этот механизм не понял
А как сделать вот это
В Inherits нужно добавить
Class 'PluginSitemap_Inherit_ModuleUser_EntityUser' not found in /var/www/example.com/common/plugins/sitemap/classes/modules/user/entity/User.entity.class.php
o_O
Вот что я сделал
В /mailing/classes/modules/mailing/entity/User.entity.class.php
В PluginMailing.class.php
PluginMailing_ModuleMailing_EntityUser — не?
Несоответствие папки и класса
/mailing/classes/modules/mailing/entity/User.entity.class.php
Ну почему в каталоге mailing? Каталог user нужен вам.
Чтобы решалось перестановкой встречал раза два-три. Каждый раз думал что это из-за разного способа указания в Inherits
Class 'PluginMailing_Inherit_ModuleUser_EntityUser' not found in
?
/mailing/classes/modules/user/entity
Перестановкой добился такого сообщения
PHP Fatal error: Class 'PluginMailing_Inherit_ModuleUser_EntityUser' not found in /var/www/example.com/common/plugins/mailing/classes/modules/user/entity/User.entity.class.php on line 2
потом переместил обратно в исходную папку
/mailing/classes/modules/mailing/entity/User.entity.class.php
и попробовал заменить
class PluginMailing_ModuleMailing_EntityUser extends PluginMailing_Inherit_ModuleMailing_EntityUser
получил снова
PHP Fatal error: Class 'PluginBr_Inherit_ModuleUser_EntityUser' not found in /var/www/example.com/common/plugins/br/classes/modules/user/entity/User.entity.class.php on line 12
Чтоб с этим разобраться, мне нужно у себя ситуацию воспроизвести. Напр., однозначно определено, что если поставить плагины А, Б, В, то такая ошибка вылезает. Меняем порядок — Б, А, В — ошибка пропадает. И мне передаются эти самые плагины. И я воспроизвожу у себя баг. И решаю проблему.
Файл
/mailing/classes/modules/user/entity/User.entity.class.php:
PluginMailing.class.php:
Ошибка:
PHP Fatal error: Class 'PluginMailing_Inherit_ModuleUser_EntityUser' not found in /var/www/example.com/common/plugins/mailing/classes/modules/user/entity/User.entity.class.php on line 4
Дело не в этом коде, может вы еще чего правили?
А есть другой путь этот метод добавить?
Если да, то там нет ни модуля user ни entity user. Поэтому не понимаю как они могут конфликтовать в принципе.
А что у вас за файл plugins/br/classes/modules/user/entity/User.entity.class.php? У меня такого в плагине br нет
Положить в существующий класс, класс PluginMailing_Inherit_ModuleUser_EntityUser ну просто обязан существовать, не понимаю как его может не быть. Хотя если читать ваш лог сверху вниз то проблема начинается с Вот и надо идти с самого начала и понять чем они друг другу мешают.
Другой путь есть, написать три строчки кода функции getUserNoDigestHash в любой кастомный плагин в котором существует файл User.entity.class.php
example.com//mailing/unsubscribe?email=&hash=
Однако хэш не работает все равно… ((
$oUserTo = $this->User_GetUserById($oMail->getUserId());
$sText = htmlspecialchars_decode($oMail->getMailingText(), ENT_QUOTES);
$this->Lang_SetLang($oUserTo->getUserLang());
//$sText .= $this->Lang_Get('plugin.mailing.unsub_notice', array('email' => $oUserTo->getMail(), 'hash' => $oUserTo->getUserNoDigestHash()));
$this->Mail_SetAdress($oUserTo->getMail(), $oUserTo->getLogin());
$this->Mail_SetSubject($oMail->getMailingTitle());
$this->Mail_SetBody($sText);
$this->Mail_setHTML();
в чем может быть проблема?
[LOG:1427368896.686-5513EBC0A7854][2015-03-26 14:21:36][PID:12982][ERROR][[
E_WARNING [2] Class 'PluginBr_ModuleUser_EntityUser' not found (/var/www/example.com/engine/classes/core/Loader.class.php on line 337)
— call stack — class_alias() in /var/www/example.com/engine/classes/core/Loader.class.php on line 337
Loader::Autoload()
spl_autoload_call() in /var/www/example.com/common/plugins/mailing/classes/modules/user/entity/User.entity.class.php on line 4
include_once() in /var/www/example.com/engine/include/functions/File.php on line 932
AltoFunc_File::IncludeFile()
call_user_func_array() in /var/www/example.com/engine/include/Func.php on line 656
Func::IncludeFile() in /var/www/example.com/engine/classes/core/Loader.class.php on line 310
Loader::_includeFile() in /var/www/example.com/engine/classes/core/Loader.class.php on line 343
Loader::Autoload()
spl_autoload_call()
class_alias() in /var/www/example.com/engine/classes/core/Loader.class.php on line 337
Loader::Autoload()
spl_autoload_call() in /var/www/example.com/common/plugins/br/classes/modules/user/entity/User.entity.class.php on line 12
include_once() in /var/www/example.com/engine/include/functions/File.php on line 932
AltoFunc_File::IncludeFile()
call_user_func_array() in /var/www/example.com/engine/include/Func.php on line 656
Func::IncludeFile() in /var/www/example.com/engine/classes/core/Loader.class.php on line 310
Loader::_includeFile() in /var/www/example.com/engine/classes/core/Loader.class.php on line 343
Loader::Autoload()
spl_autoload_call()
unserialize() in /var/www/example.com/engine/libs/DklabCache/Cache/Backend/TagEmuWrapper.php on line 185
Dklab_Cache_Backend_TagEmuWrapper->_loadOrTestMulti() in /var/www/example.com/engine/libs/DklabCache/Cache/Backend/TagEmuWrapper.php on line 34
Dklab_Cache_Backend_TagEmuWrapper->load() in /var/www/example.com/engine/classes/modules/cache/Cache.class.php on line 322
ModuleCache->_backendLoad() in /var/www/example.com/engine/classes/modules/cache/Cache.class.php on line 543
ModuleCache->MultiGet() in /var/www/example.com/engine/classes/modules/cache/Cache.class.php on line 515
ModuleCache->Get()
call_user_func_array() in /var/www/example.com/engine/classes/core/Engine.class.php on line 636
Engine->_CallModule() in /var/www/example.com/engine/classes/abstract/LsObject.class.php on line 44
LsObject->__call() in /var/www/example.com/common/classes/modules/user/User.class.php on line 260
PluginInvites_ModuleUser->Cache_Get() in /var/www/example.com/common/classes/modules/user/User.class.php on line 260
ModuleUser->GetUsersByArrayId() in /var/www/example.com/common/classes/modules/user/User.class.php on line 173
ModuleUser->GetUsersAdditionalData() in /var/www/example.com/common/classes/modules/user/User.class.php on line 584
ModuleUser->GetUserById() in /var/www/example.com/common/classes/modules/user/User.class.php on line 525
ModuleUser->GetUserBySessionKey() in /var/www/example.com/common/classes/modules/user/User.class.php on line 654
ModuleUser->AutoLogin() in /var/www/example.com/common/classes/modules/user/User.class.php on line 98
ModuleUser->Init() in /var/www/example.com/engine/classes/core/Engine.class.php on line 377
Engine->InitModule() in /var/www/example.com/engine/classes/core/Engine.class.php on line 457
Engine->LoadModule() in /var/www/example.com/engine/classes/core/Engine.class.php on line 699
Engine->GetModule() in /var/www/example.com/engine/classes/core/Engine.class.php on line 612
Engine->_CallModule() in /var/www/example.com/engine/classes/core/Engine.class.php on line 773
Engine->__call()
Engine->User_GetUserCurrent()
call_user_func_array() in /var/www/example.com/engine/classes/core/Engine.class.php on line 1298
E::__callStatic() in /var/www/example.com/engine/classes/core/Engine.class.php on line 1307
E::User_GetUserCurrent() in /var/www/example.com/engine/classes/core/Engine.class.php on line 1307
E::User() in /var/www/example.com/engine/classes/core/Engine.class.php on line 1345
E::UserId() in /var/www/example.com/common/classes/hooks/HookStatisticsPerformance.class.php on line 38
HookStatisticsPerformance->RegisterHook() in /var/www/example.com/engine/classes/core/Engine.class.php on line 517
Engine->InitHooks() in /var/www/example.com/engine/classes/core/Engine.class.php on line 285
Engine->Init() in /var/www/example.com/engine/classes/core/Router.class.php on line 172
Router->Exec() in /var/www/example.com/index.php on line 23
— end — ]][END:1427368896.686-5513EBC0A7854]
[LOG:1427368896.687-5513EBC0A7C36][2015-03-26 14:21:36][PID:12982][ERROR][[
E_ERROR [1] Class 'PluginMailing_Inherit_ModuleUser_EntityUser' not found (/var/www/example.com/common/plugins/mailing/classes/modules/user/entity/User.entity.class.php on line 4)
— call stack — Func::_callStackError() in /var/www/example.com/engine/include/Func.php on line 147
Func::_errorLog() in /var/www/example.com/engine/include/Func.php on line 274
Func::_errorHandler() in /var/www/example.com/engine/include/Func.php on line 69
Func::done()
— end ---
Не понятно еще почему такой косяк с языком, ну да ладно…
Кстати такой же вопрос к вам — не хотите опубликовать портированную версию с правками?
У меня есть пример, плагин СЕОпак, я им ни разу не пользовался. Поэтому решил заниматься только теми плагинами, что пригодятся в моих проектах. Есть хотя бы мотивация.
1. Основная проблема с тем, что не генерился хэш была связана на самом деле с этой строчкой altocms.ru/708.html#comment19572
2. При этом несмотря на то что метод getUserNoDigestHash() не определен, код
— отрабатывает и хэш возвращается в ссылку. Каким образом это происходит — я без понятния, но факт. Возможно гуру ООП в рамках php могут этот момент прояснить.
3. Насчет скрипта для генерации хэшей, теперь я понял для чего он нужен — тупо для того чтобы сгенерить хэши для тех пользователей, которые зарегились до активации плагина. После активации при регистрации хэш заполняется в БД автоматически.
Необходимо делать рассылку писем пользователями раз в неделю с темами из вкладки https://site.ru/index/top/?period=7