Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • entry
    1
  • comments
    5
  • views
    1,836

About this blog

1.Создать в опенкарте товары, которые логически будут выполнять роль подписок на новости

image-5-1024x551.png

Здесь нужно предусмотреть возможность выбирать подразделы и длительность подписки (на основе опций)

image-6-1024x435.png

2. сделать парсер, например, с помощью simplehtmldom, который будет записывать в БД всю необходимую  новостную информацию c новостных порталов.

image-1.png

3. включить АПИ в админке opencart 3/0/2 по адресу site.ru/admin/index.php?route=user/api/edit. Сгенерировать ключ

4. вставить ключ АПИ в скрипт точки входа  admin/subscmail.php

image-2.png

Программа будет подключаться к API opencart, чтобы оперировать всеми возможностями движка опенкарта для отправки писем подписчикам.

Скрипт admin/subscmail.php нужно поставить на автоматическое выполнение через крон каждый час.

5.В результате отработки subscmail.php происходит вызов метода index контроллера опенкарта catalog\controller\api\contact.php

Здесь подготавливаются данные, необходимые для рассылки: еmail отправителя, новостные материалы,email подписчиков. Для получения информации о подписках и новостных материалах, набежавшим по ним, используется методы модели catalog\model\api\contact.php:

getEmailsByProductsOrdered (получает данные о заказах (подписках) и новостные статьи)

getExperingSubscTotal (определяет по каждому действующему заказу — со статусом «оплачен,в работе» — суммарное количество истёкших подписок + подписок с остатком <=10 дней и количество оформленных подписок),

getProductsSubscRest (подсчитывает остатки времени по подпискам) Если БД содержит актуальные данные, по которым контроллер смог сформировать рассылочный пакет данных, то далее в нём вызывается метод sendEmail для отправки писем подписчикам.

Вся информация берется из таблиц БД:

  • oc_subsc_protocol для протоколирования рассылок по каждому заказу. Позволяет скриптам определять моменты времени, когда уже пора отправлять письма.
  • data_pars для хранения спарсенных новостных статей
  • option_rubric_relation для сопоставление идентификаторов опций опенкарта с индетификаторами изданий/рубрик/подрубрик таблицы data_pars . Например,  здесь прописано,
  •  
image-3.png

что опции 1.08 Происшествия  опенкарта соответствуют Аиф происшествия таблицы парсера data_pars

  • product_edition_relation для сопоставление идентификаторов продуктов опенкарта с идентификаторами изданий таблицы data_pars . Например,  здесь прописано
  •  
image-4.png

что товару «АргументыИфакты» опенкарта соответствует издание Аиф таблицы парсера data_pars

  • subsc_period хранит периоды рассылки дл каждого заказа. Если администратором не выбран период рассылки, то соответствующей записи в таблице не будет.  В таком случае его значение берется по умолчанию равным 2раза/день.

6. для настройки периода рассылки по каждому заказу используется поле

image-7.png

страницы редактирования заказа по адресу site.ru/admin/index.php?route=sale/order/edit

Здесь в стандартный код опенкарта внесены изменения. Это файл admin\view\template\sale\order_form.twig

После строки

<div class="tab-pane active" id="tab-customer">

Добавлен код

              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-mailperiod">Периодичность рассылки</label>
                <div class="col-sm-8">
                  <input max="24" min="1" type="number" name="mailperiod" value="{{ mailperiod }}" placeholder="от 1 до 4 раз в день" id="input-mailperiod" class="form-control" />
                </div>
                <div class="col-sm-2">
                  <button type="button" id="button-save-period" class="btn btn-primary"><i class="fa fa-check-circle"></i> сохранить</button>
                </div>
              </div>
              <script type="text/javascript">
                $(document).on('click','#button-save-period',function () {
                  // Reward
                      $.ajax({
                        url: '{{ catalog }}index.php?route=api/contact/addMailPeriod&api_token={{ api_token }}&order_id={{ order_id }}',
                        type: 'post',
                        data: 'period=' + $('input[name=\'mailperiod\']').val(),
                        dataType: 'json',
                        crossDomain: true,
                        success: function(json) {
                          $('.alert-dismissible, .text-danger').remove();
                          $('.form-group').removeClass('has-error');

                          if (json['error']) {
                            $('#content > .container-fluid').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">×</button></div>');

                            // Highlight any found errors
                            $('input[name=\'reward\']').closest('.form-group').addClass('has-error');
                          }

                          if (json['success']) {
                            $('#content > .container-fluid').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">×</button></div>');

                            // Refresh products, vouchers and totals
                            setTimeout(function () {
                              $('#button-refresh').trigger('click')
                            },2000);
                          }
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                          alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                        }
                      });
                });
              </script>

Entries in this blog

КАК ДЕЛАТЬ/ПРОДАВАТЬ ПОДПИСКИ НА БАЗЕ OPENCART. СОЗДАЁМ МАГАЗИН ПОДПИСОК.

1.Создать в опенкарте товары, которые логически будут выполнять роль подписок, например, на газеты Здесь нужно предусмотреть возможность выбирать подразделы и длительность подписки (на основе опций) 2. сделать парсер, например, с помощью simplehtmldom, который будет записывать в БД всю необходимую  новостную информацию c новостных порталов. 3. включить АПИ в админке opencart 3/0/2 по адресу site.ru/admin/index.php?route=user/api/edit. Сгенерировать ключ 4. вста
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.