Template Parser Class

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 19 Απρ 2005 14:29

Καλημερα
(συνεχιζω τις αποριες μου :oops: )

Θα ήθελα να ρωτήσω πως μπορω να δημιουργήσω στην προσωπική ιστοσελίδα μου σταθερές τιμές(να το πω??)όπως ας πουμε στην phpbb {L_HOME}.Όπου μέσα σε ένα config αρχειο(για πχ) να δηλωνω το link της σελίδας το όνομα και τέτοια.

Αν δεν μπορείτε να μου το εξηγήσετε απλά,ας μου πείτε κανα καλό tutorial γιατι εχω διαβάσει πολλά πράγματα για php αλλα αν δεν κάνεις παραδείγματα δεν μπορείς να τα εμπεδώσεις! :D


Ξέρω για να πετύχει αυτό θα πρέπει οι τιμές να καταχωρηθουν στην SQL database για αυτο και το εκανα post εδω.Αν δεν ειναι για εδω το topic μου παρακαλώ να το μεταφερετε!

[επεξεργαστηκα τον τιτλο]
Τελευταία επεξεργασία από το μέλος skull την 24 Απρ 2005 15:15, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
chchrist
Δημοσιεύσεις: 924
Εγγραφή: 28 Ιουν 2003 20:25
Επικοινωνία:

Template Parser Class

Δημοσίευση από chchrist » 20 Απρ 2005 02:05

Δεν κατάλαβα καλά τι εννοείς, αλλά αν θες να κανεις σταθερές γράφεις το εξής:

<?php

define ("STATHERI", 30); //opou 30 i timi tis statheris

echo STATHERI;

?>


kai meta me cookie i me include to vazeis sto pc tou xristi i sto site sou antistoixa

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 20 Απρ 2005 12:59

ΟΚ αυτο που θελω να κανω ειναι να δηλωνω μεσα σε ενα αρχειο config(για παραδειγμα) τα εξης:

το url του site ( {SITEURL} )
το όνομα ( {SITENAME} )
Author ( {SITEAUTHOR} )
μια περιγραφη ( {SITEDESCRIPTION} )
το Copyright ( {SITECOPYRIGHT} )
το ονομα της καθε σελιδας ( {PAGE_TITLE} )


ετσι ωστε ας πουμε στην αρχη του index.php να ειναι

Κώδικας: Επιλογή όλων

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>&#123;SITENAME&#125; &#58;&#58; &#123;PAGE_TITLE&#125;</title>
<META NAME="&#123;SITEAUTHOR&#125;">
<meta name="description" content="&#123;SITEDESCRIPTION&#125;">
και τετοια.... :oops:

Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

Template Parser Class

Δημοσίευση από xmavidis » 20 Απρ 2005 15:53

αυτό θα το κάνεις με μια κλαση που να κάνει parse τα html ή tpl αρχεία που περιέχουν αυτά τα elements.
I want to know God’s thoughts; the rest are details.
Albert Einstein

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Template Parser Class

Δημοσίευση από Cha0s » 20 Απρ 2005 16:20

Κοινώς άνοιξε το phpBB και ξέσκισε το...

Πιο εύκολο θα είναι από το να το γράψεις μόνος σου.

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 20 Απρ 2005 18:15

Ωραια τοτε!!!το εχω κανει πολλες φορες!


ενα μικρο παραδειγμα ομως για να το καταλαβω γρηγοροτερα?? :oops:

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 23 Απρ 2005 18:11

Βρικα ενα scriptακι το οποιο ειναι κατι σαν blog,δηλαδη να γραφεις blog και να δημοριευοντε.Πιστευω ειναι το πιο απλο που θα μπορουσα να βρω.

Θα ηθελα να με διορθωσετε σε αυτα που θα γραψω παρακατω!Ευχαστω!!! :lol:

Καταρχας δημιουργεις ενα table στην SQL με την εξης εντολη:

Κώδικας: Επιλογή όλων

CREATE TABLE pbl_config &#40;
  config_name varchar&#40;255&#41; NOT NULL default '',
  config_value varchar&#40;255&#41; NOT NULL default ''
&#41; TYPE=MyISAM DEFAULT CHARSET=greek COLLATE=greek_general_ci;
και επειτα εισαγουμε

Κώδικας: Επιλογή όλων

INSERT INTO `pbl_config` VALUES &#40;'sitename', 'Particle Blogger Demo'&#41;;
Αυτο ειναι μικρο παραδειγμα μονο για την τιμη του sitename.

Για να ειναι καλητερο το ολο script που θα δημιουργησω σκεφτικα να κανω ενα εισαγωγικο install.php το οποιο μεσα του θα καταχωρουντε οι αρχικες τιμες και επειτα απο ενα settings.php θα μπορουμε να τις αλλαζουμε.

Ο κώδικας για το Install.php θα ειναι:

Κώδικας: Επιλογή όλων

<tr>
<td><strong>Blog Name</strong><br />
Give your blog a cool name such as I love Particle Soft!</td>
<td><input type="text" size="40" maxlength="255" id="sitename" name="sitename" /></td>
       </tr>
Μετα σε ενα settings.php εισαγουμε:

Κώδικας: Επιλογή όλων

<tr valign="top">
	<td><strong>Site Name</strong><br />
	The name of the blog such as Particle Blogger Demo</td>
	<td><input type="text" size="40" maxlength="255" id="c_sitename" name="c_sitename" value="<?php echo&#40;$config&#91;"sitename"&#93;&#41;; ?>" /></td>
</tr>

Αυτα ειναι μονο που καταλαβα και θελω να μου πειτε περισσοτερες λεπτομεριες καθως και τυχον παραλειψεις! :oops:

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Template Parser Class

Δημοσίευση από ThyClub » 23 Απρ 2005 22:45

Αυτό είναι ενα σύστημα templates.

Στο http://www.devshed.com/c/a/PHP/Building ... HP-Part-I/

υπάρχει ενα πολύ ενδιαφέρον άρθρο με ακριβώς αυτό που ζητάς. Δώσε προσοχή στον τρόπο που οι μεταβλητές γίνονται parsed και θα το καταλάβεις αμέσως :wink:

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 24 Απρ 2005 15:02

οκ το διαβασα μερικες φορες αλλα ακομα ειναι πρωι και ο εγκεφαλος κοιμαται! :hammer:

Καμια επιπλεον βοηθεια???

SQL δεν χρειαζετε??? :oops:
Τελευταία επεξεργασία από το μέλος skull την 10 Μάιος 2005 04:17, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
ledraweb
Honorary Member
Δημοσιεύσεις: 1356
Εγγραφή: 13 Νοέμ 2004 11:00
Τοποθεσία: Λευκωσία

Template Parser Class

Δημοσίευση από ledraweb » 24 Απρ 2005 17:11

skull έγραψε:οκ το διαβασα μερικες φορες αλλα ακομα ειναι πρωι και ο εγκεφαλος κοιμαται! :hammer:
:o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o

Είμαι άσχετος επι του θέματος αλλά δεν άντεξα να μην σχολιάσω τα πιο πάνω σου λόγια τα οποία είπες στις 24 Απρ 2005 14:02

:lol: :lol: :lol: :lol: :lol:
None Of Us Is As Smart As All Of Us!!!

Εικόνα

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 24 Απρ 2005 17:48

diladi xaramata!!!!! :D

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 10 Μάιος 2005 04:37

Ξανακανω post εδω μιας και μεχρι τωρα δεν εχω κανει να δουλεψει.

Το πηρα απο την αρχη για να τα κανω αυτα που λεει και μου βγαζει αυτο το λαθος( test )

Στο template.php εω βαλει αυτο:

Κώδικας: Επιλογή όλων

<?php 

class templateParser &#123; 

    var $output; 

    function templateParser&#40;$templateFile='index.htm'&#41;&#123; 

          &#40;file_exists&#40;$templateFile&#41;&#41;?$this-
>output=file_get_contents&#40;$templateFile&#41;&#58;die
&#40;'Error&#58;Template file '.$templateFile.' not found'&#41;; 

    &#125; 

    function parseTemplate&#40;$tags=array&#40;&#41;&#41;&#123; 

          if&#40;count&#40;$tags&#41;>0&#41;&#123; 

               foreach&#40;$tags as $tag=>$data&#41;&#123; 

                    $data=&#40;file_exists&#40;$data&#41;&#41;?$this-
>parseFile&#40;$data&#41;&#58;$data; 

                    $this->output=str_replace
&#40;'&#123;'.$tag.'&#125;',$data,$this->output&#41;; 

               &#125; 

          &#125; 

          else &#123; 

               die&#40;'Error&#58; No tags were provided for replacement'&#41;; 

          &#125; 

    &#125; 

    function parseFile&#40;$file&#41;&#123; 

          ob_start&#40;&#41;; 

          include&#40;$file&#41;; 

          $content=ob_get_contents&#40;&#41;; 

          ob_end_clean&#40;&#41;; 

          return $content; 

    &#125; 

    function display&#40;&#41;&#123; 

          return $this->output; 

    &#125; 

&#125;



?> 

Που ειναι το λαθος???

Κώδικας: Επιλογή όλων

Parse error&#58; parse error, unexpected '>' in /home/skull/public_html/test10/template.php on line 10

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Template Parser Class

Δημοσίευση από softius » 10 Μάιος 2005 10:36

Το πρόβλημα βρίσκεται στην πρώτη μέθοδο της κλάσσης σου. Και συγκεκριμένα:
(file_exists($templateFile))?$this-
>output
=
Ο τρόπος που σπάζει το $this->output παραπλανεί τον parser, αφού μάλλον πρέπει να πιστεύει πως το $this- πάει για αφαίρεση, και όχι για αναφορά στο αντικείμενο. Γιατί δεν το κάνεις ως εξής;

Κώδικας: Επιλογή όλων

if &#40; file_exists&#40;$templateFile&#41; &#41; &#123;
  $this->output = file_get_contents&#40;$templateFile&#41;;
&#125; else &#123;
  die&#40;'Error&#58;Template file '.$templateFile.' not found'&#41;; 
&#125; 
είναι πιο ευανάγνωστο και αποφεύγεις τέτοιου είδους προβλήματα.

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 10 Μάιος 2005 22:05

Γιουπι το εκανα!!!!!! :kaloe:

Λοιπον τα καταφερα και δουλεψε επιτελους.Θα ηθελα ομως να αν μπορει καποιος να μου εξηγησει τι γινετε γιατι δεν καταλαβα τιποτα! :cry:

Απλο "τυφλοσουρτη"(οπως θα λεγαν οι παλιοτεροι)εκανα!

Ωριστε και ο κωδικας με μερικεσ διορθωσεις:

index.php

Κώδικας: Επιλογή όλων

<?php 

// include the class 

require_once&#40;'template.php'&#41;; 

// instantiate a new template Parser object 

$tp=&new templateParser&#40;'template.htm'&#41;; 

// define parameters for the class 

$tags=array&#40;'title'=>'You are seeing the template parser class in action!',
'content'=>'There are unsmiling faces and bright plastic chains, and a wheel in perpetual motion.',
'author'=>'The Alan Parsons Project.'&#41;; 

// parse template file 

$tp->parseTemplate&#40;$tags&#41;; 

// display generated page 

echo $tp->display&#40;&#41;; 

?>
template.php(η πιο πανω διορθωμενη):

Κώδικας: Επιλογή όλων

<?php 

class templateParser &#123; 

    var $output; 

    function templateParser&#40;$templateFile='template.htm'&#41;&#123; 

          if &#40; file_exists&#40;$templateFile&#41; &#41; &#123; 
  $this->output = file_get_contents&#40;$templateFile&#41;; 
&#125; else &#123; 
  die&#40;'Error&#58;Template file '.$templateFile.' not found'&#41;; 
&#125; 


    &#125; 

    function parseTemplate&#40;$tags=array&#40;&#41;&#41;&#123; 

          if&#40;count&#40;$tags&#41;>0&#41;&#123; 

               foreach&#40;$tags as $tag=>$data&#41;&#123; 

                    $data=&#40;file_exists&#40;$data&#41;&#41;?$this->parseFile&#40;$data&#41;&#58;$data; 

                    $this->output=str_replace
&#40;'&#123;'.$tag.'&#125;',$data,$this->output&#41;; 

               &#125; 

          &#125; 

          else &#123; 

               die&#40;'Error&#58; No tags were provided for replacement'&#41;; 

          &#125; 

    &#125; 

    function parseFile&#40;$file&#41;&#123; 

          ob_start&#40;&#41;; 

          include&#40;$file&#41;; 

          $content=ob_get_contents&#40;&#41;; 

          ob_end_clean&#40;&#41;; 

          return $content; 

    &#125; 

    function display&#40;&#41;&#123; 

          return $this->output; 

    &#125; 

&#125;



?>


και τελος η template.htm(ολα μαζι στον ιδιο φακελο):

Κώδικας: Επιλογή όλων

<html> 

<head> 

<title>&#123;title&#125;</title> 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

</head> 

<body> 

<div> 

<p>&#123;content&#125;</p> 

<p>The author of this song is&#58; &#123;author&#125;</p> 

</div> 

</body> 

</html> 
Ωριστε και το αποτελεσμα test

Το ξερω οτι κουραζει πολυ ολος αυτος ο κωδικας αλλα ειναι πολυ χρησιμο και πρεπει να το μαθω! :D

Άβαταρ μέλους
skull
Δημοσιεύσεις: 140
Εγγραφή: 02 Μαρ 2005 17:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Template Parser Class

Δημοσίευση από skull » 20 Μάιος 2005 16:29

(Μετα απο λιγο καιρο...)

Προχωρωντας στο βοηθημα πιο πανω βλεπουμε στο τελος να μας δινει ενα κλασικο παραδειγμα index.php οπου φενετε παρακατω:

Κώδικας: Επιλογή όλων

<?php 

// include the class 

require_once&#40;'template.php'&#41;; 

// instantiate a new template Parser object 

$tp=&new templateParser&#40;'template.htm'&#41;; 

// define parameters for the class 

$tags=array&#40;'title'=>'You are seeing the template parser class in action!','header'=>'header.php',
'navbar'=>'navigation bar.php',
'leftcontent'=>'leftcontent.php',
'maincontent'=>'maincontent.php',
'rightcontent'=>'rightcontent.php',
'footer'=>'footer.php'&#41;; 

// parse template file 

$tp->parseTemplate&#40;$tags&#41;; 

// display generated page 

echo $tp->display&#40;&#41;; 

?>
Η ερωτηση μου ειναι τι πρεπει να εχει το template.htm???
Αφου δηλωνουμε και php αρχεια όπως το header,footer και αλλα!!! :-?

Δηλαδη για να βαλουμε ξεχωρηστα header,main και footer στην αρχικη index τι πρεπει να κανουμε.....??????

(Δοκιμασα να βαλω αντι του template.htm ενα αλλο ονομα αρχειου(index_body.php ας πουμε) αλλα χτυπαει error στην template.php στην γραμμη 3(κοιτα στο πιο πανω ποστ)!!)

Εχω μπερδευτει στο πως μπορουμε να χρησιμοποιησουμε αυτο το βοηθημα στην οργανωση εναος ολοκληρου site!καμια βοηθεια ρ παιδιαααα!!!! :roll:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης