Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Templates - kilka pytań, Porady tworzenia systemu skór.
Sali_
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.11.2004
Skąd: Warszawa-Tarchomin

Ostrzeżenie: (0%)
-----


Mam klika pytań odnośnie tworzenia własnego systemu szablonów. Najpier podam kod:

Plik templates_class.php
  1. <?php
  2.  
  3. class Templates
  4. {
  5.         var $fiopen;
  6.         var $sciezka;
  7.         
  8.         function NameFile($val, $sciezka)
  9.         {
  10.                 $this->fiopen=$val;
  11.                 $this->sciezka=$sciezka;
  12.         }
  13.         
  14.         function OpenFile($value)
  15.         {
  16.                 global $errormsg;
  17.                 
  18.                 while(list($klucz, $wartosc) = each($value))
  19.                 {
  20.                         $nazwa_zm[$klucz]=$klucz;
  21.                         $wartosc_zm[$klucz]=$wartosc;
  22.                 }
  23.                 
  24.                 $p=$this->sciezka.$this->fiopen;
  25.                 if(file_exists($p))
  26.                 {
  27.                         $plik = file($p);                // Ładuje plik
  28.                         $linie = count($plik);          // Zlicza linie
  29.                         for($n=0; $n<=$linie; $n++)
  30.                         {
  31.                                 if (eregi(&#092;"{(.*)}\", $plik[$n], $zm));
  32.                                 {
  33.                                         $plik[$n]=str_replace('{'.$nazwa_zm[$zm[1]].'}', $wartosc_zm[$zm[1]], $plik[$n]);
  34.                                         print($plik[$n]);
  35.  
  36.                                 }
  37.                         }
  38.                 }else{
  39.                         printf($errormsg['nie ma pliku'], $p);
  40.                         exit;
  41.                 }
  42.  
  43.         }
  44.  
  45. }
  46.  
  47. ?>


Plik index.php

  1. <?php
  2.  
  3. include&#092;"langpack/polski/errorpack/war_err.msg\";
  4. include&#092;"langpack/polski/main.lang\";
  5. include&#092;"include/templates_class.mod\";
  6.  
  7. $TEMPL= new Templates;
  8.  
  9. $TEMPL->NameFile(&#092;"naglowek.tpl\", \"templates/SubSun/\");
  10. $TEMPL->OpenFile(array(
  11.                         &#092;"Tytul\" => $lang['Tytul'],
  12.                         &#092;"Kodowanie\" => $lang['Kodowanie'],
  13.                         &#092;"Reply-to\" => $lang['Reply-to'],
  14.                         &#092;"Generator\" => $lang['Generator'],
  15.                         &#092;"Autor_script\" => $lang['Autor_script'],
  16.                         &#092;"Description\" => \"Tu bedzie jakis opis\"
  17.                        ));
  18.  
  19.  
  20. $TEMPL->NameFile(&#092;"home.tpl\", \"templates/SubSun/\");
  21. $TEMPL->OpenFile(array(
  22.                        'zm1' => &#092;"Test 1\",
  23.                        'zm2' => &#092;"Test 2\"
  24.                        ));
  25.                        
  26.  
  27.  
  28. $TEMPL->NameFile(&#092;"stopka.tpl\", \"templates/SubSun/\");
  29. $TEMPL->OpenFile(array(
  30.                         &#092;"INFO\" => \"<b>$tempver</b><br />&copy; Copyrights phpSuNs 2005\"
  31.                        ));
  32.  
  33. ?>


Plik naglowek.tpl
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="content-type" content="text/html; {Kodowanie}" />
  4. <meta http-equiv="reply-to" content="{Reply-to}" />
  5. <meta name="generator" content="{Generator}" />
  6. <meta name="author" content="{Autor_script}" />
  7. <meta name="description" content="{Description}" />
  8. <title> {Tytul} </title>
  9. </head>


Plik home.tpl
  1. <span style="font: 24px; font-family: Arial Black; color: #A52A2A">SuNsTEMPL v1.0</span>
  2. <hr />
  3. System szablonów SuNsTEMPL jest prostym skryptem do zarządzania motywami na stronach www
  4.  
  5. <br />
  6. <br />
  7.  
  8. {zm1}
  9. {zm2}


Plik stopka.tpl
  1. <br /><br /><br />
  2. <center>{INFO}</center>
  3.  
  4. </body>
  5. </html>


Pytanie 1.
Skrypt dział bez problemu, lecz jest jedna wada specjalne znaczniki, które interpretuje mój skrypt są zawarte w nawiasach klamrowych np. {nazwa_zmiennej} nie są interpretowane gdy są w tej samej linii jak tego się pozbyć?

Pytanie 2.
Czy kod skryptu jest w miarę zrozumiały co wy byście w nim zmienili?


Pytanie 3.
Jak w preg_match_all odczytac taka formułe {zmienna}

---------------------------------------------------------------------------------------------
  1. <?php
  2.  
  3. class Templates
  4. {
  5. var $fiopen;
  6. var $sciezka;
  7.  
  8. function NameFile($val, $sciezka)
  9. {
  10. $this->fiopen=$val;
  11. $this->sciezka=$sciezka;
  12. }
  13.  
  14. function OpenFile($value)
  15. {
  16. global $errormsg;
  17.  
  18. while(list($klucz, $wartosc) = each($value))
  19. {
  20. $nazwa_zm[$klucz]=$klucz;
  21. $wartosc_zm[$klucz]=$wartosc;
  22. }
  23.  
  24. $p=$this->sciezka.$this->fiopen;
  25. if(file_exists($p))
  26. {
  27. $plik = file($p); // Ładuje plik
  28. $linie = count($plik); // Zlicza linie
  29. for($n=0; $n<=$linie; $n++)
  30. {
  31. preg_match_all(&#092;"|{(.*)}|U\", $plik[$n], $zm);
  32. for($i=0; $i <= 100; $i++)
  33. $plik[$n]=str_replace('{'.$nazwa_zm[$zm[1][$i]].'}',
  34. $wartosc_zm[$zm[1][$i]],
  35. $plik[$n]);
  36. print($plik[$n]);
  37. }
  38. }else{
  39. printf($errormsg['nie ma pliku'], $p);
  40. }
  41.  
  42. }
  43.  
  44. }
  45. ?>


No już problem rozwiązany odczytuje tyle ile chcem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) , ale jak bardziej optymalnie można przerobić ten skrypt?

Ten post edytował Sali_ 31.01.2005, 23:49:38
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:42