Александр I

Александр I

Стареть неприятно, но это единственный способ жить долго.
+263
Репутация
8006
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Позиция в теле форума. 15 декабря 2011 в 02:31
Файл ../components/frontend.php
Найти (примерно стр. 623):
  1. $num++;
Выше вставить:
  1. if ($num == 1) {
  2. echo '<tr><td colspan="2">Привет</td></tr>';
  3. }
Привет — заменить на своё.
#2 кто знает адрес саппорта AdSense ? 14 декабря 2011 в 21:16
#3 Разработка Афиши 14 декабря 2011 в 20:44
Марат, без проблем предоставлю место и домен.
Приму участие в тестировании.
#4 Добавление в каталог незарегистрированными пользователями 12 декабря 2011 в 23:07
В файле ../templates/_default_/components/com_catalog_view.tpl найти (в самом начале):
  1. {if $is_can_add}
  2. <a id="shop_addlink" href="/catalog/{$cat.id}/add.html">{$LANG.ADD_ITEM}</a>
  3. {/if}
поменять на:
  1. {if $is_can_add}
  2. <a id="shop_addlink" href="/catalog/{$cat.id}/add.html">{$LANG.ADD_ITEM}</a>
  3. {else}Вы не можете добавлять записи в каталог, пока не зарегистрируетесь{/if}
#1 Категории в компоненте Доска объявлений 12 декабря 2011 в 00:55
На главной странице Доски объявлений выводятся список категорий и новые объявления.
1. Как сделать, что при переходе в любую из категорий, список категорий не исчезал?
2. Как сделать, чтобы при просмотре конкретного объявления, список категорий не исчезал?
#5 Версия 1.9 Недочет при цитировании. 10 декабря 2011 в 00:12
• Mike •, ОГРОМНОЕ спасибо!
#6 Клубы в 1.9 Ошибка при сохранении названия 8 декабря 2011 в 00:57
Название клуба с кавычками?
#7 Версия 1.9 Недочет при цитировании. 8 декабря 2011 в 00:51
Кто в курсе, как исправить?
#8 Долгая загрузка страниц сайта 29 ноября 2011 в 11:53
Rossoman, успокойтесь. Когда будет посещаемость, ваша проблема, чудесным образом, решиться сама собой.
#9 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 28 ноября 2011 в 16:19
Нажимайте на здоровье. Это лучше, чем ничего.
#10 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 28 ноября 2011 в 15:26
Если вы сделали все по инструкции написанной выше, переходите по ссылке ВашСайт.ru/emailtouser
1. Вводите текст для личного сообщения.
2. Нажимаете кнопку "Начать рассылку".
3. Первая "порция" из 50 Личных сообщений и Уведомлений на email будет отправлена.
4. После этого надо будет нажать кнопку "Отправить еще".
5. Отправятся следующие 50 Личных сообщений и Уведомлений на email.
И так до тех пор, пока не дойдете до конца списка.
В результате работы скрипта сообщения на мыло будут отправлены всем пользователям.

После создания доп компонента. Его же как то надо связать с отправкой собщений. Там обращение где нибудь к новому компоненту нужно ведь прописать?

fact
Кроме вышеуказанной инструкции ничего делать не надо. Не нужно ничего "связывать" и "прописывать".
#11 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 28 ноября 2011 в 13:32
Временное решение. Сделал на скорую руку как компонент.
Создайте папку ../components/emailtouser.
Создайте в папке emailtouser файл index.html и оставьте его пустым.
Создайте в папке emailtouser файл frontend.php и добавьте в него следующий код:
  1. <?php
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3.  
  4. if ($_SESSION['user']['id'] == "1")
  5. {
  6. $inCore = cmsCore::getInstance();
  7. $inDB = cmsDatabase::getInstance();
  8. $inPage = cmsPage::getInstance();
  9. $inUser = cmsUser::getInstance();
  10.  
  11. $heading = "Отправка сообщений зарегистрированным пользователям";
  12. $inPage->setTitle('Отправка сообщений зарегистрированным пользователям');
  13.  
  14. require('includes/config.inc.php');
  15. $count_users = 50;
  16.  
  17. $messageforusers = $_POST['messagetouser'];
  18. if (!$_POST['sender_ok']) {
  19. $_SESSION['count'] = 0;
  20. unset($_SESSION['count']);
  21. ?>
  22. Сообщение для зарегистрированных пользователей:<br />
  23. <form name="messagetouser" action="/emailtouser" method="post">
  24. <textarea name="messagetouser" rows=5 cols="90%" wrap="off"></textarea>
  25. <input name="count" type="hidden" value="0">
  26. <br /><input type="submit" name="sender_ok" value="Начать рассылку">
  27. </form>
  28. <?
  29. } else {
  30. $heading = "Отправка сообщений пользователям на email";
  31. $inPage->setTitle('Отправка сообщений пользователям на email');
  32.  
  33. $_SESSION['count'] = $_SESSION['count'] + $_POST['count'];
  34. $count = $_SESSION['count'];
  35. $sql = "SELECT id, nickname, email FROM cms_users ORDER BY id DESC LIMIT ".$count.", ".$count_users."";
  36. $result = mysql_query($sql);
  37. $num_rows = mysql_num_rows($result);
  38. $senddate = date("Y-m-d H:i:s");
  39. while ($row = mysql_fetch_row($result)) {
  40. $id = $row['0'];
  41. $nickname = $row['1'];
  42. $email = $row['2'];
  43.  
  44. $query = mysql_query("INSERT INTO cms_user_msg
  45. (`to_id`, `from_id`, `senddate`, `is_new`, `message`, `to_del`, `from_del`) VALUES ('".$id."', '-2', '".$senddate."', 1, '".$messageforusers."', 0, 0)");
  46.  
  47.  
  48. $subject = 'У вас новое сообщение на сайте '.$_CFG['sitename'].'';
  49. $message = 'На сайте '.$_CFG['sitename'].' Вам поступило новое личное сообщение. Чтобы прочитать его, перейдите по ссылке http://'.$_SERVER['HTTP_HOST'].'/users/'.$id.'/messages.html';
  50. $headers = 'MIME-Version: 1.0' . "\r\n";
  51. $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
  52. $headers .= 'From: '.$_CFG['sitemail'].'';
  53. mail($email, $subject, $message, $headers);
  54.  
  55. echo "".$id.", ".$nickname.", ".$email."<br />";
  56. if ($id == "1") break;
  57. }
  58.  
  59. if ($id == "1") {
  60. unset($_SESSION['count']);
  61. echo "Рассылка завершена";
  62. } else {
  63. $a = $count + $count_users;
  64. echo "Отправлено <b>".$a."</b> сообщений и писем";
  65. ?>
  66. <form name="emailtousers" action="/emailtouser" method="post">
  67. <textarea name="messagetouser" rows=5 cols="90%" wrap="off"><? echo $messageforusers; ?></textarea>
  68. <input name="count" type="hidden" value=<? echo $count_users; ?>>
  69. <br /><input type="submit" name="sender_ok" value="Отправить еще">
  70. </form>
  71. <?
  72. }
  73. }
  74.  
  75. } else {
  76. echo "Нефиг тут делать!";
  77. }
  78. ?>
В 15 строке — количество отправляемых сообщений за один раз.
Если версия InstantCMS 1.7 и ниже, нужно изменить строку 45 на эту
  1. (`to_id`, `from_id`, `senddate`, `is_new`, `message`) VALUES ('".$id."', '-2', '".$senddate."', 1, '".$messageforusers."')");
P.S. Скрипт подразумевает, что у администратора id = 1
#12 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 27 ноября 2011 в 10:33
fact, сохраните свой сайт на комп., запустите на Денвере и проверьте сколько писем будет отправлено.
#13 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 26 ноября 2011 в 15:59
Korvin, ничего такого нет. Письма отправляются через foreach без каких либо задержек. Просто и тупо.
  1. foreach ($userlist as $key=>$usr){
  2. $msg_id = cmsUser::sendMessage(USER_MASSMAIL, $usr['id'], $message);
  3. $model->sendNotificationByEmail($usr['id'], $from_id, $msg_id);
  4. }
Естественно, что нужно писать код, который будет делать задержку на отправку кол-ва писем за 1 раз, проверять, отправились все письма или нет, если нет, отправить следующую "порцию" и т.д. до отправки ВСЕХ писем ВСЕМ пользователям.
Fuze решил, что это не проблема InstantCMS, а проблема юзера, который пользует "не правильного" хостера.
"Костыль", в виде set_time_limit(0), можно использовать только при тестах на Денвере, но никак не на работающем проекте.

у вас есть решение на уровне CMS? поделитесь.

Fuze
На данный момент у меня решения нет. В ближайшее время займусь этой проблемой.
Не сомневайтесь Fuze, поделюсь обязательно, т.к. в настоящее время пользоваться массовой рассылкой, тем у кого больше 130 юзеров, не предоставляется возможным.

Временное решение, для тех у кого больше 130 пользователей.
Массовая рассылка сообщений без отправки оповещения на email о новом сообщении:
В файле ../components/users/frontend.php найдите код
  1. foreach ($userlist as $key=>$usr){
  2. $msg_id = cmsUser::sendMessage(USER_MASSMAIL, $usr['id'], $message);
  3. $model->sendNotificationByEmail($usr['id'], $from_id, $msg_id);
  4. }
и замените его на
  1. foreach ($userlist as $key=>$usr){
  2. $msg_id = cmsUser::sendMessage(USER_MASSMAIL, $usr['id'], $message);
  3. //$model->sendNotificationByEmail($usr['id'], $from_id, $msg_id);
  4. }
#14 [ЕСТЬ РЕШЕНИЕ] Версия 1.9 Недочет при массовой рассылке. 26 ноября 2011 в 15:08
Fuze, в каких файлах искать отправку сообщений пользователям.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.