home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 January / PCWorld_2004-01_cd.bin / Novinky / Interval / clanek10.htm < prev    next >
Encoding:
Extensible Markup Language  |  2003-12-04  |  13.0 KB  |  178 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  12. <meta name='keywords' content='Interval' />
  13. <meta http-equiv='imagetoolbar' content='no' />
  14. <meta http-equiv='MSThemeCompatible' content='no' />
  15. <meta name='MSSmartTagsPreventParsing' content='true' />
  16. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  17. <style media='all' type='text/css'>
  18. @import '__services/styles/interval_articles.css';
  19. </style>
  20. </head>
  21. <body class='interval interval-articles'>
  22. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  23. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://diskuse.interval.cz'>Diskusnφ f≤rum</a></li><li class='right'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  24. <div id='page-body'><div id='page-left'><div id='article'>
  25.  
  26.  
  27.  
  28. <h2>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</h2>
  29. <p id='prepend'>O p°φΦinßch a d∙le₧itosti odd∞lovßnφ dat od zpracovacφch funkcφ a prezentaΦnφho rozhranφ u₧ se toho napsalo mnoho. ProblΘmem takzvan²ch Üablonovacφch systΘm∙ je ovÜem jejich slo₧itost, kterß na jednu stranu poskytuje jist² komfort, na druhou stranu vÜak brßnφ snadnΘmu pochopenφ a vyu₧itφ t∞chto moloch∙ ve vlastnφch aplikacφch. Proto bych vßs cht∞l seznßmit se systΘmem P.E.T., kter² zvlßdß mnohΘ a p°itom se jej nauΦφte b∞hem n∞kolika minut.</p>
  30.  
  31.  
  32. <p><strong>P.E.T.</strong> je zkratkou pro anglickΘ <strong>Processor Engine for Templates</strong>, aΦkoli autor systΘmu tvrdφ, ₧e <a href='http://php-pet.sourceforge.net/english_index.html'>P.E.T.</a> je nejen zpracovacφm nßstrojem, ale zßrove≥ jazykem pro tvorbu Üablon. Cel² systΘm je vlastn∞ jednou jedinou t°φdou o t°ech parametrech a devφti metodßch. Primßrn∞ je P.E.T. zam∞°en pro prßci s (X)HTML, nicmΘn∞ jej lze dφky jeho jednoduchosti pou₧φt pro p°φpravu jakΘhokoli v²stupu. Je ovÜem pravdou, ₧e se naprosto ideßln∞ hodφ pro modernφ webovΘ strßnky v beztabulkovΘm layoutu, pro jejich linearitu.</p>
  33.  
  34. <h3>èablony a znaΦkovßnφ</h3>
  35. <p>V dalÜφm textu si p°edvedeme vyu₧itφ P.E.T. na fragmentech jednoduchΘho (X)HTML souboru. ZaΦneme zßpisem specißlnφch konstrukcφ, kterΘ budou v Üablon∞ chßpßny jako °φdφcφ instrukce. V podstat∞ existujφ jen t°i, pro vlo₧enφ jednoduchΘho ·daje, pro smyΦku, kterß opakovan∞ vlo₧φ vyznaΦen² k≤d dopln∞n² o p°ipravenß data, a pro <acronym title='Server SideIncludes'>SSI</acronym>, co₧ je vlastn∞ jin² soubor, jeho₧ obsah mß b²t do Üablony zaΦlen∞n. To vÜe se zapisuje formou b∞₧nΘho komentß°e.</p>
  36.  
  37. <div class='list'>
  38. <ul>
  39. <li>Vlo₧enφ jednoduchΘ hodnoty, nap°φklad jmΘna:
  40.     <div class='sample'>
  41.     Dnes mß svßtek <!-- {oslavenec} -->!
  42.     </div>
  43. </li>
  44. <li>Vlo₧enφ opakujφcφ se sekvence, kterß m∙₧e obsahovat nap°φklad v²pis polo₧ek telefonnφho seznamu (smyΦky se mohou vno°ovat a jejich provßd∞nφ trvß tak dlouho, dokud jsou k dispozici vklßdanß data):
  45.     <div class='sample'>
  46.     <ul>
  47.     <br /><!-- begin loop {osoby} -->
  48.     <br />   <li><!-- {jmeno} -->
  49.     <br />      <ul>
  50.     <br />         <!-- begin loop {cisla} -->
  51.     <br />         <li><!-- {telefon} --></li>
  52.     <br />         <!-- end loop -->
  53.     <br />      </ul>
  54.     <br />   </li>
  55.     <br /><!-- end loop -->
  56.     <br /></ul>
  57.     </div>
  58. </li>
  59. <li>Vlo₧enφ externφho souboru:
  60.     <div class='sample'>
  61.     <!--#include virtual="menu.htm" -->
  62.     </div>
  63. </li>
  64. </ul>
  65. </div>
  66.  
  67. <h3>P°φprava dat</h3>
  68. <p>P°φprava dat spoΦφvß v naΦtenφ t°φdy P.E.T., zalo₧enφ objektu typu "pet", provedenφ u₧ivatelskΘho skriptu a p°i°azenφ dat objektu. Pokud vyjdeme z v²Üe uveden²ch p°φklad∙, vystaΦφme si z hlediska P.E.T. se t°emi metodami. Nejprve musφme naΦφst t°φdu a zalo₧it objekt:</p>
  69.  
  70. <div class='sample'>
  71. require_once('class_pet.eng.inc.php');
  72. <br />$template = new pet;
  73. </div>
  74.  
  75. <p>Nßsledn∞ p°ikroΦφme k zφskßnφ dat, kter²mi se bude plnit naÜe Üablona. K tomu budeme pot°ebovat jednoduchou hodnotu se jmΘnem oslavence a dataset, jeho₧ obsahem bude seznam lidφ a jejich telefonnφch Φφsel. (V p°φkladu si pot°ebnΘ prom∞nnΘ jednoduÜe vyrobφme, v reßlu bychom je zφskßvali nejspφÜe z n∞jakΘho externφho zdroje, nap°φklad databßze.) Tato data pak p°i°adφme naÜemu objektu:</p>
  76.  
  77. <div class='sample'>
  78. $oslavencovo_jmeno = 'Jana';
  79. <br />$template->add_content($oslavencovo_jmeno, 'oslavenec');
  80. <br />
  81. <br />$osoby['jmeno'][] = 'Pavlφna';
  82. <br />   $subarray['telefon'][] = '526895361';
  83. <br />   $subarray['telefon'][] = '156395742';
  84. <br />   $osoby['cisla'] = $subarray;
  85. <br />$seznam[] = $osoby;
  86. <br />   unset($osoby['cisla']);
  87. <br />$osoby['jmeno'][] = 'Hana';
  88. <br />   $subarray['telefon'][] = '434343844';
  89. <br />   $subarray['telefon'][] = '737375187';
  90. <br />   $osoby['cisla'] = $subarray;
  91. <br />$seznam[] = $osoby;
  92. <br />   unset($osoby['cisla']);
  93. <br />$template->add_content($seznam, 'osoby');
  94. </div>
  95.  
  96. <p>Poslednφm krokem p°ed velk²m finßle je naΦtenφ Üablony, se kterou majφ b²t data slouΦena. To se za°φdφ snadno:</p>
  97.  
  98. <div class='sample'>
  99. $template->read_file('kamaradky.tpl.htm');
  100. </div>
  101.  
  102. <h3>Zpracovßnφ a v²stup</h3>
  103. <p>V tΘto chvφli mßme objekt, kter² obsahuje vÜechna naÜe data a Üablonu, do kterΘ je chceme umφstit, tak°φkajφc v surovΘm stavu. Pomocφ r∙zn²ch metod m∙₧eme s p°ipraven²m obsahem manipulovat (nap°φklad jej exportovat do souboru a podobn∞), my ale pou₧ijeme pouze metodu pro slouΦenφ Üablony s daty a v²stup hotovΘ strßnky:</p>
  104.  
  105. <div class='sample'>
  106. $template->parse();
  107. <br />$template->output();
  108. </div>
  109.  
  110. <p>Jak vidφte, prßce s P.E.T. je skuteΦn∞ jednoduchß. Velikost a provedenφ P.E.T. umo₧≥ujφ jeho vyu₧itφ jak pro rychlou p°φpravu jednoduch²ch strßnek, tak i jeho snadnou integraci do v∞tÜφch aplikacφ, kde lze zßkladnφ t°φdu podle pot°eby upravit nebo doplnit o chyb∞jφcφ funkΦnost - aΦkoli osobn∞ se domnφvßm, ₧e ve v∞tÜin∞ p°φpad∙ postaΦφ to, co P.E.T. u₧ umφ.</p>
  111. <p>Dokumentaci, p°φklad a t°φdu samotnou si m∙₧ete stßhnout bu∩ ze strßnek <a href='http://sourceforge.net/project/showfiles.php?group_id=70316'>P.E.T. na SourceForge.net</a> nebo p°φmo <a href='podklady/malek/696/complete_pet.zip'>z Intervalu</a>. V druhΘm p°φpad∞ budete zv²hodn∞ni tφm, ₧e jsem vÜechny materißly zabalil do jednoho archivu a navφc jsem do Üablony doplnil chyb∞jφcφ °ßdek Φφslo 373 (p°φkaz "else").</p>
  112.  
  113.  
  114.  
  115. <div id='article-author'>
  116. <a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=65'>Mßlek, VilΘm</a> (21.11. 2003)
  117. <div id='article-about-author'>ÜΘfredaktor Interval.cz</div>
  118. </div>
  119.  
  120.  
  121.  
  122. </div></div>
  123. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  124. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  125.  
  126.  
  127.  
  128. <div class='page-right-box book'>
  129.     <h3>Kni₧nφ novinka</h3>
  130.     <div class='page-right-box-in'>
  131.         <div class='book-top'>
  132.             <h4><a href='http://interval.cz/redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=235'>PostgreSQL: Praktick² pr∙vodce</a></h4>
  133.         </div>
  134.     </div>
  135.     <div class='image'>
  136.         <a href='http://interval.cz/redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=235'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  137.     </div>
  138.     <div class='book-bottom'>Cena: <span class='book-price-old'>447,00 KΦ</span> <span class='book-price-new'>402,30 KΦ</span></div>
  139. </div>
  140.  
  141.  
  142.  
  143. <div class='page-right-box reading'>
  144.     <h3>NejΦten∞jÜφ</h3>
  145.     <div class='page-right-box-in'>
  146.         <ul>
  147. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2856'>ZnakovΘ sady v praxi</a></li>
  148. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2849'>Vytvß°enφ dokument∙ PDF v PHP</a></li>
  149. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2852'>Interval v zajetφ Φφsel</a></li>
  150. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2850'>CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery</a></li>
  151. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2844'>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</a></li>
  152.         </ul>
  153.     </div>
  154. </div>
  155.  
  156.  
  157.  
  158. <div class='page-right-box cauldron'>
  159.     <h3>Diskuznφ kotel</h3>
  160.     <div class='page-right-box-in'>
  161.         <ul>
  162. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2313'>Studenß vßlka prohlφ₧eΦ∙</a><div>222 komentß°∙ </div></li>
  163. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1573'>Kam jφt studovat?</a><div>108 komentß°∙ </div></li>
  164. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2797'>VyhlßÜenφ sout∞₧e Interzen 2003</a><div>95 komentß°∙ </div></li>
  165. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2827'>Dreamweaver MX 2004</a><div>48 komentß°∙ </div></li>
  166. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2816'>beeasy.cz</a><div>47 komentß°∙ </div></li>
  167.         </ul>
  168.     </div>
  169. </div>
  170.  
  171.  
  172.  
  173. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  174. </div>
  175. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  176. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  177. </body>
  178. </html>