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 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:

  1. Der Counter-Manager muss 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 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>