Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] zamieniaj zmienną na funkcję
nitro18
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

Ostrzeżenie: (10%)
X----


Chciałbym skorzystać ze smarty. Jednak mam problem.

Kiedy następuje wczytanie szablonu tag {menu} powinien zostać zamieniony przez zawartość funkcji menu()
jednak po zastosowaniu poniższego kodu nie działa. w pliku menu.php są także skrypty php więc otwieranie fread() mi sie nie opłaca.

Proszę o pomoc, z góry dziękuję.

  1. <? 
  2. //szablon
  3. $f=fopen("szablon.htm", "r");
  4. $szablon=fread($f, filesize("szablon.htm"));
  5.  
  6. function menu(){
  7. @include 'menu.php';
  8. }
  9.  
  10. $szablon = eregi_replace("{menu}", menu(), $szablon);
  11.  
  12.  
  13. echo $szablon;
  14. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
qqrq
post
Post #2





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


Rozumiem. Szczerze powiem, nie wiem jak to zrobić bezpośrednio (bez ingerencji w kod źródłowy Smarty'ego), ale można inaczej:


Sposób 1:

Załóżmy że masz plik index.php i szablon do tego index.tpl. Teraz tak, do pliku menu.php robisz szablon menu.tpl. I tak:

index.php
  1. <?php
  2. include 'menu.php';
  3. ?>


index.tpl
  1. {include file=menu.tpl}



Sposób 2:

Wszystko co ma się wyświetlać jako menu przypisujesz do jakiejś zmiennej Smarty i wyświetlasz w szablonie:

index.php
  1. <?php
  2. include 'menu.php';
  3. ?>


menu.php
  1. <?php
  2. $smarty->assign('Menu',$moje_menu); // <- Zakładamy, że twój obiekt Smarty nazywa się $smarty
  3. ?>


index.tpl
  1. {$Menu}
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: 9.10.2025 - 22:33