Portal > Foren > PHP > PHP-Programmierung > eigenes Template System mit Sprachunterstützung
Thema geschlossen
 
Themen-Optionen
Alt 14.09.2006, 11:02 Nach oben    #21
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Äh, zu deinem Code der index.php.
Wo genau soll die Variable $template denn herkommen? Du definierst sie ja gar nicht.


Zur Methode out().
Zitat:
Zitat von jjelliss Beitrag anzeigen
wieso steht in out() echo und nicht include oder require/require_once?
Ähm, hallo? Schon aufgewacht?

load = laden
out(put) = Ausgabe

In der Methode soll nichts geladen, sondern das fertiggeparste Template ausgegeben werden. Irgendwie logisch und schon aus dem Methodennamen ersichtlich, oder?

Weiterhin ..
PHP-Code:
    public function out()
{
        echo 
$template;
        return 
true;

Wo genau soll bitte die Variable $template herkommen?

Schau dir auch mal:
http://de3.php.net/manual/de/languag...bles.scope.php
an.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:09 Nach oben    #22
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Ok, ok, sorry.

Beides mein Fehler,
Trotzdem könntest du mal etwas netter sein! Ich will dir nix, ich möchte nur gerne Hilfe!


aber - trotzdem wird nichts angezeigt! Wieso nicht?
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:21 Nach oben    #23
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Hi,
stell doch mal ein error_reporting(E_ALL) an den Beginn deiner index.php, als vor alle include-Anweisungen.

Dann würdest du folgene Ausgabe erhalten. (Stand: oben von dir geposteter Code)
Zitat:
Notice: Use of undefined constant templateDir - assumed 'templateDir' in C:\apachefriends\xampp\htdocs\dev\forum\class.php on line 23

Notice: Undefined variable: template in C:\apachefriends\xampp\htdocs\dev\forum\class.php on line 63
Die Variable wurde nicht gesetzt
Weiterhin sind doch einige Sachen in dem Code fehlerhaft.
PHP-Code:
if(!empty($this->templateFile)) {
    if(
$fp = @fopen($this->templateFile,"r")) {
    
$this->template fread($fpfilesize($this->templateFile));
    
fclose ($fp);            
    }    
else {
    
$message "Das Template konnte nicht geladen werden";
    return 
$message;
    return 
false;

Zwei mal return hinter einander? Denk mal über die Sinnhaftigkeit nach.

Dann gibt es auch noch
PHP-Code:
$this->replaceLanguage($lang); 
was auch immer die Variable $lang ist.

Das sind nur die offensichtlichen Fehler. Bevor die nicht behoben sind, brauchen wir hier gar nicht weitermachen.

Grüße, Ben.

[PS]
Ich bin nett.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:30 Nach oben    #24
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Sorry, ich hab die entsprechenden Stellen in meiner class.php abgeändert.
Hab die class.php einzeln aufgerufen und bekomm keine Fehlermeldung.
Jetzt spinnt meine index.php aber! Ich kann doch wohl ein Include richtig schreiben! Aber genau da hat er ein Parse Error: Das kappier ich nicht. Syntax Error

Code:
<?php
error_reporting(E_ALL)

include ("class.php");
?>
Ausgabe:
Parse error: syntax error, unexpected T_INCLUDE in /home/www/web0/html/v2/test.php on line 4
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:33 Nach oben    #25
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Nach dem error_reporting(E_ALL) fehlt das Semikolon.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:34 Nach oben    #26
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Grrrrrrrrrrr, oh man bin ich blöde!
Das war jetzt für mich nicht für euch

Danke

-------------------------
Ok, ich bekomm nur immer noch keine Ausgabe
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:43 Nach oben    #27
Neuer Benutzer
 
Registriert seit: 14.09.2006
Beiträge: 20
Standard

hi
kennt vielleicht jemand ein buch zu dem thema "Templates mit PHP gestalten"
habe bei amazon.de und google kein wirkliches gefunden.

thx
java² ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:45 Nach oben    #28
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Dazu braucht man kein Buch. Schau dir die entsprechende Tutorials an (sind in diesem Thema verlinkt) und lerne daraus.

Solltest du weitere Fragen haben, mache bitte ein eigenes Thema im entsprechenden Forum auf.
Danke.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:46 Nach oben    #29
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Zitat:
Zitat von java² Beitrag anzeigen
hi
kennt vielleicht jemand ein buch zu dem thema "Templates mit PHP gestalten"
habe bei amazon.de und google kein wirkliches gefunden.

thx
Raus hier, das ist mein Thread indem ich Fragen stelle!

Nein, Scherz!

- Kenn ich nicht leider!
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 11:55 Nach oben    #30
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Ja,

Was ist denn noch an der Klasse falsch bitte?



Sorry

Es klappt allem Anschein nach

Geändert von jjelliss (14.09.2006 um 12:06 Uhr).
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:11 Nach oben    #31
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

Welche Fehler bekommst du denn?
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:25 Nach oben    #32
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Hi,
du willst, dass ich netter bin, gibst mir aber absolut keinen Anlass dazu.
Zitat:
Zitat von jjelliss Beitrag anzeigen
Was ist denn noch an der Klasse falsch bitte?
Was ist das denn für eine Frage/Problembeschreibung?

Zitat:
Zitat von jjelliss Beitrag anzeigen
Es klappt allem Anschein nach
Was denn nun? Klappt es mittlerweile so, wie du es willst oder nicht?

Du sollst natürlich erstmal die syntaktisch inkorrekten Passagen, die ich dir ja gezeigt habe, ausbessern und danach nochmal die Abfolge überdenken.
Weiterhin weiß ich immer noch nicht, wo eigentlich dein Problem ist, weil ich nicht erkennen kann, was du machen willst ...

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:28 Nach oben    #33
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Es klappt nicht so wie ich will!

"Normale" Platzhalter gehen, aber Language Platzhalter nicht.
Ausgabe der Index PHP:
Zitat:
Notice: Undefined index: test in /home/www/web0/html/v2/class.php(68 ) : regexp code on line 1

Entsprechende Language Teil in der class.php:
Code:
    public function loadLanguage($files)
    {
        // Die Dateinamen der Sprachdateien
        $this->languageFiles = $files;
        
        // Versuchen, alle Sprachdateien einzubinden
        for ($i=0;$i<count($this->languageFiles);$i++) {
            // wenn die Datei $this->languageDir.$this->languageFiles[$i] nicht existiert
            if (!file_exists($this->languageDir.$this->languageFiles[$i])) {
                return false;
            }
            // Einbinden...
            include($this->languageDir.$this->languageFiles[$i]);
            // !! jetzt steht das Array $lang zur Verfügung
        }
        
        $this->replaceLanguage($lang);
        
        return $lang;
    }
    protected function replaceLanguage($lang)
    {
        // simple replace width preg_replace
        $this->template = preg_replace("/".$this->leftDelimiterL."(.*)".$this->rightDelimiterL."/isUe", "\$lang[strtolower('\\1')]", $this->template);
        return true;
    }
Da wo er ein Fehler hat sagt er mir wäre bei:
Code:
  $this->template = preg_replace("/".$this->leftDelimiterL."(.*)".$this->rightDelimiterL."/isUe", "\$lang[strtolower('\\1')]", $this->template);

Geändert von Ben (14.09.2006 um 12:32 Uhr). Grund: Formatierung etwas abgeändert
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:35 Nach oben    #34
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Was Zeile 68. Was ist test?

Hm, und was ist das denn hier?
PHP-Code:
$lang[strtolower('\\1')] 
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:37 Nach oben    #35
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

test wird der übergebene Wert sein, also das $lang.

Das mit dem strtolower versteh ich auch nicht ^^
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:47 Nach oben    #36
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Btw. schon mal dran gedacht, dass die Datei $lang hier überschrieben wird?
PHP-Code:
for ($i=0;$i<count($this->languageFiles);$i++) {
    
// wenn die Datei $this->languageDir.$this->languageFiles[$i] nicht existiert
    
if (!file_exists($this->languageDir.$this->languageFiles[$i])) {
        return 
false;
    }
    
    
// Einbinden...
    
include($this->languageDir.$this->languageFiles[$i]);
    
// !! jetzt steht das Array $lang zur Verfügung

Natürlich nur, falls du das nicht in den eingebundenen Sprachdateien unterbindest. Das wäre allerdings nichts, was in eine Sprachdatei gehören würde.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 12:53 Nach oben    #37
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

also, das was hier soll weis ich auch nicht.
Code:
"/isUe", "\$lang[strtolower('\\1')]"
Nur auf jeden Fall geht das jetzt!

Vermutung:
in der index.php wird die ID des Arrays $lang umgeschrieben? in
Code:
$langs[] = "lang_german/lang_main.php";
Ist das richtig?
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 13:00 Nach oben    #38
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von jjelliss Beitrag anzeigen
also, das was hier soll weis ich auch nicht.
Code:
"/isUe", "\$lang[strtolower('\\1')]"
Widerspricht ja irgendwie
Zitat:
Zitat von jjelliss Beitrag anzeigen
Es wird anscheinend jetzt so aussehen als hätte ich das alles kopiert und eingefügt, dem ist aber nicht so.
Wie kannst du etwas nutzen, was du nicht verstehst?

Zum Thema reguläre Ausdrücke:
http://www.regenechsen.de/phpwcms/index.php?regex_allg (Als Einstieg!)
(aber das ist wiederum ein neues Thema und sollte nicht in diesem Thread diskutiert werden!)


Jut, weiter im Text.
Zitat:
Zitat von jjelliss Beitrag anzeigen
Nur auf jeden Fall geht das jetzt!
Hä? Was hast du denn jetzt geändert? Warum geht es jetzt und vorher nicht?


Zitat:
Zitat von jjelliss Beitrag anzeigen
Vermutung:
in der index.php wird die ID des Arrays $lang umgeschrieben? in
Code:
$langs[] = "lang_german/lang_main.php";
Ist das richtig?
Zur Frage: Nö, da wird keine "ID" umgeschrieben.
Meinst du einen Array-Index? Einen Schlüssel?

PHP-Code:
$lang[] = 'irgendwas'
fügt ein neues Arrayelement mit dem Inhalt 'irgendwas' am Ende des bestehenden Array an. Da wird nichts überschrieben.

Du machst es uns wirklich nicht leicht .. und als Tipp. Komm in naher Zukunft mal zu Potte, was eine akzeptable Problembeschreibung angeht, sonst verliere ich meine Geduld (und beachte dieses Thread nicht mehr) und das ist sicherlich auch nicht in deinem Sinne!

Ist nur gut gemeint.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 13:08 Nach oben    #39
Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 42
Standard

Ok ok,


Also ich habe das Array geändert, ich hatte den Anfangsbuchstaben groß geschrieben, habe im Template es aber klein geschrieben. So konnte er das Array nicht finden!

Also - ich hab noch folgende Platzhalter vor für:
Hyperlinks, Funktionen, Includes,
Vielleicht auch noch direkt einen AdminDir Include "Platzhalter" oder für andere Verzeichnisse!

- Sag mal - was hab ich dir eigentlich getan! Ist es zu schwierig mal nachzudenken was ich meinen könnte und welches Problem ich evtl. habe oder was? Ich kann auch mal was vergessen zu posten!
Was hab ich dir eigentlich getan?

Aber meine Frage:
Wie genau geht das mit den Hyperlinks usw.? Genau wie ein "normaler" Platzhalter nur das der Wert des Arrays eben anders ist oder wie?
jjelliss ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Alt 14.09.2006, 13:16 Nach oben    #40
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Hi,
bezogen auf diese Aussage hier
Zitat:
Zitat von jjelliss Beitrag anzeigen
Also - ich hab noch folgende Platzhalter vor für:
Hyperlinks, Funktionen, Includes,
Vielleicht auch noch direkt einen AdminDir Include "Platzhalter" oder für andere Verzeichnisse!
ein gut gemeinter Ratschlag.

Versuche dich nicht direkt an so komplexen Dingen, sondern fange etwas bodenständiger an. Arbeite dich langsam nach oben. Du scheinst mir alles auf einmal machen zu wollen.

Zitat:
Zitat von jjelliss Beitrag anzeigen
Wie genau geht das mit den Hyperlinks usw.? Genau wie ein "normaler" Platzhalter nur das der Wert des Arrays eben anders ist oder wie?
Du hast nicht lange genug nachgedacht.
Das brauchst du gar nicht abstreiten. Das erkennt man, wenn man nicht erst seit vier Tagen in der Forenwelt aktiv ist!

Einen Tipp bekommst du dennoch.
Ein Hyperlink sieht ja grob folgendermaßen aus
HTML-Code:
<a href="verweis.html">Beschreibung</a> 
So.
Also musst du ja nur verweis.html und Beschreibung variabel machen. Alles andere bleibt ja immer gleich.
Demnach ..
HTML-Code:
<a href="{LINK_VERWEIS}">{LINK_BESCHREIBUNG}</a> 
Das natürlich an deine Bedürfnisse anpassen.


Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Thema geschlossen

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Ein eigenes Templatesystem schreiben Corvin Tutorials 42 19.03.2008 17:58