Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Templates - kilka pytań
Forum PHP.pl > Forum > PHP
Sali_
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 smile.gif, ale jak bardziej optymalnie można przerobić ten skrypt?
hawk
Olać całkowicie i użyć jednego z kilkuset (pewnie) gotowych?
Sali_
Mogę olać, ale co to za radość jeśli nie jest to własnoręcznie stworzony skryptu. Postanowiłem zrobić swój system i łatwo się nie poddaje smile.gif, ale jest on taki zły, że radzisz mi użyć gotowych.
hawk
Nie, nie mówię, że jest zły. Nie analizowałem go szczegółowo.

Spójrz na to tak: jeżeli nie masz jakiegoś wyjątkowego pomysłu, czegoś co wyróżnia twój pomysł i czyni go lepszym od konkurencyjnych, to nikogo tak naprawdę nie obchodzi co tam wymysliłeś. Life is brutal sad.gif.

Robić takie coś dla przyjemności i dla nauki oczywiście można. Czemu nie. Nie od razu ez zbudowano. Ale na ogół takie próby mają znikome szanse wyjścia poza jednoosobowy krąg odbiorców.

Jeżeli zastanawiasz się, jak polepszyć obecny skrypt, zrób to inaczej. Nie zarzucaj kodem, tylko zastanów się, jakie są główne założenia, co chciałeś uzyskać, itd. Sam kod jest kwestią drugorzędną.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.