Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Systemy szablonów _ [SMARTY]Przeniesienie podstron na smarty

Napisany przez: dawideq03 15.02.2013, 11:16:55

Witam,

mam dwie strony, jedna oparta o czysty PHP + MySQL znajduje się pod adresem: http://dawidbtest.home.pl/foreach/index2.php (taki testowy adres), druga, która znajduje się pod adresem http://dawidbtest.home.pl/smarty/ chciałby aby działała na szablonach smarty, problemem jest tu niestety "wyjeżdżanie" tekstu poza cały szablon ( np. na stronie głównej napis "test" znajduje się na samej górze po prawej stronie), wygląda to jakby np. jakiś div nie był domknięty, ale niestety nie znalazłem przyczyny. Może przedstawię nieco kodu:

plik index.php w smarty

  1. <?php
  2. http://www.php.net/ob_start();
  3. http://www.php.net/session_start();
  4. ?>
  5.  
  6. <?php
  7. //pełne ścieżki
  8. // put full path to Smarty.class.php
  9. require('./smarty/Smarty.class.php');
  10. $smarty = new Smarty();
  11. $smarty->setTemplateDir('./templates');
  12. $smarty->setCompileDir('./smarty/templates_c');
  13. $smarty->setCacheDir('./smarty/cache');
  14. $smarty->setConfigDir('./smarty/configs');
  15.  
  16. $menu[0] = http://www.php.net/array(
  17. 'Strona główna','',);
  18. $menu[1] = http://www.php.net/array(
  19. 'Aktualności','aktualnosci',);
  20. $menu[2] = http://www.php.net/array(
  21. 'Galeria','galeria');
  22. $menu[3] = http://www.php.net/array(
  23. 'Mapa','gmaps',);
  24. $menu[4] = http://www.php.net/array(
  25. 'Kontakt', 'kontakt');
  26. $menu[5] = http://www.php.net/array(
  27. 'Księga gości', 'goscie');
  28. $menu[6] = http://www.php.net/array(
  29. 'Logowanie', 'logowanie');
  30.  
  31. if($_GET['str']=='') include('podstrony/strona_glowna.php');
  32. elseif($_GET['str']=='aktualnosci') include('podstrony/aktualnosci.php');
  33. elseif($_GET['str']=='galeria') include('podstrony/galeria.php');
  34. elseif($_GET['str']=='mapa') include('podstrony/gmaps.php');
  35. elseif($_GET['str']=='kontakt') include('podstrony/contact_form.php');
  36. elseif($_GET['str']=='goscie') include('podstrony/goscie.php');
  37. elseif($_GET['str']=='logowanie') include('podstrony/logowanie.php');
  38. else;
  39.  
  40.  
  41. $smarty->assign("site_title", "Strona domowa");
  42.  
  43. $smarty->assign("str", $_GET["str"]);
  44.  
  45.  
  46. $smarty->assign("menu", $menu);
  47.  
  48.  
  49. $smarty->display('site_head.tpl');
  50.  
  51. $smarty->display('site_header.tpl');
  52.  
  53. //$smarty->display('footer.tpl');
  54.  
  55. ?>



w katalogu /templates, znajduje się plik site_header.tpl , który zawiera strukturę strony"

Kod
<div id="content">
<div id="top">
    Tutaj będzie nagłówek
</div>
  <div id="left">
    {include file="site_menu.tpl"}
</div>
  <div id="page">
    <h1>Witaj na mojej stronie</h1>
    {include file="main_site.tpl"}
    </div>
<div id="right">
    </div>
<div class="clear">
    {include file="footer.tpl"}
    </div>
    </div>
</div>



w site_menu.tpl natomiast pętla foreach, która odpowiada za przeskakiwanie po menu:

Kod
  <ul>
  {foreach item=item from=$menu}
  <li><a href = "index.php?str={$item[1]}">{$item[0]}</a></li>
  {/foreach}
  </ul>



jak zrobić aby napis "test" wyświetlał się pod napisem - "Witaj na mojej stronie"?

dodatkowo mam też zakładki takie jak Aktualności, czy Formularz - to też muszę przerobić na smarty, czy istnieje jakiś prostszy sposób (np. dodanie do /templates np. formularz.tpl i tam przeniesienie kodu a następnie odwołanie się do niego przez np. plik formularz.php? )

Byłbym wdzięczny za każdą pomoc. Wiem że pytania dla niektórych wydają się banalne, ale walczę z tym już jakiś czas i nie daje rady tongue.gif. Dziękuje i pozdrawiam.

Napisany przez: nospor 15.02.2013, 11:20:12

Naprawdę w źródle tej drugiej strony nie widzisz, ze nie ma tam w ogóle BODY??

o jakiś tekstach typu TEST przed DOCTYPE nie wspominając?

Napisany przez: dawideq03 15.02.2013, 11:32:20

Ok, dodałem body do site_header.tpl, "test" się pojawia, jednak na wszystkich podstronach i niestety pozostaje również na górze :/


Napisany przez: nospor 15.02.2013, 11:37:05

To może pokaż kod, gdzie ty ten test masz.... no skad mamy wiedziec jak pomoc, skoro nie wiemy z czym mamy do czynienia...
pokaz tez kod include('podstrony/strona_glowna.php');

Napisany przez: dawideq03 15.02.2013, 11:42:51

w strona_glowna.php jest jedynie odwołanie do szablonu:

  1. <?php
  2. $smarty->display('strona_glowna.tpl');
  3. ?>

Napisany przez: nospor 15.02.2013, 11:45:34

Czyli najpierw wyświetlasz stronę główną, a dopiero potem site_head.tpl oraz site_header.tpl.... wg. mnie coś tu nie tak, niesądzisz?

Poza tym prosiłem cię o kod, gdzie masz to nieszczęsne TEST. Czytaj proszę wszystko co do Ciebie piszą. No chyba ze pomocy jednak nie potrzebujesz.

Napisany przez: dawideq03 15.02.2013, 11:51:51

sam napis "test" znajduje się w strona_glowna.tpl (i tylko to się w nim znajduje) ( w katalogu /templates).

a wywołanie rzeczywiście jest jakieś nie takie, niby teraz napis "test" się teraz pojawia, ale również pozostaje na górze.

Napisany przez: nospor 15.02.2013, 11:54:12

...
wywal to:
if($_GET['str']=='') include('podstrony/strona_glowna.php');

elseif($_GET['str']=='aktualnosci') include('podstrony/aktualnosci.php');

elseif($_GET['str']=='galeria') include('podstrony/galeria.php');

elseif($_GET['str']=='mapa') include('podstrony/gmaps.php');

elseif($_GET['str']=='kontakt') include('podstrony/contact_form.php');

elseif($_GET['str']=='goscie') include('podstrony/goscie.php');

elseif($_GET['str']=='logowanie') include('podstrony/logowanie.php');

else;
w calosci

Napisany przez: dawideq03 15.02.2013, 12:00:33

Super, jest postęp, ten górny napis zniknął, teraz napis test pojawia się na każdej z podstron, przydałoby się aby na każdej było co innego smile.gif.

Napisany przez: nospor 15.02.2013, 12:05:12

w site_header masz coś takiego
{include file="main_site.tpl"}
Ładujesz tam zawsze jeden szablon z treścią. Masz tam ładować szablon tresci w zaleznosci od strony czyli:
{include file=$site}

a zmienną $site ustalasz w php i przekazujesz do smarty przed wywołaniem site_header.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)