Как я могу применить отслеживание загрузки GA с Sitecore? - PullRequest
0 голосов
/ 11 ноября 2011

Я отправляю этот вопрос в Stackflow b / c, после тщательного изучения ответа на этот самый вопрос в Интернете. Я не нашел прямого ответа и должен был сделать свою собственную работу, чтобы решить эту проблему.

По сути, Sitecore использует файл обработчика .ASHX для всех файлов, загружаемых в библиотеку мультимедиа.Поскольку сторонний инструмент отслеживания GA, который я использовал (entourage.js или gatags.js), не распознает .ashx как файл загрузки из белого списка, он не добавляет соответствующий синтаксис отслеживания GA в трекер пикселей GA (__utm.gif).

Таким образом, решение оказывается простым, но, к сожалению, не имеет обратной силы, то есть все файлы, ранее загруженные в библиотеку мультимедиа в дереве содержимого Sitecore, будут продолжать использовать расширение ashx, пока вы не перезагрузите изображение.В файле web.config найдите параметр «Media.RequestExtension».Если вы измените значение, связанное с этим параметром, с «ashx» на пустую строку, это заставит Sitecore использовать оригинальное расширение файла и изображения в библиотеке мультимедиа Sitecore.

Помимо вмешательства в аналитику GA,этот метод превращения каждого загружаемого расширения файла в файл Ashx является плохой практикой SEO.И, Sitecore не укажет вам правильное направление обхода, кроме обходного пути (динамическое связывание и настройка Google Sitecore), потому что они хотят, чтобы вы использовали их возможность отслеживания загрузки Sitecore OMS.И это все!Два дня исследований привели меня к такому выводу.

Ответы [ 3 ]

1 голос
/ 23 апреля 2013

Вы можете использовать этот скрипт для отслеживания событий загрузки через Google Analytics.

if (typeof jQuery != 'undefined') {

            jQuery(document).ready(function($) {
                var filetypes = /\.(zip|pdf|doc*|xls*|ppt*|jpg|ashx)$/i;
                var baseHref = '';
                if (jQuery('base').attr('href') != undefined) baseHref = jQuery('base').attr('href');
                jQuery('a').each(function() {
                    var href = jQuery(this).attr('href');
                    if (href) {

                        if (href.indexOf('?') != '-1') {
                            href = href.substring(0, href.indexOf('?'));
                        }

                        if (href.match(filetypes)) {
                            jQuery(this).click(function() {
                                var extension = String((/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined);
                                var filePath = String(href);

                                _gaq.push(['_trackEvent', 'Download', extension, filePath]);
                                if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
                                    setTimeout(function() {
                                        location.href = baseHref + href;
                                    }, 200);
                                    return false;
                                }
                            });
                        }
                    }
                });
            });
        }

Просто добавьте необходимые типы файлов здесь, в этой строке -

var filetypes = /. (zip | pdf | doc * | xls * | ppt * | jpg | ashx) $ / i;

0 голосов
/ 14 ноября 2011

Таким образом, решение оказывается простым, но, к сожалению, не имеет обратной силы, Это означает, что все файлы, ранее загруженные в библиотеку мультимедиа в Дерево контента Sitecore будет продолжать использовать расширение ashx, если только Вы перезагружаете изображение.

Не знаю, откуда у вас эта информация, но она неверна. Вы можете очистить настройку Media.RequestExtension, и все существующие файлы будут использовать свое исходное расширение. В интегрированном режиме IIS7 вы должны иметь возможность вносить эти изменения без необходимости вносить другие изменения в конфигурацию сервера.

Редактировать: Подробнее

Если вы проанализируете Sitecore.Configuration.Settings.Media.RequestExtension (API, эквивалентный этим настройкам) в декомпиляторе, вы увидите, что он используется только MediaProvider при создании URL-адреса мультимедиа. Sitecore должен помнить исходное расширение мультимедиа и может предоставлять его с исходным URL-адресом независимо от того, каким был этот параметр при загрузке. В любом случае, это мой опыт, и, похоже, это подтверждается просмотром Sitecore.Kernel.

0 голосов
/ 11 ноября 2011

Сделав быстрый Google для gatags.js, я вижу, что вы можете добавить расширение в белый список в строке 24:

var isDoc = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);

Измените его на:

var isDoc = path.match(/\.(?:ashx|doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);

В качестве альтернативы, вы можете присоединить Google Analytics _trackEvent самостоятельно с помощью селектора dom и события щелчка.

В любом случае, я думаю, что OMS может отслеживать файлы библиотеки мультимедиа независимо от расширения - удаляя расширение ashx по умолчаниюне останавливает обработку файла Sitecore.

...