Хак InstantShop - отправка сообщений покупателям конкретного товара

+15
1.55K
Даный хак позволяет отправлять сообщение для покупателей купивших конкретный товар. Мне например это очень пригодилось для отправки обновлений цифровых товаров — просто выбрал товар > нажал кнопку "Отправить сообщение" > написал сообщение со ссылкой на архив с обновлением и всем отправилось на почту, указанную при покупке.

Скрины:
Иллюстрация
Иллюстрация
Работы совсем немного, но прежде чем начать рекомендую сделать копии всех изменяемых файлов.
Ответственность за работоспособность системы после Ваших действий Вы несете сами. Если будут вопросы — отвечаю по мере возможности. Если кто-то не хочет/боится/не умеет править файлы сам, могу установить все за символическое вознаграждение.

Открываем файл \admin\components\shop\items.tpl.php
В этой строчке
  1. <th class="lt_header" align="center" width="65">Действия</th>
надо 65 изменить на 95
Перед
  1. <a title="Посмотреть на сайте" href="/shop/<?php echo $item['seolink'];?>.html">
  2. <img hspace="2" alt="Посмотреть на сайте" src="images/actions/search.gif"/>
  3. </a>
Вставить
  1. <a title="Отправить ообщение покупателям" href="?view=components&do=config&id=<?php echo $component_id; ?>&opt=get_users&item_id=<?php echo $item['id']; ?>">
  2. <img hspace="2" alt="Отправить ообщение покупателям" src="images/actions/message.gif"/>
  3. </a>
Открываем файл \admin\components\shop\backend.php

После
  1. //=================================================================================================//
  2.  
  3. if ($opt == 'copy_cat_chars'){
  4.  
  5. $to_cat_id = $inCore->request('to_cat_id', 'int', 0);
  6. $from_cat_id = $inCore->request('from_cat_id', 'int', 0);
  7.  
  8. if ($to_cat_id && $from_cat_id){
  9. $model->copyCatChars($from_cat_id, $to_cat_id);
  10. }
  11.  
  12. $inCore->redirectBack();
  13.  
  14. }
  15.  
  16. //=================================================================================================//
  17.  
вставить
  1. //=================================================================================================//
  2.  
  3. if ($opt == 'get_users'){
  4.  
  5.  
  6. if ($inCore->inRequest('item_id')){
  7. $id = $inCore->request('item_id', 'int');
  8.  
  9. $item = $inDB->get_field('cms_shop_items', "id={$id}", 'title');
  10. echo '<h3>Почтовые адреса клиентов, купивших товар &laquo;'.$item.'&raquo;:</h3>';
  11.  
  12.  
  13. $sql = "SELECT * FROM cms_shop_loads
  14. WHERE item_id=$id";
  15. $res = $inDB->query($sql);
  16.  
  17. if ($inDB->num_rows($res)){
  18. $baza=array();
  19. while($cat = $inDB->fetch_assoc($res)){
  20. $mail = $inDB->get_fields('cms_shop_orders', "id={$cat[order_id]}", '*');
  21. $cat['email'] = $mail['customer_email'];
  22. $cat['username'] = $mail['customer_name'];
  23. $baza[] = $cat;
  24. }
  25. echo '
  26. <div id="rem">'; echo 'Всего:'.$inDB->num_rows($res).' адресов
  27.  
  28. <table width="605" cellpadding="10" cellspacing="0" class="proptable" style="border:none">
  29. <tr><td><form name="addform" action="" method="post" >
  30.  
  31. <strong>Адресаты:</strong>
  32.  
  33. <input name="mails" type="text" size="67"/ value="';
  34. foreach ($baza as $emails) { echo $emails['email'].','; }
  35. echo '">
  36.  
  37. <strong>Тема:</strong>
  38.  
  39. <input name="sub" type="text" size="67"/>
  40. <p> <strong>Текст сообщения:</strong>
  41. (Вы можете использовать тег <b>{ТОВАР}</b> для вставки названия товара
  42.  
  43. и <b>{ПОКУПАТЕЛЬ}</b> для вставки имени покупателя)
  44.  
  45. <textarea rows="10" cols="50" name="text"></textarea></p>
  46. <input name="item" type="hidden" value="'.$item.'" />
  47. <p><input type="submit" value="Отправить"></p> </form>
  48. </td></tr></table></div>';
  49.  
  50. } else { echo '<strong>Нет данных о покупателях этого товара!</strong>'; }
  51.  
  52. } else { echo '<strong>Не выбран товар!</strong>'; }
  53. echo '<p><a href="index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_items">Вернуться в каталог товаров</a></p>';
  54. }
  55.  
  56. if ($_REQUEST['mails']) {
  57. $message=$_REQUEST['text'];
  58. $message = str_replace("{ТОВАР}", $_REQUEST['item'], $message);
  59.  
  60. $mails = explode(",", $_REQUEST['mails']);
  61. foreach ($mails as $adresat) {
  62. $name = $inDB->get_field('cms_shop_orders', 'customer_email="'.$adresat.'"', 'customer_name');
  63. $smessage=str_replace("{ПОКУПАТЕЛЬ}", $name, $message);
  64. if ($adresat){$inCore->mailText($adresat, $_REQUEST['sub'], $smessage); $count++;}
  65. } if ($count){$msg="Сообщение успешно отправлено ".$count." покупателям!"; }
  66.  
  67. if ($msg){
  68. echo "<script>document.getElementById('rem').style.display = 'none'; $('.toolmenu').css('display', 'none');
  69. </script><p style='color:green'>".$msg."</p>";
  70. }
  71.  
  72. }
  73.  
  74. //=================================================================================================//
  75.  
На всякий случай все есть в этом архиве — http://instantcms.ru/users/files/download2100.html
+2
abasia abasia 11 лет назад #
Полезно, спасибо+
+1
lezginka.ru lezginka.ru 11 лет назад #
+
-2
Алексей Т Алексей Т 11 лет назад #
0
spacer spacer 11 лет назад #
Хороший хак, правильный.
Если такие вещи будут появляться, можно из них потом полноценную CRM-ку собрать для сайта.
0
Олег Олег 11 лет назад #
Спасибо интересно.+
0
Def Def 10 лет назад #
а для 1.10.3 будет работать?)

Еще от автора

Обновление компонента "Replacement замена в контенте" + бонус
Как и обещал, поработал над обновлением компонента Replacement.
Replacement - замена в контенте. Компонент для ICMS 2.x
Компонент на основе фильтра "Красивые заметки в тексте" для первой версии. По просьбам пользователей сделал подобное для второй ветки.
Фильтр ICMS Note - Красивые заметки в тексте
Опять же по просьбе Nomin сделал фильтр для создания красивых заметок в тексте.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.