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 folgender Form:
<script
type="text/javascript"
src="/ies/counter?SYS_CNTR_id=101020100000001157-1015%3Ahits;SYS_CNTR_mode=;SYS_CNTR_varname=sp_counter">
</script>
Ab Version 2.0.3 generiert spt:counter alternativ auch PHP-Code, sobald das Attribut language
auf den Wert php
gesetzt wird. <spt:counter name="hit" language="php"/>
erzeugt PHP-Code in folgender Form:
<?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 den Wert eins erhöht. Es gilt zu Beachten, dass der counter-Tag ausschließlich im Ausgabebereich eines Templates genutzt wird. 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 nutzen zu können müssen zwei Bedingungen erfüllt sein:
- Der Counter-Manager muss 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 sein. Dazu ist es nötig, dass der Publikationsbereich in dem die Seite generiert wurde als Webapplikation im IES aktiviert ist. 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 im 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 aus dem 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 Variable in der der Zugriffswert gespeichert wird.
mode
- Der Zähler kann in verschiedenen Modi betrieben werden. Gültige Modi sind:
- read
- Counter wird nicht hochgezählt, sondern es wird nur der aktuelle Zählerstand als Variable ausgegeben.
- write
- Counter wird hochgezählt, aber es wird keine Variable gesetzt.
- keine Angabe
- Counter wird hochgezählt und der aktuelle Zählerstand wird als Variable ausgegeben.
varName
- der Name der Variable, 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. Stattdessen sollte
varname
verwendet werden.
varname
- der Name der Variable, 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>