Counter (SPT-Tag)

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Name

<spt:counter> - Zählt Zugriffe auf publizierte Informationen

Syntax

<spt:counter name="variable" mode="read" varname="variable"/>

Beschreibung

Mit dem sp:counter-Tag kann ermittelt werden wie oft eine Seite aufgerufen wurde.

<spt:counter name="hit"/> erzeugt in der Ausgabeseite im Standard-Fall JavaScipt-Code in Form von

<script 
  type="text/javascript" 
  src="/ies/counter?SYS_CNTR_id=101020100000001157-1015%3Ahits;SYS_CNTR_mode=;SYS_CNTR_varname=sp_counter">
</script>

Ab Version 3.0.2 generiert spt:counter alternativ auch PHP-Code, wenn das Attribute language auf den Wert php gesetzt wird. In diesem Fall wird PHP-Code in folgender Form generiert

<?php
function spt_counter_getCounter() {
    $protocol = ($_SERVER["HTTPS"] == "on") ? "https" : "http";
    $hostname = $_SERVER["HTTP_HOST"]; 
    $url = $protocol . "://" . $hostname . "/ies/counter?SYS_CNTR_id=101020100000001157-1015%3Ahits;SYS_CNTR_mode=;SYS_CNTR_javascript=false";
    return file_get_contents($url);
}
$sp_counter = spt_counter_getCounter();
?>

Bei jedem Aufruf der Seite wird die angegebene Counter-Variable um eins hochgezählt. Der counter-Tag wird ausschließlich im Ausgabebereich eines Templates genutzt. Der Counter-Wert kann im Eingabebereich eines Templates mit sp:print oder sp:text ausgegeben werden. Zu beachten ist hierbei, dass der Counter als Content-Typ "counter" gespeichert wird. Counter werden intern im CounterInformation-Objekt verwaltet.

Um spt:counter Nutzern zu können müssen zwei Bedingungen erfüllt sein:

  1. Der Counter-Manager muß aktiviert sein. Dieser kann über die Administrations-Oberläche des IES im Bereich 'Dienste' gestartet werden.
  2. Die generierte Counter-Url im JavaScript muss per HTTP-Request erreichbar ist. Dazu muß der Publikationsbereich in dem die Seite generiert wurde als Webapplikation im IES aktiviert sein. Zusätzlich muss der Webserver einen JkMount von /ies/counter auf den IES gesetzt haben.

Hinweis: Der Counter-Manager nimmt die Counter-Requests entgegen und erhöht den Counter-Wert zunächst nur im RAM-Speicher, ohne das Feld des Artikels in der Datenbank zu speichern. Dadurch wird verhindert das bei jedem Request Artikel gespeichert werden und es zu Performanz-Problemen kommt. In regelmäßigen Abständen wird der Wert im RAM-Speicher am Artikel gespeichert. Zu beachten ist noch das diese Änderung des Artikels nicht zu einer Neugenerierung der Seite führt. Der Wert des Counters sollte deswegen für generierte Seiten immer mit <sp:counter> und JavaScript und nicht mit <sp:print name="hit.counter"/> ausgegeben werden. Bei Live-Seiten ist <sp:print name="hit.counter"/> möglich, da falls vorhanden der Wert im RAM-Speicher ausgelesen wird. (ab Version 2.0.3)

Attribute

Name Type Required Default ab IES Version
name Variable Ja None 1
mode Text Nein None 1
varName (deprecated ab Version 2.0.3) Text Nein. sp_counter 1
varname Text Nein sp_counter 2.0.3
language Text Nein javascript 2.0.3
name
Name der Variablen in der der Zugriffswert gespeichert wird.
mode
Der Zähler kann in verschiedenen Modi betrieben werden. Gültige Modi sind:
read
Counter wird nicht hoch gezählt, sondern es wird nur der aktuelle Zählerstand als JavaScript-Variable ausgegeben.
write
Counter wird hochgezählt, aber es wird keine JavaScript-Variable gesetzt.
keine Angabe
Counter wird hochgezählt und der aktuelle Zählerstand wird als JavaSript-Variable ausgegeben.
varName
der Name der JavaScript-Variablen, in die der aktuelle Counterwert ausgegeben wird [default=sp_counter].
Deprecated (ab Version 2.0.3) Das Attribut ist veraltet, und sollte nicht mehr verwendet werden. Es sollte statt dessen varname verwendet werden.
varname
der Name der JavaScript-Variablen, in die der aktuelle Counterwert ausgegeben wird [default=sp_counter].
language
Gibt an in welcher Programmiersprache der Code generiert werden soll. Mögliche Werte sind
javascript
Es wird JavaScript-Code generiert
php
Es wird PHP-Code generiert

Beispiele

Mit spt:counter eine Variable setzen

Template Quelltext

<sp:io type="in">
  <sp:text name="meincounter" type="counter"/>
</sp:io>

<sp:io type="out">
  <spt:counter name="meincounter" mode="read"/>
</sp:io>