Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Własny system template'ów, zagnieżdżenie
Forum PHP.pl > Forum > PHP
zaksmok
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ę...
Kicok
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.
rzymek01
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. }
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.