SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.12.2003, 16:33:07
meisterroda meisterroda ist offline
Anfänger
 
Registriert seit: Dec 2003
Ort: daham
Beiträge: 3
template/datei teilen

aloha

ich möchte folgendes machen.

eine normale html-datei (mit ein paar php-includes) erstellen, die sozusagen ein template ohne inhalt darstellt.

bei den meisten template-basierenden php-scripts oder websites arbeitet man ja mit header und footer.

einfache wäre es allerdings, für das template immer nur EINE vorlage zu machen und diese dann später zu teilen.

gibts da also irgend eine möglichkeit, sozusagen globale header.php und footer.php´s zu machen, die aus eben dieser einen datei nur den richtigen teil auslesen.

die template-datei (z.b. template.php) könnte z.b. so aussehen:
Code:
<html>
<head>
<title><?php echo($title); ?></title>
<?php include ("metatags.php"); ?>
</head>

<body>
.
.
.
.
<!-- headerend -->
<!-- footerstart -->
.
.
.
<table>
<tr>
  <td><?php include("copyright.php"); ?></td>
<tr>
.
</table>
</body>
</html>
..und die header.php sollte nur bis zu "<!-- headerend -->" lesen und ausgeben

..und die footer.php alles was nach "<!-- footerstart -->" steht

statt der kommentar könnte man ja irgendwelchen anderen eindeutigen texte schreiben: XYZundAUSis, ABCdaGEHTSlos,....



ich hoffe ihr könnt mir weiterhelfen..


greetz rodaglobale
Mit Zitat antworten
  #2  
Alt 04.12.2003, 11:18:38
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi meisterroda

Erst mal willkommen auf SelfPHP

Nun zu deiner Frage.
Sicher kann man das machen, ABER
Wenn du das ganze in einer Datei speicherst, dann musst du jedes mal:
1) die Datei öffen
2) Parsen so das du die einzelnen Teile herrausfindest.

das ist wahrscheinlich langsamer als, wenn du jeden Bereich in eine eigene Datei speicherst.

Eine andere Möglichkeit ist auch das du eine andere Template-Engine verwendest.

Folgenden Aufbau würde ich dir empfehlen:
Zusammensetzen des CONTENT-Bereiches
die Main-Datei (mit Head und Footer) lesen und in dieser den CONTENT-Bereich ersetzen.

Code:
HEAD-CODE
$CONTENT
FOOTER-CODE
So hast du Head und Footer in einer Datei und füllst ihn über die VARIABLE $CONTENT den Content-Bereich
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #3  
Alt 04.12.2003, 11:29:13
meisterroda meisterroda ist offline
Anfänger
 
Registriert seit: Dec 2003
Ort: daham
Beiträge: 3
vielen dank erstmal für deine begrüssung
ich glaub ich werd mich hier wohl fühlen...


das mit dem parsen hab ich mir schon gedacht.

evt. wärs vielleicht vernünftiger, nur ein script zu haben, das das template teilt (und zwar nur dann, wenn ich das will)
ein script, das sozusagen die arbeit übernimmt.

wie würde das aussehen?

also ein script: aufruf: create_template.php?template=default

nimmt die datei default.php und erstellt daraus header.php und footer.php bzw. überschreibt die beiden.


es geht dabei auch gar nicht darum, das ich nicht
Code:
HEAD-CODE
$CONTENT
FOOTER-CODE
verwenden will, aber die meisten foren, gästebüche, etc. arbeiten eben mit 2 dateien, und dafür wärs eigentlich gedacht...
Mit Zitat antworten
  #4  
Alt 04.12.2003, 12:04:17
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi @gain

Das kannst du natürlich machen.

Wenn ich dich richtig verstanden habe, willst du den Head und den Footer in einer Datei speichern.

Wenn ja, kannst du das so machen
Code:
$fpread = @fopen($template, 'r'); 
if(!$fpread) { 
    echo "Zur Zeit nicht erreichbar<br>n"; 
    #exit; 
} else {
    $var_array = array ("head", "footer");
    $var_counter = 0; 
    while(! feof($fpread) ) { 
        $buffer = @ltrim(Chop(fgets($fpread))); 
        IF ($buffer == "<!----!>") {
            $var_counter++
            continue;
        }
        $$var_array[$var_counter] .= $buffer;
    } 
} 
@fclose($fpread); 

echo $head;
echo $footer;
So was macht das Ding??
Das Script kommt her und öffnet die Template-Datei
Wenn es die Datei ned lesbar ist, schreibt er einen Error
Wenn doch:
*) definierst du ein Array mit den Variablen die enthalten sind.
(kann man auch in die 1te Zeile der Datei schreiben)
*) Jetzt liest er sich durch die Datei.
Falls ein bestimmtes Trennzeichen (zB: <!----!>)
dann geht er zur nächsten Variable weiter.
*) Wundere dich ned wegen dem $$, das bedeutet, das der Wert der in der Variable als Variablen Name hergenommen wird.
Der . vor dem = ist dafür da, damit er die jeweilige Zeile hinten angehenkt wird.

So würde so eine Template ausschaun.
Code:
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
<!----!>
    </body>
</html>

Ich hoffe ich konnte weiterhelfen
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #5  
Alt 04.12.2003, 12:38:18
meisterroda meisterroda ist offline
Anfänger
 
Registriert seit: Dec 2003
Ort: daham
Beiträge: 3
supertoll:

Code:
<?php
$template=$_GET['template'];
$fpread = @fopen($template, 'r'); 
if(!$fpread) { 
    echo "Zur Zeit nicht erreichbar<br>n"; 
    #exit; 
} else {
    $var_array = array ("head", "footer");
    $var_counter = 0; 
    while(! feof($fpread) ) { 
        $buffer = @ltrim(Chop(fgets($fpread))); 
        IF ($buffer == "<!--teilen-->") {
            $var_counter++;
            continue;
        }
        $$var_array[$var_counter] .= $buffer;
    } 
} 
@fclose($fpread); 

//echo $head;
//echo $footer;

$fp = fopen ("header.php","w");
fwrite($fp,$head);
fclose($fp);
$fp = fopen ("footer.php","w");
fwrite($fp,$footer);
fclose($fp);

echo("Das Template wurde geteilt und ist unter header.php bzw. footer.php gespeichert worden..");
?>
(; hast nach $var_counter++ vergessen)
der einzige haken daran, das das teil einen schiachen code schreibt, also keine zeilenumbrüche. is aber ziemlich wurscht.

vüülen dank!
Mit Zitat antworten
  #6  
Alt 04.12.2003, 12:43:16
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Ohh
Hab so aus der Hand geschrieben und daher ned getestet.

Wegen deinen Umbruch.

Mach bei der Zeile
Code:
$$var_array[$var_counter] .= $buffer;
eine kleine Änderung
Code:
$$var_array[$var_counter] .= $buffer."n";
dann hast du die wieder.

NP, gern geschehn
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
Antwort


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

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:06:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt