PHP-Schnittstelle

ja hallo zusammen kann es sein das das ganze leider nicht mehr funktioniert oder bin ich grade zu blöd zu?^^

wär lieb wenn mir da mal wer auskunft geben könnte, habe sowohl php aus auch xml versucht
unsure.gif


danke schon mal Daefea
 
Funktioniert alles einwandfrei im Moment!

Es gab zwar am 6.9 schwierigkeiten aber das ist wohl wieder behoben
smile.gif


Also im moment ist alles klar

/-----------------Script Start----------------/
06.09.06 21:01:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
06.09.06 21:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
 
[Nachtrag] Huch, nun les ich gerade, dass ihr das unten Gewünschte schon vor einiger Zeit wohl angekündigt habt *grins* Ich lass es dennoch mal so stehen und will die Nachfrage zu diesem Feature mal damit bekräftigen... [/Nachtrag]

Ersteinmal ein Lob an das Blasc-Team, dass es diese Schnittstelle gibt...

Ich habe jedoch etwas mehr vor und daher eine größere Frage:
Und zwar möchte ich für eine Gildenhomepage (eher ein System, welches später evtl. auch andere Gilden einsetzen werden) einen Import schreiben, welcher verschiedene Daten zu den Chars der Gilde sammelt...
Nun bietet dieser Export hier schon ein paar kleine Informationen... Jedoch würde ich gern NOCH mehr Informationen zum den einzelnen Chars haben!

Also analog zu der Gildenschnittstelle noch eine Charschnittstelle zu jedem Char mit in etwa folgenden Inhalten:
- Namen(, evtl. kurzInfo) und blascIDs der besessenen Items im Inventar/Bank jeweils...
- Namen(, evtl. kurzInfo) und blascIDs der besessenen Rezepte
- ...

Hintergrund ist vorallem das fehlende Housing und somit die fehlende Gildenbank etc.
Die Homepage soll am Ende durch Zusammenarbeit mit der Gildeneigenen Datenbank(welche eben durch einen Parser/Konverter von Blasc die Daten abgleicht) eine Gildeninterne Suche nach Gegenständen und Fertigkeiten ermöglichen und auch alles eben praktisch und handlich darstellen... Über die zusätzlich bekannten blascIDs der Items etc. kann man dann sogar NOCH nähere Informationen erhalten indem man auf blasc.de weitergeleitet wird...


Wäre es möglich dass ihr sowas noch einführt? Ich hatte auf einer anderen Seite soetwas gefunden, jedoch waren die Jungs von Anfang an zu dämlich so eine Schnittstelle zu bauen und haben nicht mit IDs die Referenzierung ermöglicht und auch so viel zu viele Fehler gemacht, die solch ein Projekt einfach vermiesen :-/
Die Schnittstelle, der Client und die Aufmachung von blasc.de wäre mir da im Gegensatz ein Augenschmaus! *honigUmDenBartSchmier*
 
Zuletzt bearbeitet von einem Moderator:
Hallo

Solange dies noch nicht vom Blasc-Team integriert wurde, versuchs doch mal so:

Schreib ein PHP-Skript, welches einfach die Bank- oder Rezepte-Seite ausliest, und dann per Grep die einzelnen Items rausliest, und in der DB speichert. Problem ist, das Skript braucht teils relativ lange bis es durch ist...

Hab das mal für mich gemacht und hat sehr gut funktioniert. Habs dann aber irgendwann mal gelöscht weil ichs nichtmehr gebraucht hab
tongue.gif


So Long
Ras
 
So einfach ist das nun auch nicht
smile.gif


Man braucht schon kenntnisse der MAterie um soetwas zu schreiben!

Ausserdem würde ich davon abraten denn bei jedem seitenlayout wechsel kannst du probleme bekommen und musst dein script umschreiben oder neu strukturieren.

mfg Biggi
 
Nun dies liegt aber nicht an dem Benutzer sondern an dem schlechten Programierer ^^ :-)

just my 2 cent
smile.gif


PS: ausserdem sollte dir aufgefallen sein, wenn du diesen Thread im Forum gut verfolgt hast, das hier bestimmt 80% nicht so GANZ das know how haben von dem wir beide hier gerade sprechen!
 
Zuletzt bearbeitet von einem Moderator:
@Rascal: Ja genau, das wäre meine einzige Lösung nun, wenn die Erweiterung der Schnittstelle wirklich so auf sich warten lässt wie ich es leider vermute...

@BigWhoop: So grosse Probleme bis auf die Arbeit zum ParserSchreiben und eben der massive Geschwindigkeitseinbruch seh ich da nicht wirklich, wenn man ein wenig clever ist ;-)
Vorteil meinerseits ist, dass es ja eh in eine eigene Datenbank fliesst und somit die Geschwindigkeit sogar etwas uninteressanter wird...
Zum Einen war das Team da wohl recht clever und hat gute Namen für die Class-Tags vergeben an denen sich der Parser dann orientieren kann.
Zum Anderen sieht man recht schnell dass die Items ja durch nen Link ala "<a href="?i=..." umgeben sind... So zb muss man nur noch parsen was dazwischen steht und SOOO grosse Änderungen werden in dem Stück "Layout" da nicht passieren... ;-)
 
Ich frage mich ob ihr die 10 Seiten vorher gelesen habt oder ob ihr euch auf diese Seite beschrängt
smile.gif


Ich verfolge dieses Forum massiv und sehr genau und sehe das es meistens leute sind die nichtmal fertige scripts bei sich zum laufen bekommen. Also ist die frage des know hows der Leute hier wohl schon geklärt.

Ich sage auch nicht das es nicht geht oder kompliziert ist. Mein einziger Einwand war der das die Leute hier größten Teils es nicht von sich aus hinbekommen werden also wäre ein beta-script oder opensource projekt dies bezüglich sehr hilfreich für die allgemeinheit.

Denn wenn die leute nen parser schreiben können dann würden sie hier nicht im Forum fragen sondern es einfach machen und wenn dann probleme kommen evtl. fragen aber mehr auch nicht.

just my 2 cent Biggi
dance.gif
 
@Big:

Also ich bezieh mich einfach NUR auf meine Bitte die Schnittstelle zu erweitern ;-)
Rascal nannte daraufhin einen alternativen Weg, der wie du selbst nun sagst problemlos möglich ist...
Dennoch war deine erste Antwort auf IHN (zitat):
So einfach ist das nun auch nicht smile.gif

Man braucht schon kenntnisse der MAterie um soetwas zu schreiben!

Ausserdem würde ich davon abraten denn bei jedem seitenlayout wechsel kannst du probleme bekommen und musst dein script umschreiben oder neu strukturieren.
Also hab ich das nochmal korrigiert, da das mit dem Layout schlichtweg falsch ist...

Das haben wir dann widerlegt :-P also find dich damit ab und schieb den Schuh nun nicht nem anderen Schuster zu *grins*
Spass und Sticheln beiseite...
Natürlich werd ich gern ein beispielscript des Parsers hier reinstellen, wenn die Schnittstelle wirklich nicht erweitert wird! Dann in der Hoffnung, dass das blascTeam so fair ist und das gepostete Script dann nicht nutzt um eben ihr Layout DOCH passend zu ändern damit es nichtmehr funktioniert *lach*
Aber vorallem in der Hoffnung, dass kleine Feinheiten von anderen sogar noch verbessert werden!

Freundliche Grüße
Björn


PS: Mich hätte nur einfach gefreut wenn einer des BLASC-Teams sich nur eine Sekunde Zeit nimmt und eben sagt, ob man DEMNÄCHST damit rechnen kann, dass etwas erweitert wird. Sonst mach ich mir nun leider die Mühe und in ner Woche war sie umsonst... Gerade bei einem Thread der gepinnt wurde, hab ich das eigentlich erwartet...


PPS: Übrigens hab ich noch nie gesehen, dass man sich in einer Schnittstelle mit Umlauten herumprügeln muss. Aber ich will ja nich meckern ;-)
 
Zuletzt bearbeitet von einem Moderator:
"kannst du probleme bekommen"
^^ wenn du das bestreitest dann weiss ich nicht worüber wir hier reden
tongue.gif


und dann macht es keinen Sinn weiter zu diskutieren
smile.gif
Jedem sollte klar sein das bei einem Seitenlayout wechsel wie z.b. neuen infos auf den seiten oder geänderten anzeige optionen der ganze parser für den "Allerwertesten" ist
smile.gif


Und dieses kommt bei einem aufstrebenden System wie BLASC immer mal vor.

Zu den Umlauten ... die sind ja nun garkein problem
smile.gif


Aber auf das einfügen der Schnittstelle bzw. die erweiterung können wir denke ich noch ein wenig warten

just my 2 cent
dance.gif


PS: Ausserdem sollte das nur ein hinweis sein an die vielen Leute hier die nicht das know how haben für den parser und eine prävention gegen 500 Beiträge ala "Wie geht so ein Parster" & "Programiert einer so einen Parser bitte" sein
top.gif
 
Zuletzt bearbeitet von einem Moderator:
und dann macht es keinen Sinn weiter zu diskutieren
smile.gif
Jedem sollte klar sein das bei einem Seitenlayout wechsel wie z.b. neuen infos auf den seiten oder geänderten anzeige optionen der ganze parser für den "Allerwertesten" ist
smile.gif
Äm... nicht ganz... wenn du's richtig machst, kriegste keine Probleme solange nicht der Code an der Liste selber geändert wird (oder haste das gemeint?)


Und zum Thema Know-How: Ich find einfach, wer sowas realisieren will, muss die entsprechenden Sachen (PHP und "Wie-bau-ich-nen-parser" im Griff haben... ansonsten wird das nix... Und auch wenn ich normalerweise ein Hilfsbereiter Typ bin, hab ich kein Bock, Hausfrauensichere Anleitungen für sowas zu schreiben...

So Long
Rascal
 
Das war mal ein guter Post :) und ich kann auch alles nachvollziehen :)

Es scheint das ihr mich falsch verstanden habt :) Natürlich meinte ich das ... ich meinte mit layout nicht das die seite von schwarz auf weiß wechselt im hintergrund :p

Das mit dem know how ist ja klar und das sage ich die ganze zeit nur wer hier im forum hat das schon :) Dann würde er sich hier nicht melden zumindest nicht mit kompletten quelltexten die garnicht von ihm sind :)

Und das mit den Anleitungen ... würde ich auch nicht machen :) Sowas kriegen nur Kunden bei uns

just my 2 cent
 
Zuletzt bearbeitet von einem Moderator:
Aber mal was anderes ... diese Downzeiten hier sind echt mies
smile.gif
da kommt man ohne eigene DB eh nicht weit
tongue.gif


/-----------------Script Start----------------/
09.06.06 21:01:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
09.06.06 21:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

/-----------------Script Start----------------/
14.09.06 6:31:29 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

/-----------------Script Start----------------/
18.09.06 14:31:02 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

/-----------------Script Start----------------/
21.09.06 13:00:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
21.09.06 14:00:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

/-----------------Script Start----------------/
24.09.06 18:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 19:01:06 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 19:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 20:00:02 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 20:31:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 21:00:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 21:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 22:31:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 23:01:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
24.09.06 23:30:02 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

/-----------------Script Start----------------/
25.09.06 1:30:01 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/
/-----------------Script Start----------------/
25.09.06 9:30:02 = Die URL konnte nicht erreicht werden.
/-----------------Script Stop-----------------/

Edit: Oh ist ja extrem lang geworden ! sry
 
Zuletzt bearbeitet von einem Moderator:
Wann soll jetzt eigendlich mal die Schnittstelle erweitert werden? Ich bin zwar gerade dabei einen Parser zu proggen, aber vielleicht kann ich mir die Arbeit ja sparen, wenn die Schnittstelle bald mit Rezepten und Inventar erweitert wird.

PS: Hat zufällig jemand schon einen Parser geschrieben? Dann könnte dieser doch vorübergehend als Lösung hier veröffentlicht werden.
biggrin.gif
 
PS: Hat zufällig jemand schon einen Parser geschrieben? Dann könnte dieser doch vorübergehend als Lösung hier veröffentlicht werden.
biggrin.gif

Das hier ist eine etwas ältere Version meiner kleinen quick&dirty Grundklasse die auf meine Templateklasse zurückgreift. Die aktuellere Version hat schon einige Vorbereitungen für später Funktionsimplementationen wie Layoutwahl, Userhandling etc. Das ganze System ist bereits multilingual ausgelegt Die Klasse benötigt Template- und Sprachdateien. Ist halt nicht viel für ne Stunde "arbeit". Ich erweiter das ganze sicher noch.
Code:
<?
################################################################################
#																			  #
# blasc Guildparser CLASS v0.01a is Copyright (c)							   #
# Written and developed by Christian Zamora 2003-2006.						 #
#																			  #
# This class is free software; you can redistribute it and/or modify it		#
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation; either version 2 of the License, or (at your option)	#
# any later version.														   #
#																			  #
# This program is distributed in the hope that it will be useful, but		  #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   #
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License	  #
# for more details.															#
#																			  #
# edited by Ch. Zamora.														#
#																			  #
# Edit Log:																	#
# - dynamic template extension on template assign							  #
# - dynamic template directory choose on template assign					   #
#																			  #
# Note:																		#
# Create an xxxxx.php file and initiate this class like this:				  #
#																			  #
# include ('<classfilename>');												 #
#																			  #
#																			  #
################################################################################
	class BLASC extends Template
	{
		var $guildurl;
		var $charurl;
		var $imgchar;
		var $imgpvpr;
		
		var $file;
		var $guild;
		var $guildid;
		var $language;
		
		function blasc($guildid = 1, $language = 'DE')
		{
			# Prüfen ob buffed.de erreichbar ist
			$this->IsOnline();						
			
			# GildenID und Sprache zuordnen.
			$this->guildid  = $guildid;
			$this->language = $language;
			
			# Konfiguration der URLs
			$this->guildurl = @sprintf('%sguild.php?g=%d',BLASCURL, $this->guildid);
			$this->charurl  = @sprintf('%s?c=',BLASCURL);
			$this->imgchar  = 'images/races/';
			$this->imgpvpr  = 'images/PvPRanking/';
			

			
			# Daten ermitteln und in einem Array ablegen.
			if(!($this->file = file_get_contents($this->guildurl)))
				$this->BlascError(1);
			 
			$this->guild = @unserialize(gzuncompress($this->file));					
			# Standardkonfiguration für die Anzeige der Tabelle erzeugen			
			
			# Tabelle erstellen
			$this->CreateTable();
		
		}
		
		# Fehlerausgabe
		function BLASCError($num)
		{
			if($this->language != 'DE' && $this->language != 'EN') 
				die('Invalid language configuration. Please choose DE or EN or leave it blank for default.');
				
			$errorFile = @sprintf('include/_messages_%s.inc', strtolower($this->language));
			$this->CheckForFile($errorFile);
				
			$fp = @file($errorFile);
			for($x = 0; $x < sizeof($fp); $x++)
			{
				list($linenum, $line) = explode('=', $fp[$x]);
				if($linenum == $num) {
					$errorMessage = trim($line);
					break;
				}
			}
			$fp = null;
			
			if(empty($errorMessage)) die('Unknown error.');
			else die($errorMessage);
		}
		# Prüfen ob buffed.de erreichbar ist.
		function IsOnline()
		{
			if(!($fp = @fsockopen('www.buffed.de', 80, &$errno , &$errstr , 1))) $this->BLASCError(2);
			else $fp = null;
		}
		# Template erzeugen
		function CreateTable()
		{
			foreach($this->guild['character'] as $c) 
			{
				$mainjobs = '';
				$secjobs  = '';
				
				# Bilder erzeugen
				$raceimage = @sprintf('%s-%s.png', $c['race'], $c['sex']);
				$pvpimage = ($c['pvprank'] > 0) 
						  ? @sprintf('PvPRank%s.png', $c['pvprank']) 
						  : 'space.gif';
			
				# HauptBerufe ermitteln und erstellen
				foreach($c['skills']['Berufe'] as $b)
				{
					list($bname, $bskill) = each($c['skills']['Berufe']);
					$value = $bskill['value'];
					$max   = $bskill['max'];
					$percent = (100/$max*$value);
					$btpl = $this->Template('jobline');
					$btpl->Add('JOB',	  $bname);
					$btpl->Add('SKILL',	$value);
					$btpl->Add('SKILLMAX', $max);
					$btpl->Add('JOBMETER', $percent);
				
					$mainjobs .= $btpl->Out();
				}
				# Sekundäre Fähigkeiten ermitteln und erstellen
				foreach($c['skills']['Sekundäre Fertigkeiten'] as $b)
				{
					list($bname, $bskill) = each($c['skills']['Sekundäre Fertigkeiten']);
					$value = $bskill['value'];
					$max   = $bskill['max'];
					$percent = (100/$max*$value);					
					$btpl = $this->Template('jobline');
					$btpl->Add('JOB',	  $bname);
					$btpl->Add('SKILL',	$value);	
					$btpl->Add('SKILLMAX', $max);					
					$btpl->Add('JOBMETER', $percent);
				
					$secjobs .= $btpl->Out();
				}				
							
				# Gildentitel
				$guild_title = ($c['guild_rank'] != 0) 
							 ? $c['guild_title'] 
							 : @sprintf('<font class="leader">%s</font>', $c['guild_title']);
							
				# Templatezeile generieren
				$mtpl = new Template('memberline');
				$mtpl->Add('CHARURL', $this->charurl . $c['id']);
				$mtpl->Add('RACEIMAGE', $this->imgchar . $raceimage);
				$mtpl->Add('PVPIMAGE',  $this->imgpvpr . $pvpimage);
				$mtpl->Add('NAME',  $c['name']);
				$mtpl->Add('PVP',   $this->NumToPvPRank($c['pvprank'],$this->guild['faction']));
				$mtpl->Add('LEVEL', $c['level']);
				$mtpl->Add('RACE',  $c['race']);
				$mtpl->Add('CLASS', $c['class']);
				$mtpl->Add('UPDATED', $c['lastupdate']);				
				$mtpl->Add('TXT_MAIN_JOB', $this->gettext('TXT_MAIN_JOB'));
				$mtpl->Add('TXT_SEC_JOB', $this->gettext('TXT_SEC_JOB'));
				$mtpl->Add('GUILDTITLE', $guild_title);
				$mtpl->Add('MAIN_JOBS', $mainjobs);
				$mtpl->Add('SEC_JOBS', $secjobs);
				
				$memberlines .= $mtpl->Out();
			}

			# Namensliste ermitteln und erstellen
			foreach($this->guild['character'] as $ca) {
				$memberlist .= @sprintf(' | <a href="#%s">%s</a> ', $ca['name'], $ca['name']);
			}
			
			$this->tpl = $this->Template('chartable');
			$this->tpl->Add('ID', $this->guildid);
			$this->tpl->Add('TXT_GUILD', $this->gettext('TXT_GUILD'));
			$this->tpl->Add('TXT_GUILDCOUNT', $this->gettext('TXT_GUILDCOUNT'));
			$this->tpl->Add('TXT_GUILDTITLE', $this->gettext('TXT_GUILDTITLE'));
			$this->tpl->Add('TXT_LEVEL', $this->gettext('TXT_LEVEL'));
			$this->tpl->Add('TXT_RACE',  $this->gettext('TXT_RACE'));
			$this->tpl->Add('TXT_CLASS', $this->gettext('TXT_CLASS'));
			$this->tpl->Add('GUILDNAME',   $this->guild['guild_name']);
			$this->tpl->Add('GUILDCOUNT',  $this->guild['numchars']);
			$this->tpl->Add('REALM', 	   $this->guild['server']);
			$this->tpl->Add('MEMBER_LIST', $memberlist);
			$this->tpl->Add('MEMBER_LINES',$memberlines);
		}
		# Prüfen ob benötigte Dateien vorhanden sind.
		function CheckForFile($file) 
		{
			if(!file_exists($file)) 
				die('File' . $file . ' is missing in /include/!');
		}
		# Text aus dem Languagefile holen
		function GetText($mark)
		{
			if($this->language != 'DE' && $this->language != 'EN') 
				die('Invalid language configuration. Please choose DE or EN or leave it blank for default.');
				
			$txtFile = @sprintf('include/_templatetxts_%s.inc', strtolower($this->language));
			$this->CheckForFile($txtFile);
				
			$fp = @file($txtFile);
			for($x = 0; $x < sizeof($fp); $x++)
			{
				list($linemark, $line) = explode('=', $fp[$x]);
				if($linemark == $mark) {
					$message = trim($line);
					break;
				}
			}
			$fp = null;
			
			if(empty($message)) return ('Unknown');			
			else return $message;
		}
		# PVP Ränke übersetzen
		function NumToPvPRank($num, $faction)
		{
			$ranking['DE'] = Array(
				"H" => Array(
					0 => 'kein Rang', 1 => 'Späher', 2 => 'Grunzer', 3 => 'Waffenträger', 
					4 => 'Schlachtrufer', 5 => 'Rottenmeister', 6 => 'Steingardist', 7 => 'Blutgardist', 
					8 => 'Zornbringer', 9 => 'Klinge der Horde', 10 => 'Feldherr', 11 => 'Sturmreiter', 
					12 => 'General', 13 => 'Kriegsfürst', 14 => 'Oberster Kriegsfürst'
					),
				"A" => Array(
					0 => 'kein Rang', 1 => 'Gefreiter', 2 => 'Fußknecht', 3 => 'Landsknecht', 
					4 => 'Feldwebel', 5 => 'Fähnrich', 6 => 'Leutnant', 7 => 'Hauptmann',
					8 => 'Kürassier', 9 => 'Ritter der Allianz', 10 => 'Feldkommandant', 
					11 => 'Rittmeister', 12 => 'Marschall', 13 => 'Feldmarschall', 14 => 'Großmarschall'
					)
			);
			$ranking['EN'] = Array(
				"H" => Array(
					0 => 'no ranking', 1 => 'Scout', 2 => 'Grunt', 3 => 'Sergeant', 4 => 'Senior Sergeant', 
					5 => 'First Sergeant', 6 => 'Stone Guard', 7 => 'Blood Guard', 8 => 'Legionnare', 
					9 => 'Centurion', 10 => 'Commander Champion', 11 => 'Lieutenant General', 
					12 => 'General', 13 => 'Warlord', 14 => 'High Warlord'
					),
				"A" => Array(
					0 => 'no ranking', 1 => 'Private', 2 => 'Corporal', 3 => 'Sergeant', 4 => 'Master Sergeant', 
					5 => 'Sargeant Major', 6 => 'Knight', 7 => 'Knight Liertenant', 8 => 'Knight Captain', 
					9 => 'Knight Champion', 10 => 'Lieutenant', 11 => 'Commander', 12 => 'Marshal', 13 => 'Field Marshal', 
					14 => 'Grand Marshal'
					)
			);

			return $ranking[$this->language][$faction][$num];
		}
		# Ausgabe
		function Show()  
		{
			$content = trim($this->tpl->Out());
			echo (!empty($content)) ? $content : $this->BLASCerror(3); 
		}
	}
?>

Die Anwendung in bereits vorhandenen CMS Systemen/Seiten etc. ist denkbar einfach.
Code:
require ("template.class.php");
require ("blasc.class.php");
	
$blasc = new blasc($id);
$blasc->Show();


Hier noch die template.class.php
Code:
<?
################################################################################
#																			  #
# ilphpTpl TEMPLATE CLASS v0.4a is Copyright (c)							   #
# Written and developed by Christian Zamora 2003-2004.						 #
#																			  #
# This class is free software; you can redistribute it and/or modify it		#
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation; either version 2 of the License, or (at your option)	#
# any later version.														   #
#																			  #
# This program is distributed in the hope that it will be useful, but		  #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   #
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License	  #
# for more details.															#
#																			  #
# edited by Ch. Zamora.														#
#																			  #
# Edit Log:																	#
# - dynamic template extension on template assign							  #
# - dynamic template directory choose on template assign					   #
#																			  #
# Note:																		#
# Create an xxxxx.php file and initiate this class like this:				  #
#																			  #
# include ('<classfilename>');												 #
#																			  #
# To initiate an HTML file do following:									   #
# $tpl = new Template('<templatefile>',['<templatedir>',['template extension']]);#
#																			  #
# Optional values are set to templates/ as directory and .tpl as default	   #
# Extension																	#
#																			  #
# To replace content use {NAME} Tags in the HTML file						  #
# e.g.:																		#
#	  If the template file is in the same directory like the scriptfile.	  #
#																			  #
#	  Filename: mytemplate.html											   #
#	  Your Template File source: <html>{TEXT}</html>						  #
#	  The way to replace it:												  #
#	  $tpl = new template('mytemplate','','.html');						   #
#	  $tpl->Add('TEXT', 'Hello World');									   #
#	  echo $tpl->Out();													   #
#	  This will print "Hello World" on your website.						  #
#																			  #
#																			  #
################################################################################
class Template
{
	  var $template = '';
	  var $fields   = Array();

	  /* initiate template
	  * @param filename name of the template file
	  * @param tpldir name of the directory where the templates are stored
	  *				  default is templates/
	  * @param tplext extension of the template files, default is *.tpl
	  */
	  function Template($filename, $tpldir = 'templates/', $tplext = '.html')
	  {
			   /* check if template file exists */
			   if (!file_exists($tpldir . $filename . $tplext)) {
				   $this->template = "Fehler: Template '$filename' "
									."existiert leider nicht!\n";
			   }
			   /* if template file exists , put line breaks
				* on every line in the html source
			   */
			   else {
				   $this->template = implode('', file($tpldir . $filename . $tplext));
			   }
	  }
	  
	  /* save content to replace
	  *  @param name
	  *  @param value
	  */
	  function Add($name, $value) {
			   $this->fields[$name] = $value;
	  }
	  
	  /* replace html source and print it */
	  function Out()
	  {
			   while( list($name, $value) = each($this->fields)) {
					$this->template = str_replace('{'.$name.'}', $value, $this->template);
			   }			   
			   return $this->template;
	  }
}
?>
 
Zurück