bananovsv
-
Публикаций
147 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные bananovsv
-
-
в notify.php
подключение такое?
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
Да, всё остальное по вашей инструкции.
-
В 12.05.2019 в 09:35, ABSORBER сказал:
в папке /api/PHPmailer/
должны быть файлы https://github.com/kvalood/SimplaCMS-smtp/tree/master/api/PHPMailer
Что конкретно не верно?
Что не работает?
Так пишет ошибку, что файлы не найдены. Если положить PHPmailer в корень, то всё работает.
-
Почитайте внимательно инструкцию на github.
"Находим папку src, копируем из неё все файлы к себе в проект, в папку /api/PHPmailer/ (папку PHPmailer надо создать)"
Ну так я же и говорю, что так неверно. Надо не в /api/PHPmailer/, а в /PHPmailer/ копировать файлы.
-
Насколько я понял, папку PHPMailer надо положить в корень, а не в папку api, как написано в инструкции.
-
API-версия Яндекс-кассы до сих пор стабильно не работает. Миллион ошибок, даже не связанных с Симплой. Рекомендую пока использовать HTTP-версию. Товары для чека и онлайн-касса там работает без проблем.
-
Полностью согласен. Задал начало, так сказать. Работы там действительно много.
Более того, чтобы делал корректно, надо менять просто подписные листы на customers и синхронизировать базы пользователей.
Пока размышляю
Не двигались больше в этом направлении?
-
Вот в Смарти можно заменить текст так:
{$text|replace:'old':'new'}
А как быть, если таких замен штук пятьдесят? Как целый массив таким образом передать? Посоветуйте, как лучше это реализовать.
-
Вы модуль продаете или инвестиции привлекаете?
Я бы купил такую доработку, если кто-то сделает за разумные деньги. С демо, разумеется.
-
Не отрабатывает ваше решение. Все равно по умолчанию тема и для админа и для обычного юзера
Покажите код.
-
О, спасибо, а можете подсказать в какой момент отправляете события?
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.
-
А, ну тогда, если можно, в общих чертах саму схему?
Фактически в решении данного топика описана отправка только финального события 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 минут будет дубль, если это условие не делать.
-
А, ну тогда, если можно, в общих чертах саму схему?
Фактически в решении данного топика описана отправка только финального события 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 был — он в основных отчетах участвует.
-
Скорее, не хватает времени подробно разобраться, понятно, что надо добавить в некоторое число мест dataLayer.push, но где и что конкретно пока не разобрался.
Можете помочь? Напишите в личку, обсудим.
Меня работа на заказ не интересует, но готов подсказать в конкретных моментах, если будет сложность — там их хватает.
-
Всем привет, а кто-нибудь настраивал полную цепочку конверсий?
В данном доке в первом посте описана фактически только итоговая информация о покупке.
А вот импрессии продуктов, клики, добавление в корзину, просмотр корзины?
Короче говоря, занимался ли кто-нибудь полноценной работой по данному документу?
https://developers.google.com/tag-manager/enhanced-ecommerce
Да, я всё настраивал. И для analytics.js, и для нового gtag.js. Но без менеджера тегов.Столкнулись со сложностью? -
Так что, можно использовать ваш способ?) Сообщество одобряе?)
Рекомендую вам прочитать все ответы. В теме куча решений на любой вкус — от дилетантских до заморочных.
Я бы сделал так (это по-дилетантски):
if($_SESSION['admin']) $theme = 'new'; else $theme = 'old'; $this->settings->theme = $theme;
Но правильнее однозначно решение, которое предлагает yr4ik.
-
Вы просто гигант мысли. Вот автор 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. Так что можете развивать свою идею дальше...
Да, и отец русской демократии. Спасибо.
Вы очень избирательно комментируете.
-
Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:
http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250
Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше...
Если сделать так:
if($_SESSION['admin']) $theme = 'new'; else $theme = 'old'; $this->settings->theme = $theme;
то вы получите рабочий {$settings->theme} в шаблоне, но постоянно будет перезаписываться значение в базе. Лично меня это раздражает. Я бы лучше указал нормальный адрес к шаблону, без переменной.
-
Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:
http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250
Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше...
Не вводите никого в заблуждение, называя ошибкой то, что ошибкой не является. Необходимость прописывать верные (шок!) адреса ко всяким стилям и скриптам — просто следствие, а не ошибка. Которое с лихвой компенсируется легкостью доработки. Можете сколько угодно важные щеки надувать, рассуждая о идеальном решении.
Ну напишет человек в шаблоне ссылку так:
<link rel="stylesheet" href="design/new/css/style.css">
С учетом поставленной задачи это в сто раз проще и приятнее, чем читать ваши комментарии. Да гирю пудовую приятнее поднимать, чем ваши комментарии читать.
-
Ну вы как всегда, господа. Ищете универсальное решение на годы. Человек хочет временно ставить другую тему, пока разрабатывает её.
В файле api/Design.php после:
// Берем тему из настроек $theme = $this->settings->theme;
добавляем:
if($_SESSION['admin']) $theme = 'new';
Всё. Делаем копию темы в админке, называем её new.
-
Класс, спасибо! Второй вариант нравится.
-
Здравствуйте!
Вывожу товары через плагин get_products:
{get_products var=products id=$my_list} {foreach $products as $product} {$product->name} {/foreach}
Список нужных айдишников передаю в массиве $my_list. По умолчанию товары выводятся по position. Как сделать, чтобы они выводились в том порядке, в котором они идут в моем массиве?
-
Написано хорошо и правильно.
Только простой пользователь - владелец магазина - вряд ли поймет, что это и к чему. Если он просто у себя сделает такое изменение, то у него АБСОЛЮТНО ничего не поменяется в работе сайта и будет он писать недоуменные вопросы.
И ответят ему, что это просто шутка гения. А если серьезно, то чтобы работало хоть в минимальном виде, к этому надо добавить еще с десяток разных изменений как в десятке файлов, так и в структуре базы. Как минимум, надо поменять вызовы модифицированной функции...
Возьметесь доделать решение да Винчи?
-
Как-то мутно всё у них. Я бы лучше рассмотрел аналогичное решение у Робокассы.
-
Не имел в виду никаких намеков. Просто сделал мимоходом замечание к Вашему утверждению, которое, по-моему, неверно.
Но это вопрос мелкий и довольно расплывчатый. Куда интереснее, справились ли Вы с основным.
Не пытался справляться. У меня функциональность наличия не используется, а позиции вариантов проставлены верно. Но я согласен, что решение далеко от идеального и подойдет не всем. Было бы здорово, если бы брался наименьший доступный вариант товара. Если знаете, как сделать — поделитесь решением.
Отправка писем через SMTP
в Готовые решения
Опубликовано · Изменено пользователем bananovsv
Может быть это только у меня, я не настаиваю.
Но если папку положить в api, то будет так: