Manuelles Nachrüsten der 16er Statistik in älteren Projekten (z.B. BASE Classic)

Nutzbar ab: Version 16

Die Statistik-Funktionen zu CM-Version 16 finden Sie im BASE (Mobile First) Projekt umgesetzt. Ältere Projekte, wie z.B. die BASE Classic 2.x können Sie manuell nachrüsten.

Für die Funktionalität sind nur wenige Skripte erforderlich, welche in bestehenden Projekten entweder manuell abgelegt werden können oder über ein Weblic® Update der globalen BASE Classic Templates nachinstalliert werden (manuelles Einbinden erforderlich).

Zur BASE (Mobile First) können die Skripte mit aktiver CMS-Version 16 über die weiteren Werkzeuge installiert werden.

Ablage der erforderlichen Skripte (wa.js, wa.php)

/[IHR-GLOBALES-PROJEKT]/wGlobal/layout/scripts/wa.js
/[IHR-GLOBALES-PROJEKT]/wGlobal/scripts/php/wa.php

Diese Skripte finden Sie in jeweils aktueller Fassung im aktuellsten Mobile First Projekt. In der BASE Classic wurden diese ebenso im Standard nachgerüstet (Stand: September 2021) - auf die Aktualität im BASE Classic Projekt kann allerdings keine Gewährleistung gegeben werden, weshalb Sie dies am besten mit einer aktuellen BASE (Mobile First) abgleichen.

Diese Skripte können Sie zu einer BASE (Mobile First) auch über das weitere Werkzeug "BASE Analyzer / Updater" und dort die Auswahl "Erweiterte Statistik für Version 16 aktivieren" installieren.
Beachten Sie, daß Änderungen in den Skripten nur in der Mobile First erfolgen und in einer anderen Projektgrundlage manuell nachzuziehen sind.

includes.global.php (im htmlHeader-Template)

Um die erforderlichen Skripte in den Webseiten einzubinden, reicht es aus, das wa.js JavaScript über die includes.global.php zu registrieren. Nachfolgendes Beispiel zeigt dies auf, was am besten nach dem Einbinden der design.js vorzunehmen ist. In der BASE Classic wurden dies im Standard bereits nachgerüstet (Stand: September 2021), inkl. der Abfrage auf die Projektkonfiguration wie in der BASE (Mobile First).

Beispiel: Auszug aus /[IHR-GLOBALES-PROJEKT]/wGlobal/layout/templates/misc/includes.global.php

    <xsl:value-of select="php:functionString('wPageCur::registerJs', concat($wGlobalProjectPath, '/wGlobal/layout/scripts/wa.js'), '')"/>

In der BASE Classic wurden dies im Standard bereits nachgerüstet (Stand: September 2021), inkl. der Abfrage auf die Projektkonfiguration wie in der BASE (Mobile First):

Beispiel: Auszug aus /[IHR-GLOBALES-PROJEKT]/wGlobal/layout/templates/misc/includes.global.php

    <xsl:if test="php:functionString('wVariables::getValue', 'log_requests_wa', $wGlobalProjectPath) = 'yes'">      
      <xsl:value-of select="php:functionString('wPageCur::registerJs', concat($wGlobalProjectPath, '/wGlobal/layout/scripts/wa.js'), '')"/>
    </xsl:if>

Beispiel: Auszug aus der Projektkonfiguration - /[IHR-GLOBALES-PROJEKT]/wGlobal/content/variables/default.wVariables.php

  <variable description="Erweiterte Statistik nutzen (ab Version 16 auswertbar)" key="log_requests_wa" type="char.yesno">yes</variable>

Anpassungen in der design.js

Für das Interaktions-Tracking (nutzbar ab der Version 16) ist zudem die design.js zu erweitern. In der BASE Classic wurde dies im Standard bereits nachgerüstet (Stand: September 2021).

Beispiel: Auszug aus /[IHR-GLOBALES-PROJEKT]/wGlobal/layout/scripts/design.js

// ...

////////////////////////////////////////////////////////////////
//
// Initialisieren der Seite
//
////////////////////////////////////////////////////////////////

jQuery(document).ready(function(){

  // ...

  if(typeof wEditor === 'undefined'){
    if(typeof wUiTmp['wHasWa'] !== 'undefined' && wUiTmp['wHasWa']){
      addInteractionTracking();
    }
  }
});

// ...

////////////////////////////////////////////////////////////////
//
// Ergänzt Interaktions-Tracking (nutzbar ab der Version 16)
//
////////////////////////////////////////////////////////////////

addInteractionTracking = function(root){

  jQuery('a[href*="http"]').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).attr('href')}, category : 'extern'});
  jQuery('a.mail, a.wpst').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).html()}, category : 'mail'});
  jQuery('a.phone').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).html()}, category : 'phone'});

  jQuery('video').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).attr('src')}, category : 'video'});
  
  jQuery('.tab').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).children('div').first().html()}, category : 'tab'});
  jQuery('.accordionHeader').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).first().text()}, category : 'accordion'}); 
  
  jQuery('.listBannerSlider .listMoverBack').wAnalyzeEvents({event : 'click', label : 'Back', category : 'bannerSelect'});   
  jQuery('.listBannerSlider .listMoverForward').wAnalyzeEvents({event : 'click', label : 'Forward', category : 'bannerSelect'});   
  jQuery('.listBannerSlider .listEntriesPreview .listEntry').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).closest('.listBannerSlider').find('.listEntry .listEntryTitle').eq(jQuery(this).index()).text()}, category : 'bannerSelect'}); 
  jQuery('.listBannerSlider .listEntry.clickable').wAnalyzeEvents({event : 'click', label : function(){return jQuery(this).find('.listEntryTitle').text()}, category : 'banner'});   
};