Counter (SPT-Tag)
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:
- Der Counter-Manager muß aktiviert sein. Dieser kann über die Administrations-Oberläche des IES im Bereich 'Dienste' gestartet werden.
- 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>