Das faustball.com Plugin für WordPress

Tabellen von Faustball.com

Stand: 28.04.2021

NEU: Ver­si­on 2.0.0 mit kom­plett neu erstell­tem Code! 
Wich­tigs­te Neuerungen:

  • Umstel­lung auf faustball.com,
  • mehr Daten durch JSON Abruf,
  • loka­les Caching,
  • umfas­sen­de Konfigurationsmöglichkeiten,
  • mehr CSS Klas­sen zur Gestaltung

Die­ses klei­ne Plug­in ermög­licht die ein­fa­che Inte­gra­ti­on von dyna­misch aktua­li­sier­ten Tabel­len von www.faustball.com in jede Sei­te, Post und Wid­get. Es bie­tet eine Viel­zahl von Design- und Kon­fi­gu­ra­ti­ons­mög­lich­kei­ten, wie einen benut­zer­de­fi­nier­ba­ren Tabel­len­kopf (inklu­si­ve Daten vom exter­nen Wett­be­werb), eige­ne Spal­ten­über­schrif­ten, Bread­crump Navi­ga­ti­on, Her­vor­he­ben der Tabel­len­zei­le mit der eige­nen Mann­schaft, Kenn­zeich­nung von Zei­len mit Auf­stei­gern und Abstei­gern, als auch die Spal­te mit den Bäl­len auszublenden.

Um die eige­ne Home­page nicht zu blo­ckie­ren, wenn faustball.com nicht recht­zei­tig ant­wor­tet, kann ein frei defi­nier­ba­rer Time­out (Stan­dard 1s) gesetzt wer­den. Die­ses Plug­in ermög­licht auch die Ver­wen­dung von Short­codes in HTML Wid­gets. Schlu­ßend­lich kann man alle Sei­ten nach dem Short­code [faust­ball] durch­su­chen, um die Sei­ten zu fin­den, auf denen man mög­li­cher­wei­se den [faust­ball] Short­code über­ar­bei­ten muss.

Um die Last auf faustball.com zu redu­zie­ren, ver­wen­det die­ses Plug­in für die Tabel­len­da­ten einen loka­len Cache mit ein­stell­ba­rer Ver­weil­dau­er. Nur wenn die Ver­weil­dau­er über­schrit­ten ist, wer­den die Daten wie­der von faustball.com abge­ru­fen. Zusätz­lich wer­den Anfra­gen von Craw­lern, Bots und Spi­der erkannt und dann wer­den Daten aus dem Cache gesen­det. Wenn nötig, kön­nen die Daten im loka­len Cache gelöscht werden.

Kurz vor Ostern 2021 hat mich Dirk Haa­se kon­tak­tiert, er hät­te fest­ge­stellt, dass eine bestimm­te Faust­ball-Home­page pro Tag ca. 5000 Abru­fe bei faustball.de ver­ur­sacht. Manch­mal im Abstand von nur weni­gen Sekun­den. Bei der Über­prü­fung der Ursa­che bin ich dar­auf gesto­ßen, dass für fast 9/10 der Abru­fe soge­nann­te Crawler/Bots/Spider ver­ant­wort­li­che sind, also auto­ma­ti­sier­te klei­ne Pro­gram­me, die Infos über Web­sei­ten abru­fen (z.B. Goo­gle­Bot oder Bing­Bot) und bei jeden „Craw­len“ einer Sei­te damit Abfra­gen bei faustball.de ver­ur­sa­chen. Sind meh­re­re Tabel­len ein­ge­bun­den, kommt es für jede Tabel­le zu einer extra Abfra­ge, das mul­ti­pli­ziert sich dann zu einer ordent­li­chen Summe.

Um den Ser­ver von faustball.de nicht unnö­tig mit Abfra­gen zu belas­ten, habe ich mich dazu ent­schie­den ab Ver­si­on 1.3.0 eine klei­ne Erken­nung von Crawler/Bots/Spider ein­zu­bau­en und dann eben kei­ne Abfra­ge mehr bei faustball.de zu star­ten. Zusätz­lich hat das Plug­in nun auch einen loka­len Cache, in dem für jede abge­ru­fe­ne Tabel­le der Inhalt und die Timestamp des Abrufs gespei­chert wer­den. In den Optio­nen kann man nun die Zeit­dau­er defi­nie­ren, wie lan­ge die Daten der jewei­li­gen Tabel­le gül­tig sind, erst bei Über­schrei­ten erfolgt eine erneu­te Abfra­ge bei faustball.de. Dies redu­ziert zusätz­lich die Anzahl der not­wen­di­gen Abfra­gen und lässt ande­ren, die faustball.de abru­fen mehr Kapa­zi­tät. Der Stan­dard­wert der Gül­tig­keit ist 900 Sekun­den (=15 Minu­ten). Kommt eine Tabel­le aus dem Cache, so steht unten (anstatt www.faustball.com) der Text „Daten von Cache“ samt der Dau­er bis neue Daten von faustball.de/faustball.com abge­ru­fen werden.

In den Optio­nen kön­nen die Cache-Daten wie­der aus der Word­Press Daten­bank gelöscht wer­den. Ent­we­der um die Daten­bank wie­der klei­ner zu bekom­men, um gespei­cher­te Daten von Wett­be­wer­ben, die man nicht mehr braucht, zu ent­fer­nen, oder bei Pro­ble­men, wenn man meint das Plug­in ruft kei­ne aktu­el­len Daten mehr ab.

Wenn ihr eine älte­re Ver­si­on des Plug­ins ohne Caching (vor V1.3.0) ein­setzt, bit­te ich euch daher auf die aktu­ells­te Ver­si­on zu aktua­li­sie­ren, damit der Ser­ver von faustball.com zukünf­tig weni­ger stark von unse­ren Tabel­len-Abfra­gen belas­tet wird. Vie­len Dank!

Die Benutzung ist ganz einfach:

Der Short­code

[faustball contest=<contest>]

ist eigent­lich alles was nötigt ist!

Das Attri­but „con­test“ ist unbe­dingt erfor­der­lich und beschreibt den Wett­be­werb, des­sen Tabel­le dar­ge­stellt wer­den soll. Um die Num­mer zu ermit­teln, den gewünsch­ten Wett­be­werb bei faustball.com auf­ru­fen und die Num­mer aus der URL kopie­ren. Das ist die glei­che Zahl wie die ID in Dirk Haase’s Anlei­tung.
Bei­spiel: Im Feld 2018 in der Bun­des­li­ga Süd der Män­ner ist die Tabel­le hier zu fin­den: https://faustball.com/#/contest/257/competition.
Damit ist contest=257 in den Short­code einzutragen:

[faustball contest=257]

Dies ist die ein­fachs­te Form der Verwendung.

Weitere optionale Attribute

ownteam='<ownteam>' [string/1/0]

Die­ses Attri­but ermög­licht die Aus­zeich­nung der jewei­li­gen Tabel­len­zei­le mit der CSS Klas­se „fb_ownteam“, wenn der über­ge­be­ne Name (auch nur in Tei­len) mit einem Mann­schafts­na­men in der Tabel­le übereinstimmt.
Mit­tels ent­spre­chen­der CSS-Aus­zeich­nung kann die­se Zei­le her­vor­ge­ho­ben werden.
Wird die­sem Attri­but die „1“ über­ge­ben, so wird der „Own­team“ Text, der auf der Plug­in Ein­stel­lungs­sei­te defi­niert ist, verwendet.
Wird die­sem Attri­but die „0“ über­ge­ben, so wird kei­ne CSS Klas­se „fb_ownteam“ hinzugefügt.

balls='<balls>' [0/1]

Über die­ses Attri­but kann die Spal­te „Bäl­le“ aus­ge­blen­det wer­den. Dazu wird die Spal­te mit der CSS-Klas­se „dis­play-none“ ver­se­hen. Eine Defi­ni­ti­on der CSS-Klas­se „dis­play-none“ mit „dis­play: none;“ im Style­sheet ist natür­lich zusätz­lich notwendig.
Der Vor­teil ist, dass es mit die­ser zusätz­li­chen, optio­na­len CSS-Aus­zei­chung im Tabel­len­code mög­lich ist, eine Tabel­le ein­mal ohne Bäl­le (z.B. in einem seit­li­chen Wid­get) dar­zu­stel­len, auf einer Team­sei­te jedoch die glei­che Tabel­le mit den Bällen.
Wird das Attri­but nicht ver­wen­det, so wer­den die Bäl­le dargestellt.

header='<header>' [0/1]

Die­ses Attri­but ermög­licht die Kon­trol­le der Anzei­ge der ers­ten Tabellenkopfzeile.
Wird das Attri­but nicht ver­wen­det, wird die ers­te Tabel­len­kopf­zei­le ange­zeigt. Sie­he auch das Attri­but ‚own­hea­der‘ zu den Formatierungsmöglichkeiten.

ownheader='<ownheader>' [string]

Erlaubt die Gestal­tung der ers­ten Tabel­len­kopf­zei­le mit eige­nem Text und exter­nen Daten vom Wettbewerb.
Wird das Attri­but nicht benutzt oder leer gelas­sen, wird die For­ma­tie­rungs­de­fi­ni­ti­on der Ein­stel­lungs­sei­te ver­wen­det (Stan­dard: ‚%A%: %N% %R%‘).

%A% = Ver­band (Asso­cia­ti­on)
%N% = Name des Wett­be­werbs (Name of contest)
%R% = Region
%C% = Kate­go­rie (Cate­go­ry)
%G% = Geschlecht (Gen­der)
%O% = Text vom own­team Attri­but (leer, wenn das own­team Attri­but nicht defi­niert ist)

Bei­spiel: „Mein Team 1 – %N%“ oder „%O% – %N%“

breadcrump='<breadcrump>' [0/1]

Zeigt die Bread­crump Navi­ga­ti­on von faustball.com in einer zwei­ten Tabellenzeile.
Wird das Attri­but nicht ver­wen­det, wird die­ser Bereich nicht angezeigt.

contestlink='<contestlink>' [0/1]

Steu­ert die Anzei­ge des Tabel­len­fu­ßes, der einen Link zum Wett­be­werb bei faustball.com oder Infos über die Daten im Cache zeigt.
Wird das Attri­but nicht ver­wen­det, wird die­ser Bereich angezeigt.

Kom­plett kann der Short­code dann so aussehen:

[faustball contest=257 ownteam="TV SW-Oberndorf" ownheader="%O% - %C%, %N%" balls=0 contestlink=0]

Die Ansicht die­ses Shortcodes:

Plugin Einstellungen

Das gesam­te Plug­in bie­tet vie­le Kon­fi­gu­ra­ti­ons­mög­lich­kei­ten. Sie­he in der Hil­fe auf der Ein­stel­lungs­sei­te des Plugins.
Es lässt sich ein Such­text für die Mann­schaft vor­de­fi­nie­ren, der bei [faust­ball] Short­codes ver­wen­det wird, die das Attri­but ownteam=’1′ besitzen.
Mit­tels eines For­mat­strings kann eine indi­vi­du­el­le Tabel­len­kopf­zei­le (samt exter­ner Daten des Wett­be­werbs) erstellt werden.
Die Beschrif­tung jeder Spal­ten­kopf­zei­le kann fest­ge­legt wer­den (auch leer lassen).
Defi­ni­ti­on des Time­out, nach­dem das Plug­in die Abfra­ge von Tabel­len­da­ten abbricht (Stan­dard: 1s).
Der Zeit­raum, in dem die zwi­schen­ge­spei­cher­ten Daten im loka­len Cache gül­tig sind, bis neue Daten von faustball.com abge­ru­fen wer­den (Stan­dard: 900s).
Akti­vie­rung der Ver­wen­dung von Short­codes in HTML Wid­gets (Stan­dard: aktiviert).

CSS Beispiel

Hier eine CSS Defi­ni­ton, die schon vie­le Mög­lich­kei­ten der Gestal­tung aus­nutzt. Für eine Ein­füh­rung in CSS-Design emp­feh­le ich die oben genann­te Sei­te unter faustball.com als auch ent­spre­chen­de CSS-Lern­web­sei­ten, wie w3schools.com.

.display-none {
	display: none;
}

.fb_table {
	table-layout: auto; 
	background: #ffffff;
	margin-bottom: 5px;
	border-spacing: 0px;
	max-width: 600px;
	line-height: 1.4em;
	white-space: nowrap;
}

.fb_table tr,
.fb_table td {
	padding: 0.1em 0.15em;
	border-left: hidden;
	border-right: hidden;
	vertical-align: text-top;
}

.fb_table th {
	border-right: none;
	border-left: none;
	padding: 0.2em 0.4em;
}

.fb_header_name {
	width: 400px;
	color: #475c71;
	font-size: 1.1em;
	text-align: left;
}

.fb_header_breadcrump {
	color: #999;
	font-size: 0.5em;
	text-align: left;
}

.fb_header_labels th {
	color: white;
	font-size: 0.8em;
	background-color: #808080;
	padding: 0.1em 0.1em;
}

.fb_header_team ,
.fb_body_team {
	text-align: left;
}

.fb_header_rank,
.fb_body_rank {
	text-align: right;
}

.fb_header_matches,
.fb_header_balls,
.fb_header_sets,
.fb_header_points,
.fb_body_matches,
.fb_body_balls,
.fb_body_sets,
.fb_body_points {
	text-align: center;
}

.fb_body {
	font-size: 0.8em;
}

/* Class for alternating colors in rows */
.fb_body tr:nth-child(even) {
	background-color: #d2d2d2;
}

.fb_body tr:nth-child(odd) {
	background-color: #f2f2f2;
}

/* Class for highlighting ownteam */
.fb_ownteam:nth-child(even) {
	background: #5f85ad !important;
	color: white;
}

.fb_ownteam:nth-child(odd) {
	background: #81a0bf !important;
	color: white;
}

.fb_body_rank {
	background-color: #91979f5f;
	width: 1.5em;
	padding-right: 0.2em !important;
	padding-left: 0em !important;
}

.fb_promoted {
	background-color: #00ff0030 !important;
}

.fb_relagated {
	background-color: #ff000030 !important;
}

.fb_foot {
	background: white;
	color: grey;
	font-size: 50%;
	margin-bottom: 25.5px;
}

.fb_foot_contest {
	text-align: right;
}

.fb_error {
	color: red;
	font-style: italic;
	font-size: 75%;
	text-align: center;
}

Die Defi­ni­ti­on nutzt die auto­ma­ti­sche Anwen­dung auf gerade/ungerade Zei­len um die alter­nie­ren­de Zei­len­far­be zu erzeu­gen. Das Gan­ze (odd/even) wur­de auch für die own­team-Zei­le ange­wen­det, um hier eben­falls unter­schied­li­che Far­ben ja nach Zei­le zu haben. Das „!important“ ist not­wen­dig, damit die CSS Aus­zeich­nung auch ange­wen­det wird, auch wenn sie in der CSS-Hier­ar­chie nied­ri­ger ist.
Die Tabel­le wür­de dann so aussehen:

Die­ses Plug­in bie­tet kei­ne Mög­lich­keit eige­nes CSS in Word­Press ein­zu­bin­den. Ent­we­der bie­tet das benutz­te The­ma schon so eine Mög­lich­keit im Bereich „Design“, oder nutzt bit­te eines der genü­gend vor­han­de­nen guten Cus­tom CSS Plug­ins für WordPress.

Download

Seit Ver­si­on 1.2.2 ist das Plug­in bei wordpress.com ver­füg­bar.

Installation

  • Plug­ins -> Instal­lie­ren -> nach ‚faust­ball‘ suchen
  • das Plug­in ‚Tabel­len für faustball.de‘ installieren
  • Plug­in aktivieren

Update

  • Über Word­Press wie gewohnt aktualisieren
  • Beim Update auf V 2.0.0 kann es sein, dass direkt danach die Ein­stel­lungs­sei­te des Plug­ins nicht mehr auf­ruf­bar ist. Das liegt dar­an, dass sich der Name der auf­zu­ru­fen­den Datei geän­dert hat. Ein­fach mit „F5“ die kom­plet­te Word­Press Sei­te neu laden, dann stimmt der Link im Menu „Ein­stel­lun­gen“ wieder.
  • Durch ein Update auf V 2.0.0 wer­den die neu­en Optio­nen in der Daten­bank lei­der nicht mit den Stan­dard­wer­ten befüllt. Wer die­se nicht hän­disch ein­tra­gen will, muss das Plug­in ein­fach deak­ti­vie­ren / deinstal­lie­ren und wie­der instal­lie­ren / akti­vie­ren. Dadurch wer­den die Plug­in-Optio­nen gelöscht und neu gesetzt.

History

2.0.0 (27.04.2021)

  • Plug­in Code kom­plett überarbeitet
  • Ände­rung: Daten­quel­le auf faustball.com
  • Ände­rung: Daten­ab­ruf per JSON Roh­da­ten von faustball.com
  • Hin­zu­ge­fügt: Plug­in-spe­zi­fi­sche user agent Kennung
  • Ent­fernt: HTML Puri­fier (Nicht mehr benö­tigt für JSON-Roh­da­ten / Ein­ga­ben wer­den jetzt durch PHP-Fil­ter bereinigt
  • Hin­zu­ge­fügt: Short­code Attri­but hea­der (Ver­wen­dung neu­er Daten aus JSON)
  • Hin­zu­ge­fügt: Opti­on, um eine eige­ne Kopf­zei­le mit eige­nem Text und Daten von faustball.com zu definieren
  • Hin­zu­ge­fügt: bread­crump Short­code Attri­but (ver­wen­det die neu­en Daten vom JSON)
  • Hin­zu­ge­fügt: con­test­link Short­code Attri­but (ver­wen­det die neu­en Daten vom JSON)
  • Hin­zu­ge­fügt: Opti­on, um Short­codes in HTML Wid­gets zu erlauben
  • Bug­fix: Zeit bis gecach­te Daten ungül­tig wer­den, wird nicht mehr aktua­li­siert beim Laden von gecach­ten Daten
  • Ände­rung: Hil­fe Inter­gra­ti­on. Ver­wen­det jetzt den Stan­dard für die Word­Press-Hil­fe Posi­ti­on (sie­he Hil­fe-Tab in der obe­ren rech­ten Ecke der Einstellungsseite)

1.3.3 (05.04.2021)

  • Über­set­zung erweitert

1.3.2

  • Mel­dung für „Cache gelöscht“ hinzugefügt
  • Tex­te für Über­set­zung vorbereitet
  • Ers­te Ver­si­on, die als „sta­ble“ und mit einem „Tag“ gekenn­zeich­net ist

1.3.1

  • Daten des loka­len Cache kön­nen gelöscht werden

1.3.0

  • Bot/Crawler/Spider Erken­nung: kein Abruf von Tabel­len (Redu­zie­rung der Ser­ver­last auf faustball.de)
  • Loka­les Caching von Tabel­len mit kon­fi­gu­rier­ba­rer TTL (Redu­zie­rung der Ser­ver­last auf faustball.de)
  • Update auf HTML Puri­fier 4.13.0

1.2.4

  • Bug­fix UTF‑8 Enco­ding (feh­len­de Umlaute)

1.2.3

  • Update auf HTML Puri­fier 4.12.0

1.2.2

  • Ver­öf­fent­li­chung bei wordpress.com
  • Klei­ne Ände­run­gen in readme.txt

1.2.0

  • Namens­än­de­rung um bei wordpress.com akzep­tiert zu werden
  • Kon­fi­gu­rier­ba­res Time­out für Abfra­ge von faustball.de eingefügt
  • ver­bes­ser­te Fehlermeldungen

1.1.0

  • HTML Cle­a­nup über HTMLPurifier
  • Ein­stel­lun­gen zu eige­nen Spaltenüberschriften

1.0.0

  • Ers­te Version

Technische Details

Das Plug­in spei­chert sei­ne Ein­stel­lun­gen und die Cache-Daten in der Word­Press Tabel­le „opti­ons“. Je nach Instal­la­ti­on kann vor die­sem Tabel­len­na­men noch ein Prä­fix stehen!

Mein Plug­in benutzt für alle sei­ne Daten­sät­ze in die­ser Tabel­le das Prä­fix „faustball_de_“ für den option_name. Um also alle Ein­trä­ge zu fin­den, kann man, z.B. über den phpMy­Ad­min Zugang sei­nes Web­hos­ters, fol­gen­de SQL-Abfra­ge ausführen:

SELECT * FROM options where option_name like "faustball\_de\_%"

Alle Daten im Cache bekommt man über:

SELECT * FROM options where option_name like "faustball\_de\_cache\_%"

Hin­weis: Ein „_“ steht in einer SQL-Abfra­ge für ein belie­bi­ges Zei­chen (ähn­lich dem „?“ in ande­ren Suchen). Daher muss das Zei­chen „escaped“ wer­den, damit man spez­fisch danach suchen kann „\_“.


Kon­takt und Fra­gen über plugins@docollipics.de