Перейти к содержанию
Официальный форум поддержки Simpla

bananovsv

Пользователь
  • Публикаций

    147
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные bananovsv

  1. в notify.php

    подключение такое?

     

    require 'PHPMailer/Exception.php';

    require 'PHPMailer/PHPMailer.php';

    require 'PHPMailer/SMTP.php';

     

    Может быть это только у меня, я не настаиваю.

     

    Но если папку положить в api, то будет так:

    PHP Warning:  require(PHPMailer/Exception.php): failed to open stream: No such file or directory in /…/public_html/api/Notify.php on line 15
    
  2. В 12.05.2019 в 09:35, ABSORBER сказал:

    в папке /api/PHPmailer/

    должны быть файлы https://github.com/kvalood/SimplaCMS-smtp/tree/master/api/PHPMailer

     

    Что конкретно не верно? 

    Что не работает?

     

    Так пишет ошибку, что файлы не найдены. Если положить PHPmailer в корень, то всё работает.

  3. Почитайте внимательно инструкцию на github.

     

    "Находим папку src, копируем из неё все файлы к себе в проект, в папку /api/PHPmailer/ (папку PHPmailer надо создать)"

     

    Ну так я же и говорю, что так неверно. Надо не в /api/PHPmailer/, а в /PHPmailer/ копировать файлы.

  4. API-версия Яндекс-кассы до сих пор стабильно не работает. Миллион ошибок, даже не связанных с Симплой. Рекомендую пока использовать HTTP-версию. Товары для чека и онлайн-касса там работает без проблем.

  5. Полностью согласен. Задал начало, так сказать. Работы там действительно много. 

    Более того, чтобы делал корректно, надо менять просто подписные листы на customers и синхронизировать базы пользователей.

     

    Пока размышляю :)

     

    Не двигались больше в этом направлении?

  6. Вот в Смарти можно заменить текст так:

    {$text|replace:'old':'new'}
    

     

    А как быть, если таких замен штук пятьдесят? Как целый массив таким образом передать? Посоветуйте, как лучше это реализовать.

  7. О, спасибо, а можете подсказать в какой момент отправляете события?

     

    1. Impressions  - в такой постановке ощущение, что должно быть что-то вида pagescroll страниц, на которых есть товары

    2. Click - видимо привязано к событию onclick ссылки по товару на сайте

    3. Detail - просмотр карточки, на странице product.tpl?

    ----

    4. Add - разобрались.

    5. Checkout - разобрались

    6. Purchase - готово. 

    ----

     

    По Remove понял, этим можно пренебречь. 

     

    Всё, кроме кликов и добавления в корзину нужно отправлять сразу с загрузкой страницы.

     

    Detail — да, product.tpl.

     

    Про Impressions не понял вопроса. В зависимости от версии скрипта реализация может быть разной.

     

    Например, в analytics.js я ставлю код показов товара прямо в цикл вывода товаров и после него отправляю всё событием с параметром non-interaction (это важно, иначе будут дублироваться просмотры страниц).

     

    В случае с gtag.js так уже не получится, потому что перечень товаров и отправка там в одном блоке кода. Для него мне приходится дублировать цикл вывода товаров. Я в обычном цикле вывода товаров собираю в массив все айдишники товаров, которые выводятся на странице, а потом прогоняю их в той же последовательности специально для скрипта отправки показов.

     

    Вариант с gtag.js хоть и выглядит более заморочно, но факту удобнее, потому что не нужно к каждому товару лепить код — просто в конце страницы всё пачкой. Ну и он более новый, Гугл рекомендует пользоваться им. Старый скорее всего скоро отключат, как когда-то заменили ec.js на analytics.js.

  8. А, ну тогда, если можно, в общих чертах саму схему?

     

    Фактически в решении данного топика описана отправка только финального события ecommerce: проталкивание продаж и конкретных товаров.

     

    Интересует несколько вещей:

    1) Product Impressions: я так понимаю, что на странице product.html происходит datalayer.push?

    2) Product Click - страница с каталогом и событие onclick по ссылке названия продукта?

    3) Adding product to shopping cart - тут самое сложное место, отправка привязана к событию onclick "добавить в корзину"?

    4) Checkout - просмотр страницы cart.html ?

    5) Purchases - по сути, единственное, что сейчас из данного топика готово

     

    Укажу на слабые места.

     

    Очень часто бывает проблема с отправкой показов. Если товаров на странице хотя бы штук 20-30, то они не пройдут скорее всего из-за ограничения объема. Т. е. вообще ничего не отправится. Это обычно никто не замечает и получают неверные данные в Аналитике — конверсия кликов выше, чем на самом деле. Потому что клик отправится, а показ нет.

     

    Вариантов решений два:

    1. Вообще не отправлять названия товаров, а только айди. Как раз названия товаров и категорий занимают много места. Особенно на русском языке. Но это не очень удобно потом в отчетах Аналитики.

    2. Слать всё пачками по 10-20 штук. Для этого в цикле выводить код показов. Реализация зависит от конкретного сайта. Тут нужно не налажать с параметром position — чтобы он не заново начинался, а продолжался.

     

     

    Еще нужно иметь в виду, что не все нужные данные по умолчанию есть в нужных шаблонах. Их выборку нужно дописывать. Например, категории товара на странице корзины и заказа. Цены и категории у просмотренных товаров.

     

     

    На странице заказа нужно только один показывать событие, чтобы транзакции не задублировались. Автор темы приводит вариант реализации. Я его еще дополнил временем заказа. Показываю событие только если переход со страницы корзины и заказ был сделан меньше минуты назад:

    {if $module == 'OrderView' && $smarty.server.HTTP_REFERER|strpos:'/cart' && ($order->date|date_format:'%D %T' > '-1 minute'|date_format:'%D %T')}
    // Тут код события purchase
    {/if}

     

    А то если в истории браузера назад-вперед походить, то покажется еще раз. Все повторы в рамках сессии в 30 минут Гугл-аналитика сама склеит, а после 30 минут будет дубль, если это условие не делать.

  9. А, ну тогда, если можно, в общих чертах саму схему?

     

    Фактически в решении данного топика описана отправка только финального события ecommerce: проталкивание продаж и конкретных товаров.

     

    Интересует несколько вещей:

    1) Product Impressions: я так понимаю, что на странице product.html происходит datalayer.push?

    2) Product Click - страница с каталогом и событие onclick по ссылке названия продукта?

    3) Adding product to shopping cart - тут самое сложное место, отправка привязана к событию onclick "добавить в корзину"?

    4) Checkout - просмотр страницы cart.html ?

    5) Purchases - по сути, единственное, что сейчас из данного топика готово

     

    1. Impressions — это показы товаров в списках, а не один товар. На главной, в каталоге, во всяких рекомендуемых и просмотренных товарах, в корзине. Везде, где есть ссылка на товар.

     

    2. Click — это то же самое, только клики, а не показы.

     

    3. Add — добавление в корзину. Но это не сложнее, чем предыдущий пункт — реализация аналогична. Просто при клике на кнопку добавления в корзину отправляете событие.

     

    4. Сheckout —  да, страница корзины.

     

    5. Purchase — страница заказа.

     

    В вашем списке не хватает самого главного: Detail. Это как раз посещение страницы товара.

     

    Еще можно сделать Remove — удаление из корзины. Но будет нелегко, если у вас в селектах меняется количество — придется при каждом изменении пересчитывать разницу и отправлять новое событие. Я обычно это не делаю — никакой пользы в отчетах Гугл-аналитики от этого нет. Ограничиваюсь только полным удалением товара из корзины. Но в Симпле это тоже не даст верной картины, поскольку корзина к сессии привязана и сбрасывается быстро. В общем, Remove —по желанию, главное чтобы Add был — он в основных отчетах участвует.

  10. Скорее, не хватает времени подробно разобраться, понятно, что надо добавить в некоторое число мест dataLayer.push, но где и что конкретно пока не разобрался.

     

    Можете помочь? Напишите в личку, обсудим.

     

    Меня работа на заказ не интересует, но готов подсказать в конкретных моментах, если будет сложность — там их хватает.

  11. Всем привет, а кто-нибудь настраивал полную цепочку конверсий?

     

    В данном доке в первом посте описана фактически только итоговая информация о покупке.

    А вот импрессии продуктов, клики, добавление в корзину, просмотр корзины?

     

    Короче говоря, занимался ли кто-нибудь полноценной работой по данному документу?

    https://developers.google.com/tag-manager/enhanced-ecommerce

     

    Да, я всё настраивал. И для analytics.js, и для нового gtag.js. Но без менеджера тегов.
     
    Столкнулись со сложностью?
  12. Так что, можно использовать ваш способ?) Сообщество одобряе?)

     

    Рекомендую вам прочитать все ответы. В теме куча решений на любой вкус — от дилетантских до заморочных.

    Я бы сделал так (это по-дилетантски):

    if($_SESSION['admin'])
        $theme = 'new';
    else
        $theme = 'old';
    
    $this->settings->theme = $theme;

    Но правильнее однозначно решение, которое предлагает yr4ik.

  13. Вы просто гигант мысли. Вот автор Simpla не знал такой хорошей идеи. Он, лапоть отсталый, зачем-то в шаблонах много раз писал сложности типа

    href="design/{$settings->theme|escape}/css/style.css"

    вместо простенького и понятного

    href="design/default/css/style.css".

     

    И заметьте, ни один программист с форума до такой простой идеи не дошел. Но теперь они, конечно, осознают Ваше чудесное открытие и перейдут на Ваш стиль. Мелкие недостатки в Вашем методе, конечно, есть - например, в админке копирование шаблонов работать не будет - но сама идея колоссальная. Если б еще в шаблоне заменить всякие глупости типа {$product->image->filename|resize:800:600:w}  на конкретный текст, было б вообще отлично. И убрать всякие {foreach} {if} {else} - чтоб было ближе к чистому HTML. Так что можете развивать свою идею дальше...

     

    Да, и отец русской демократии. Спасибо.

     

    Вы очень избирательно комментируете.

  14. Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:

    http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250

     

    Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше...

     

    Если сделать так:

    if($_SESSION['admin'])
        $theme = 'new';
    else
        $theme = 'old';
    
    $this->settings->theme = $theme;

    то вы получите рабочий {$settings->theme} в шаблоне, но постоянно будет перезаписываться значение в базе. Лично меня это раздражает. Я бы лучше указал нормальный адрес к шаблону, без переменной.

  15. Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:

    http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250

     

    Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше...

     

    Не вводите никого в заблуждение, называя ошибкой то, что ошибкой не является. Необходимость прописывать верные (шок!) адреса ко всяким стилям и скриптам — просто следствие, а не ошибка. Которое с лихвой компенсируется легкостью доработки. Можете сколько угодно важные щеки надувать, рассуждая о идеальном решении.

     

    Ну напишет человек в шаблоне ссылку так:

    <link rel="stylesheet" href="design/new/css/style.css">

     

    С учетом поставленной задачи это в сто раз проще и приятнее, чем читать ваши комментарии. Да гирю пудовую приятнее поднимать, чем ваши комментарии читать.

  16. Ну вы как всегда, господа. Ищете универсальное решение на годы. Человек хочет временно ставить другую тему, пока разрабатывает её.

     

    В файле api/Design.php после:

    // Берем тему из настроек
    $theme = $this->settings->theme;
    

     

    добавляем:

    if($_SESSION['admin'])
        $theme = 'new';
    

     

    Всё. Делаем копию темы в админке, называем её new.

  17. Здравствуйте!

     

    Вывожу товары через плагин get_products:

    {get_products var=products id=$my_list}
    {foreach $products as $product}
        {$product->name}
    {/foreach}
    

    Список нужных айдишников передаю в массиве $my_list. По умолчанию товары выводятся по position. Как сделать, чтобы они выводились в том порядке, в котором они идут в моем массиве?

  18. Написано хорошо и правильно.

    Только простой пользователь - владелец магазина - вряд ли поймет, что это и к чему. Если он просто у себя сделает такое изменение, то у него АБСОЛЮТНО ничего не поменяется в работе сайта и будет он писать недоуменные вопросы.

    И ответят ему, что это просто шутка гения.  А если серьезно, то чтобы работало хоть в минимальном виде, к этому надо добавить еще с десяток разных изменений как в десятке файлов, так и в структуре базы. Как минимум, надо поменять вызовы модифицированной функции...

     

    Возьметесь доделать решение да Винчи?

  19.  

    Не имел в виду никаких намеков. Просто сделал мимоходом замечание к Вашему утверждению, которое, по-моему, неверно.

    Но это вопрос мелкий и довольно расплывчатый. Куда интереснее, справились ли Вы с основным.

     

     

    Не пытался справляться. У меня функциональность наличия не используется, а позиции вариантов проставлены верно. Но я согласен, что решение далеко от идеального и подойдет не всем. Было бы здорово, если бы брался наименьший доступный вариант товара. Если знаете, как сделать — поделитесь решением.

×
×
  • Создать...