|
|
|
|
|
|
|
|
forum.webPC.pl
|
|
|
 |
Rejestracja ::
Zaloguj
|
Zaloguj się, by sprawdzić wiadomości
|
|
 |
|
Parser szablonów |
> Zobacz poprzedni temat :: Zobacz następny temat --> |
Autor |
Wiadomość
|
Qba_23 |
Wysłany: Pon Gru 31, 2007 9:25 pm Temat postu: Parser szablonów |
|
|
Nowy
Dołączył: 19 Gru 2007 Posty: 2
|
Mam parser szablonów znaleziony na necie:
Kod: |
<?php
class Templates
{
var $unparsed = array ();
var $parsed = array ();
var $blocks = array();
var $last_loaded;
function load($plik)
{
if($plik == $last_loaded)
{
$this->unparsed[] = end($this->unparsed);
}
elseif(file_exists(F_TPL.$plik.'.tpl'))
{
$file = @fopen(F_TPL.$plik.'.tpl',r);
flock($file, 2);
$this -> unparsed[] = fread($file,filesize(F_TPL.$plik.'.tpl'));
flock($file, 3);
$this->last_loaded = $plik;
}
else
echo 'Plik ' .$plik. ' nie istnieje.';
} #end function load()
function parse()
{
$i=0;
foreach ($this->unparsed as $template)
{
$found = array();
if(preg_match_all("#\{(.+?)\}#is", $template, $found))
{
foreach($found[1] as $block)
{
$block_name = '{'.$block.'}';
$block_values = $this -> blocks[$i][$block];
$template = str_replace($block_name, $block_values, $template);
}
}
$this -> parsed[] = $template;
$i++;
}
} #end function parse()
function show_result($which="all",$to=0)
{
if($which >= 0 && $to >= 0 && $to <= count($this->parsed) && $which != 'all')
{
if($which < $to)
{
while($which <= $to)
{
echo $this->parsed[$which];
$which++;
}
}
else
{
while($which >= $to)
{
echo $this->parsed[$which];
$which--;
}
}
}
elseif($which != 'all')
{
echo $this->parsed[2];
}
else
{
foreach($this->parsed as $parsed)
{
echo $parsed;
}
}
} #end function show_result()
} #end class Templates
define('F_TPL','templates/');
?> |
A potem mam index.php, który wygląda tak(fragment, ale więcej nie trzeba)
Kod: |
include('parser.PHP');
$templates = new Templates;
$templates->load('header');
$templates->blocks[] = array ('LOGO' => $logo, 'INFO' => $informacja, 'NICK' => $_SESSION['user']);
$templates->load('menu_lewe');
$templates->blocks[] = array ('GLOWNA' => $glowna, 'REJESTR' => $rejestracja, 'LOGOWANIE' => $logowanie, 'KONTAKT' => $menu_lewe['kontakt'], 'USERS' => $menu_lewe['users'], 'ONLY_ADMIN' => $only_admin);
$templates->parse();
$templates->show_result(); |
Potem w pliku index.tpl do konretnej komórki w tabeli chcę zaincludować stronę pobraną za pomocą funkcji $_GET, do czego miała służyć ta funkcja:
Kod: |
function wczytaj(){
$glowna = 'page/glowna.php'; //lokalizacja strony głównej
$str = $_GET['str'];
if(!empty($str)) {
if(is_file("page/".$str.".php")) include 'page/'.$str.'.php';
elseif(is_file("page/".$str.".html")) include 'page/'.$str.'.html';
else echo "Nie ma takiej strony";
}
else include($glowna);
} |
chciałem funkcję przypisać do zmiennej 'LOAD' w taki sposób:
Kod: |
$templates->blocks[] = array('LOAD' => wczytaj()) |
no i tu pojawia sie problem, bo funkcja wykonuje się poprawnie, ale strona includuje się na samej górze, a nie w komórce tabeli, w której znajduje się {LOAD} :/ Czy jest jakiś inny sposób na zapisanie funkcji, niekoniecznie w ten sam sposób, ale żeby działała na tej samej zasadzie? Proszę o szybką odpowiedź, z góry dzięki  |
|
Powrót do góry |
|
 |
guitarnet_pl |
Wysłany: Sro Kwi 09, 2008 2:10 am Temat postu: |
|
|
Nieśmiały
Dołączył: 09 Kwi 2008 Posty: 7
|
|
Powrót do góry |
|
 |
|
|
 |
|
Strona 1 z 1 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|
|