-
Публікації
241 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем drnemo
-
-
Подскажите под 3.0.2 подойдет? И полностью можно отключить загрузку файлов?
-
1 час назад, mpavelvl сказал:
он там вообще не отображается
даже в пропавших (фильтр по статусу заказа)?
-
Для учета целей в я.метрике использую вызов функции ym(IDсчетчика, 'reachGoal', 'IDЦели');
Для целей добавления в корзину и покупки добавляю вызов функции в скрипт нажатия на кнопку - все работает как надо. Теперь встал вопрос отслеживания цели в метрике "Регистрация пользователя" - куда добавить вызов, если регистрация может быть на этапе оформления заказа (стоит simple) и отдельно (тут более проще, можно хоть на загрузку страницы об успешной регистрации)?
-
Добрый день!
На 3.0.2 работает?
-
12 часов назад, forlan сказал:
тоже хочу такое сделать...
видимо в шаблоне product/category убрать <p>{{ product.description }}</p>
- 1
-
53 минуты назад, axaxaxa сказал:
можете дать свой вариант для отслеживания самой покупки товара, с контролером
Делал для одновременного использования с эл. коммерцией яндекса
Это в шаблоне common/success перед футером
Спойлер<script type="text/javascript"> if(typeof dataLayer != 'undefined') { dataLayer.push({ "ecommerce": { "purchase": { "actionField": { "id" : "{{ metrika_order_id }}" }, "products": [ {% for product in metrika_order_products %} { "id": "{{ product.metrika_product_id }}", "name": "{{ product.metrika_product_name }}", "price": {{ product.metrika_product_price }}, "quantity": {{ product.metrika_product_quantity }}, "brand": "{{ product.metrika_product_manufacturer }}", "category": "{{ product.metrika_product_category }}" }, {% endfor %} ] } }, 'event': 'gtm-ee-event', 'gtm-ee-event-category': 'Enhanced Ecommerce', 'gtm-ee-event-action': 'Purchase', 'gtm-ee-event-non-interaction': 'False', }); } </script>
это в контроллере checkout/success.php
в начале переменные
$data['metrika_order_products'] = array(); $data['metrika_order_id'] = false;
после if (isset($this->session->data['order_id'])) {
Спойлер$data['metrika_order_id'] = $this->session->data['order_id']; $this->load->model('account/order'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $order_products = $this->model_account_order->getOrderProducts($data['metrika_order_id']); foreach($order_products as $order_product) { $product_info = $this->model_catalog_product->getProduct($order_product["product_id"]); $categories_product = $this->model_catalog_product->getCategories($order_product["product_id"]); if($product_info) { $metrika_product_category = ""; if(count($categories_product) > 0) { $category = array_pop($categories_product); $category_info = $this->model_catalog_category->getCategory($category['category_id']); if ($category_info) $metrika_product_category = $category_info['name']; } $data['metrika_order_products'][] = array( "metrika_product_id" => $order_product["product_id"], "metrika_product_name" => $order_product["name"], "metrika_product_price" => $order_product["price"], "metrika_product_quantity" => $order_product["quantity"], "metrika_product_manufacturer" => $product_info['manufacturer'], "metrika_product_category" => $metrika_product_category ); } }
для заказа вроде все (но если что забыл не обессудьте, по памяти писал )
- 2
-
8 минут назад, axaxaxa сказал:
<?xml version="1.0" encoding="utf-8"?> <modification> <name>Google Analytics Comércio Eletrônico para OpenCart 3</name> <code>google-analytics-ecommerce</code> <version>4.0.0</version> <author>OpenCart Brasil</author> <link>http://www.opencartbrasil.com.br</link> <file path="catalog/model/checkout/order.php"> <operation> <search><![CDATA[public function getOrder($order_id) {]]></search> <add position="before"><![CDATA[ public function getGTAG($order_id) { $order_query = $this->db->query("SELECT o.order_id, o.store_name, o.language_id, o.currency_code, o.currency_value, o.total FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $language_id = $order_query->row['language_id']; $currency_value = $order_query->row['currency_value']; $order_product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach ($order_product_query->rows as $product) { $i = 0; $category_data = ''; $category_query = $this->db->query("SELECT cd.name FROM `" . DB_PREFIX . "product_to_category` pc INNER JOIN `" . DB_PREFIX . "category_description` cd ON pc.category_id = cd.category_id WHERE pc.product_id = '" . (int)$product['product_id'] . "' AND cd.language_id = '" . (int)$language_id . "'"); foreach ($category_query->rows as $category) { $i++; if ($i <= 5) { $category_data .= $category['name'] . '/'; } } $category_data = rtrim($category_data, '/'); $option_data = ''; $order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($order_option_query->rows as $option) { if ($option['type'] != 'file') { $option_data .= $option['name'] . ': ' . (utf8_strlen($option['value']) > 20 ? utf8_substr($option['value'], 0, 20) . '..' : $option['value']) . ' - '; } } $option_data = rtrim($option_data, ' - '); $products[] = array( 'id' => $product['model'], 'name' => $product['name'], 'category' => $category_data, 'variant' => $option_data, 'price' => (($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0)) * $currency_value), 'quantity' => $product['quantity'] ); } $order_shipping = 0; $order_total_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_total` WHERE order_id = '" . (int)$order_id . "' ORDER BY sort_order ASC"); foreach ($order_total_query->rows as $total) { if ($total['value'] > 0) { if ($total['code'] == "shipping") { $order_shipping += $total['value']; } } } return array( 'transaction_id' => $order_query->row['order_id'], 'affiliation' => $order_query->row['store_name'], 'value' => $order_query->row['total'] * $currency_value, 'currency' => $order_query->row['currency_code'], 'shipping' => $order_shipping * $currency_value, 'items' => $products ); } else { return false; } } ]]></add> </operation> </file> <file path="catalog/controller/checkout/success.php"> <operation> <search><![CDATA[public function index() {]]></search> <add position="after"><![CDATA[ $data['gtag_event'] = ''; if (isset($this->session->data['order_id'])) { if ($this->config->get('analytics_google_status')) { $this->load->model('checkout/order'); $event_info = $this->model_checkout_order->getGTAG($this->session->data['order_id']); if ($event_info) { $data['gtag_event'] .= '<script>'."\n"; $data['gtag_event'] .= 'gtag(\'event\', \'purchase\', {'."\n"; $data['gtag_event'] .= sprintf('"transaction_id": "%s", "affiliation": "%s", "value": %s, "currency": "%s", "shipping": %s,', $event_info['transaction_id'], $event_info['affiliation'], $event_info['value'], $event_info['currency'], $event_info['shipping'])."\n"; if (isset($event_info['items']) && is_array($event_info['items'])) { $data['gtag_event'] .= '"items": [ '."\n"; foreach ($event_info['items'] as $item) { $data['gtag_event'] .= sprintf('{ "id": "%s", "name": "%s", "category": "%s", "variant": "%s", "quantity": %s, "price": "%s" },', $item['id'], $item['name'], $item['category'], $item['variant'], $item['quantity'], $item['price'])."\n"; } $data['gtag_event'] .= ' ]'."\n"; } $data['gtag_event'] .= ' });'."\n"; $data['gtag_event'] .= '</script>'; } } } ]]></add> </operation> </file> <file path="catalog/view/theme/*/template/common/success.twig"> <operation> <search><![CDATA[{{ footer }}]]></search> <add position="before"><![CDATA[ {% if gtag_event %}{{ gtag_event }}{% endif %} ]]></add> </operation> </file> </modification>
этот контролер подойдет, ну ток значения переменных поменять?
да, есть такой модуль, НО он только для продажи - нет просмотров товара, добавление/исключение в корзину - все это расширенная аналитика "Enhanced Ecommerce" (модули или платные или самому писать)
-
22 минуты назад, toyotatop сказал:
smtp
в логах OC есть ошибки (система/обслуживание/журнал ошибок)? Доступ к логам сервера есть? там есть что-нибудь (для apache, например, могут быть здесь /var/log/apache2/error.log)?
Если везде пусто, то попробовать написать хостеру smtp сервера с указанием времени/темы/получателя тестового сообщения.
Если до этого все работало, ничего не меняли на сервере и вдруг перестало, то скорей всего к хостеру, но без логов ошибок - гадание на кофейной гуще
-
59 минут назад, toyotatop сказал:
Куда лезть, подскажите плиз
наверное начать с того, чем отправляете: phpmail или smtp
-
вот здесь подробно расписано как через tag manager настроить расширенный ecommerce - тут (но не OC!).
Для OC примерно такие скрипты писал:
<script type="text/javascript"> window.dataLayer = window.dataLayer || []; if(typeof window.dataLayer != 'undefined') { dataLayer.push({ "ecommerce": { "detail": { "products": [ { "id": "{{ metrika_product_id }}", "name" : "{{ metrika_product_name }}", "price": {{ metrika_product_price }}, "brand": "{{ metrika_product_manufacturer }}", "category": "{{ metrika_product_category }}" } ] } }, "event": "gtm-ee-event", "gtm-ee-event-category": "Enhanced Ecommerce", "gtm-ee-event-action": "Product Details", "gtm-ee-event-non-interaction'": "True"}); } </script>
но там много чего еще надо писать (контроллер, например)
-
10 минут назад, PaulKravchenko сказал:
Я опять наверное дичь какую-то сморожу))
я тоже думал, но решил не лезть лишний раз в контроллер ради отображения и убрал правами
-
7 минут назад, chukcha сказал:
так из расширений оно не исчезнет если есть права
убрал права на группе, все ушло, спасибо
-
21 час назад, chukcha сказал:
сразу после index
return '' - зачем вам лишний запрос на внешний сервер?сделал так, кэш модификаторов и темы обновил, кэш браузера почистил, но из расширений не исчезло (
Спойлер<?php class ControllerExtensionExtensionPromotion extends Controller { public function index() { return ''; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, OPENCART_SERVER . 'index.php?route=api/promotion&type=' . substr($this->request->get['route'], strrpos($this->request->get['route'], '/') + 1)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl, CURLOPT_TIMEOUT, 30); $response = curl_exec($curl); curl_close($curl); if ($response) { return $response; } else { return ''; } } }
-
10 минут назад, PaulKravchenko сказал:
но у себя сделал так:
элегантно )))
-
-
3 минуты назад, PaulKravchenko сказал:
Было, модули раздела promotion, подробнее здесь:
да, спасибо, оно. Но только решение не написано какое Отключить права админу на этот модуль?
-
-
-
Не получается изменить session.gc_maxlifetime, apache+php. Путь к php.ini беру из команды php -i |grep php.ini, правлю параметр и перезапускаю apache (sudo service apache2 restart), в итоге в phpinfo ничего не поменялось.
update: отбой, взял путь к php.ini из Loaded Configuration File phpinfo и все обновилось, странно что php -i |grep php.ini показывает другой путь
-
2 минуты назад, kJlukOo сказал:
тут попробуйте очистить (не уверен, что поможет, но шансы есть)
Да, категории появились, буду пробовать. Спасибо
-
11 минут назад, kJlukOo сказал:
какая версия опенкарта?
3.0.2, поставилось (обновилось) без ошибок
-
32 минуты назад, AlexDW сказал:
1440/60 = 24 минуты, неудивительно
попробую на 86400 поставить
-
-
16 часов назад, kJlukOo сказал:
добавил исключения категорий. пока все айдишником через запятую
добавил поддержку снижения налогов после скидки
тестил верси 2.3 и 3. 1.5 и 2.1-2 не тестил еще
Отлично! Обновить в 3 просто через установку расширений, старую версию удалять не надо?
[Поддержка] Rgb Карусель продуктов
в Слайдшоу, баннеры, галереи
Опубліковано:
И еще вопрос: карусель, например, новинки, можно будет добавить через схемы/макеты, например, на главную страницу (а не показывать в категориях)?