Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Własny system template'ów, zagnieżdżenie
zaksmok
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 12.01.2006

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


Witam, mam sobie własny system szablonów, podobny troszkę do SMARTY. Napisałem sobie funkcję do podmieniania zawartości w zależności od wartości zmiennej.

A konkretnie szablon wygląda tak:
  1. {SESSION:LOGGED=1}Jesteś zalogowany{/SESSION}
  2. {SESSION:LOGGED=0}Jesteś niezalogowany{/SESSION}

i wszystko pięknie działa, ale problem pojawił się gdy musiałem zagnieżdzić jeden warunek w drugim
  1. {SESSION:COOKIE=1}
  2. {SESSION:LOGGED=1}Jesteś zalogowany{/SESSION}
  3. {SESSION:LOGGED=0}Jesteś niezalogowany{/SESSION}
  4. {/SESSION}

Musiałbym skorzystać tutaj z rekurencji funkcji... Czy to jedyne rozwiązanie? I w jaki sposób rozpoznować bloki?
Poprzednio
  1. <?php
  2. preg_match_all("|{SESSION:(.*)=(.*)}(.*){/SESSION}|Us", $template, $wyjście);
  3. ?>

załatwiało sprawę...

Ten post edytował zaksmok 14.08.2008, 14:37:09
Go to the top of the page
+Quote Post
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


preg_replace_callback" title="Zobacz w manualu PHP" target="_manual
Cytat
Example #3 preg_replace_callback() using recursive structure to handle encapsulated BB code


Tylko nie wiem czy uda się to wyrażenie przetransportować do preg_match_all - spróbuj.


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
rzymek01
post
Post #3





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


możesz uzyc zwykłego preg_replace i każde {SESSION:cos} zamieniac w IFa (czyli tworzysz kod php z template i potem go includujesz) i by wyszlo coś takiego:
  1. if ($_SESSION['COOKIE'] == 1)
  2. {
  3. if ($_SESSION['LOGGED'] == 1)
  4. {
  5. ?>Jesteś zalogowany<?php
  6. }
  7. else // lub if ble ble == 0
  8. {
  9. ?>Jesteś niezalogowany<?php
  10. }
  11. }


--------------------
:]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:00