Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XML] Szablony i xml
Forum PHP.pl > Forum > Przedszkole
Puzi
Witam,
Używam taki system szablonów znaleziony w internecie:

index.php
  1. <?php
  2. include 'tools/includes/template.inc.php';
  3.  
  4. $array=array(
  5.      &#092;"naglowek\"=>\"Witaj!!\",
  6.      &#092;"tresc\"=>\"witaj na mojej stronie\",
  7.      &#092;"title\"=>\"asdas\",
  8.      );
  9. if(!$_POST['styl'])
  10. {
  11.   $_POST['styl'] = 'test';
  12. }
  13. echo template($array, &#092;"index\", $_POST['styl']);
  14.  
  15. ?>


template.inc.php
  1. <?php
  2. function template($array, $page, $template){
  3.   $tpl=file_get_contents(&#092;"templates/$template/$page.htm\");
  4.   foreach($array as $t => $content){
  5.      $tpl=str_replace(&#092;"<%ERT%\".strtoupper($t).\"%>\", $content, $tpl); //podmienia zmienne na wartości
  6.   }
  7.   $tpl=preg_replace('(<%ERT%(.*?)%>)', &#092;"\", $tpl); //czyszczenie pozostałości
  8.   return $tpl;
  9. }
  10. ?>


index.htm
  1. <title><%ERT%TITLE%></title>
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  3. </head>
  4. <body bgcolor="blue">
  5. <form action="index.php" method="post">
  6. <select name="styl" onchange='submit();'>
  7. <option value="test" selected>Styl 1</option>
  8. <option value="test2">Styl 2</option>
  9. <option value="qqq">Styl 3</option>
  10. </form>
  11. <h1><%ERT%NAGLOWEK%></h1>
  12. <p><%ERT%TRESC%></p>
  13. <%ERT%STOPKA%>
  14. </body>
  15. </html>


i mam jeszcze plik xml:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <slowo>
  3. <oznaczenie>naglowek</oznaczenie>
  4. <wyraz>Witaj!!</wyraz>
  5. </slowo>
  6. <slowo>
  7. <oznaczenie>tresc</oznaczenie>
  8. <wyraz>Co? questionmark.gif </wyraz>
  9. </slowo>


I chce zaimportować te dane z xml do tego skryptu alby wyswietliło mi dane z xml a nie z tablicy...
Jak to można zrobić??
Proszę o pomoc

Pozdrawiam
topp
Jedna uwaga: XML jest niepoprawny. Nie posiada korzenia. Zapisz go raczej w ten sposób:
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <slownik>
  3.  <slowo>
  4.    <oznaczenie>costam</oznaczenie>
  5.    <wyraz>jakistam</wyraz>
  6.  </slowo>
  7.  <slowo>
  8.    ...
  9.  </slowo>
  10. </slownik>


Piszę z palca, więc mogą być drobne błędy, ale generalnie tak:
  1. <?php
  2. include 'tools/includes/template.inc.php';
  3.  
  4. // Potrzebujesz bilioteke SimpleXML (domyslnie jest dodawana do PHP, ale może zajść konieczność jej odblokowania w ustawieniach)
  5. $xml = simplexml_load_file('plik.xml');
  6.  
  7. $slowa = Array();
  8.  
  9. foreach ($xml->slowo as $slowo){
  10.  $slowa[(string)$slowo->oznaczenie] = (string)$slowo->wyraz;
  11. }
  12.  
  13. // I dalej wywołujesz swoją funkcję do renderowania szablonu :)
  14. if (!$_POST['styl']) { $_POST['styl'] = 'test'; }
  15.  
  16. echo template($slowa, 'index', $_POST['styl']);
  17. ?>
Puzi
Mam jeszcze jedno pytanie odnośnie szablonów....
Czy da się zobić coś takiego... Bo nie wszystko jest sztywne i niektóre informacje zależą od PHP... np. gdy użytkownik wpisał coś źle w formularz to żeby mu pokazało błąd... a sztywne szablony mi tego nie umożliwiają.
Czy da się może jakoś zrobić tak żeby jak w szablon wstawię <%ERT%BLAD%> to żeby on dopiero się wyświetlił gdy na prawdę będzie bład??

Prosze o pomoc
Pozdraiwam
Maxik
Może spróbuj ze smarty, jest bardziej rozbudowany.
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.