Ik heb een template engine gemaakt (php).
En het werkt allemaal goed op mijn localhost (php windowsXP). Maar nu wil ik graag weten of het ook werkt op andere systemen, en of het php5-only is.
Dus ik wil het graag op verschillende systemen testen (php4, php5, linux, windows), om te kijken of het daar ook werkt.
En het kan natuurlijk ook dat er sowieso nog fouten in zitten, die op mijn pc ook fout gaan.
Het ondersteunt het volgende:
- Template-Compilatie naar php-code.
- Templates worden alleen gecompileerd als dat nodig is.
- Oneindig-geneste-dynamische-block-parsing.
- Controle voor verkeerd geneste/niet-gesloten blocks
- Variabelen.
- Constants.
- Oneindig diepe boomstructuren weergeven.
- PHP-code in templates wordt geblokkeerd.
- Nog meer, maar ben ik vergeten.
<?php
error_reporting(E_ALL);
include('includes/FTemplate.class.php');
# Create a new template-object
$tpl = new FTemplate('templates/Template.tpl', array('forcecompile' => true));
# Set the page-title
$tpl->assign('title', 'FTemplate');
# Set the image-dir
$tpl->assignConstant('ImageDir', '/images/');
# Create a new chapter
$tpl->newBlock('Chapter');
$tpl->assign('title', 'Chapter 1');
# Create a new paragraph in chapter 1
$tpl->newBlock('Paragraph');
$tpl->assign('title', 'Paragraph 1');
$tpl->assign('content', 'Lorem ipsum, dolor sit amet...');
# Create a new paragraph in chapter 1
$tpl->newBlock('Paragraph');
$tpl->assign('title', 'Paragraph 2');
$tpl->assign('content', 'Lorem ipsum, dolor sit amet...');
# Create a new chapter
$tpl->newBlock('Chapter');
$tpl->assign('title', 'Chapter 2');
# Create a new paragraph in chapter 2
$tpl->newBlock('Paragraph');
$tpl->assign('title', 'Paragraph 1');
$tpl->assign('content', 'Lorem ipsum, dolor sit amet...');
# Create a new paragraph in chapter 2
$tpl->newBlock('Paragraph');
$tpl->assign('title', 'Paragraph 2');
$tpl->assign('content', 'Lorem ipsum, dolor sit amet...');
# Create a new tree
$tree = new FT_Recurse();
# Create three nodes
$node1 = new FT_Node(array('title' => 'Node1'));
$node2 = new FT_Node(array('title' => 'Node2'));
$node3 = new FT_Node(array('title' => 'Node3'));
# Create three subnodes for node 1
$sub11 = new FT_Node(array('title' => 'SubNode1'));
$sub12 = new FT_Node(array('title' => 'SubNode2'));
$sub13 = new FT_Node(array('title' => 'SubNode3'));
# Create two subnodes for subnode 2
$sub121 = new FT_Node(array('title' => 'SubSubNode1'));
$sub122 = new FT_Node(array('title' => 'SubSubNode2'));
$sub123 = new FT_Node(array('title' => 'SubSubNode3'));
# Assign the subsubnodes to subnode 2
$sub12->addItem($sub121);
$sub12->addItem($sub122);
$sub12->addItem($sub123);
# Assign the subnode to node 1
$node1->addItem($sub11);
$node1->addItem($sub12);
$node1->addItem($sub13);
# Assign the nodes/subnodes to the tree
$tree->addItem($node1);
$tree->addItem($node2);
$tree->addItem($node3);
# Assign the tree to the template
$tpl->assignTree('Tree', $tree);
# Output the template
$tpl->PrintToScreen();
?>
moeten we gewoon dat script kopiëren en kijken of het werkt, of moeten we ook variaties gaan maken en uitproberenrnrnAls het alleen dat eerste is wil ik wel ff helpen. Heb een server met PHP 4.3.10, Apache 1.3.33 op FreeBSD 4.10.
[quote]Nee, de eigenlijke engine staat er niet bij, maar ik stuur je als je wilt een .zip dat je kunt uitpakken, uploaden, en dan index.php bekijken[quote] Dat snapte ik, vroeg me alleen of het alleen daarom ging of dat ik veel moest doen rnrn[quote]En als je variaties gaat proberen is dat natuurlijk nog veel beter[quote] Als ik zin heb misschien, maar ik heb nog meer te doen...rnrnEdit ok, ga ff proberen.
[code]$count = count($matches[0]);rnfor($i = 0; $i $count; $i++)rn{rn $replace[] = 'php @recurse($block[VARS][' . $matches[1][$i] . '], 'rn . recurse_arg($matches[2][$i]) . ', 'rn . recurse_arg($matches[5][$i]) . ', ' rn . recurse_arg($matches[3][$i]) . ', ' rn . recurse_arg($matches[4][$i]) . '); ';rn}rnrn$Template = str_replace($search, $replace, $Template);[code]rnrnhier krijg ik Undefined variable replace. Blijkbaar is count($matches[0]) 0, zodat de for niet uitgevoerd wordt. ff een $replace = array(); erboven en je bent klaar.rnrnVerder krijg ik deze meldingenrnrnEdit Sorry, lag aan mij. Het werkt nu wel, maar nog niet helemaal perfect Eerst krijg ik de imagedir, 2 chapters met 2 paragrafen en dan dit (uit de bron)rnrn[code][START RECURSE Tree]rnulrn[RECURSE START_ITEM]rn lirn h4Paragraph 2h4rn [RECURSE DEEPER_LEVEL]rn lirn[RECURSE END_ITEM]rnulrn[END RECURSE Tree][code]rnrnLijkt me niet helemaal de bedoeling... rnrnEr zit nog een typefoutje in TEM[b]LP[b]ATE (zie warnings hierboven).rnrnEdit2 zo'n recurse functie is helemaal geen gek idee trouwens. Ik gebruik zoiets nauwelijks, maar als je het een keer wilt gebruiken is het wel handig.rnJe kunt natuurlijk ook een workaround gebruiken als je een template engine zonder ondersteuning daarvoor hebt, maar het is een leuk idee (zelf bedacht).
ik wil het wel testen, op een configuratie naar keuze prnheb php4.1rn4.3rn5.0.3rnrnen zowel apache 1.3.33 als 2.0.5rnrndus ik kan alles testen rnrn[edit]rnheb wel geen zin om alles te copy pasten )
Bedankt!rnrn@numlockround rnrnDat recurse werkt dus niet... Krijg je errorsrnrnen staat ditrnrn[code]# Assign the nodessubnodes to the treern$tree-addItem($node1);rn$tree-addItem($node2);rn$tree-addItem($node3);rnrn# Assign the tree to the templatern$tpl-assignTree('Tree', $tree);[code]rnIn index.phprnrn[quote]Er zit nog een typefoutje in TEMLPATE (zie warnings hierboven).[quote] rnWelke zijn datrnrnIk zal zo ff een .zip online zetten, wil je die dan eens proberenrnrn[quote]maar het is een leuk idee (zelf bedacht).[quote]rnJa )rnrnEDITrnHet zip-bestandrnhttpmembers.lycos.nlleerphpfastFTemplate.ziprnrnEDIT2rnga naar deze urlrnhttpmembers.lycos.nlleerphpfastrnrnen klik dan ff op FTemplate.zip