pfftt...quote:Op woensdag 13 september 2006 11:57 schreef Giel83 het volgende:
[..]
Na je tweede if staat een ;
Waarschijnlijk ligt daar het probleem, want een unexpected T_ELSE is meestal het teveel hebben van een { } of een ;
XTemplate. Simpel, maar niet geheel featureloos. Precies wat je nodig hebtquote:Op woensdag 13 september 2006 09:35 schreef Swetsenegger het volgende:
Hoi, ik zoek een SIMPELE template parser.
Dus geen smarty met 600 opties die nooit gebruikt worden
ik geloof dat Roonaan ook een template-engina hed geschreven ooit..quote:Op woensdag 13 september 2006 10:36 schreef Swetsenegger het volgende:
[..]
De verborgen grondlijn van mijn verhaal is dat ik eigenlijk niet echt de toegevoegde waarde van een template parser zie omdat ik ze
a. nooit gebruikt heb
b. dus niet goed weet hoe ze toe te passen
c. ik geen zin heb me eerst dagen in template parser opties te verdiepen vooprdat ik er uberhaupt wat mee kan
Dus wilde ik om eens een test met een template parser te doen de meest simpele en uitgeklede vinden. Dat is waarschijnlijk ook op langere termijn meer dan genoeg voor mijn doeleinden.
Ik gebruik Smarty vooral om het feit dat ik dan echt púre PHP kan schrijven en me bezig kan houden met de logica achter m'n code, en de mogelijkheid om stukken template in andere templates te includenquote:Op woensdag 13 september 2006 14:25 schreef Swetsenegger het volgende:
Vooral het wisselen tussen layouts spreekt me aan.
Het zal vast, zoals gezegd heb ik nog geen flauw idee hoe je een template parser lekker toepast.quote:Op woensdag 13 september 2006 14:31 schreef JeRa het volgende:
[..]
Ik gebruik Smarty vooral om het feit dat ik dan echt púre PHP kan schrijven en me bezig kan houden met de logica achter m'n code, en de mogelijkheid om stukken template in andere templates te includen
Wat is daar de lol vanquote:Op woensdag 13 september 2006 14:49 schreef Darkomen het volgende:
Als je een beetje wilt leren hoe het leuk te te passen kan je eventueel kijken naar PHPBB.com
http://www.phpbb.com/kb/article.php?article_id=200
Ik ben bezig een site te bouwen die volledig via phpbb werkt, hun usertabellen, template system etc.
Om er wat van te lerenquote:Op woensdag 13 september 2006 15:00 schreef Darkomen het volgende:
Kwam zo goed uit voor die site.
Voordeel dat ik dus geen sessiemanagment en template parser hoef te bouwen.
Waarom zou ik een apart user systeem bouwen terwijl er toch al phpbb als forum gebruikt word?
Als je het eenmaal onder de knie hebt zul je niet snel terug gaanquote:Op woensdag 13 september 2006 14:34 schreef Swetsenegger het volgende:
[..]
Het zal vast, zoals gezegd heb ik nog geen flauw idee hoe je een template parser lekker toepast.
Maakt ook niet uit hoor.quote:Op woensdag 13 september 2006 15:15 schreef Darkomen het volgende:
Oww maar dat is geen probleem, een user en sessie management heb ik al eens gebouwtDat is de eerste versie van de site
vol dubbel overbodig werk dus
Een template systeem heb ik dan nog wel niet gebouwt, maar ach kan niet alles te gelijk leren.
Er moet nu eerst een goede werkende site komen
Een paar keer. Tegenwoordig gebruik ik die nauwelijks meer.quote:Op woensdag 13 september 2006 12:50 schreef qu63 het volgende:
[..]
ik geloof dat Roonaan ook een template-engina hed geschreven ooit..
Je gebruikt uberhaupt geen template engine of je eigen template engine niet meer?quote:Op woensdag 13 september 2006 16:12 schreef Roönaän het volgende:
[..]
Een paar keer. Tegenwoordig gebruik ik die nauwelijks meer.
-r-
Beide :-)quote:Op woensdag 13 september 2006 16:22 schreef Swetsenegger het volgende:
[..]
Je gebruikt uberhaupt geen template engine of je eigen template engine niet meer?
kwam 'm tegen op phpfreakz
PHP is de allersnelste parser die je hebt. Voor de rest kan je templates en skinkeuze eenvoudig aansturen via een directory settng of bijvoorbeeld stream wrappers.quote:Op woensdag 13 september 2006 17:27 schreef Swetsenegger het volgende:
templates zonder engine. Leg eens uit? Je moet die templates toch parsen?
Misschien kun je ook eens kijken naar een MVC-framework voor PHP, zoals bijvoorbeeld Code Igniter. Gaat PHP'en en het scheiden van logica en presentatie toch nog ergens op lijkenquote:Op woensdag 13 september 2006 10:36 schreef Swetsenegger het volgende:
Dus wilde ik om eens een test met een template parser te doen de meest simpele en uitgeklede vinden. Dat is waarschijnlijk ook op langere termijn meer dan genoeg voor mijn doeleinden.
kan je een eenvoudig voorbeeld geven in code?quote:Op woensdag 13 september 2006 17:36 schreef Roönaän het volgende:
[..]
PHP is de allersnelste parser die je hebt. Voor de rest kan je templates en skinkeuze eenvoudig aansturen via een directory settng of bijvoorbeeld stream wrappers.
Het messaging systeem heeft bijvoorbeeld include 'theme://content.inbox.panel.php'; De streamwrapper vogelt vervolgens wel uit welke filesystem file daar bij hoort.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | class ThemeStream { var $theme_path; var $default_theme_path; var $vardata; var $position; function stream_open($path, $mode, $options, &$opened_path) { if(!preg_match('/^r[bt]?$/', $mode)) { trigger_error('Libraries can be opened for reading only', E_USER_NOTICE); return false; } $this->default_theme_path = DIR_DEFAULT_THEME.'/'.substr($path,8); if(defined('USER_THEME')) { $this->theme_path = DIR_THEMES.'/'.USER_THEME.'/'.substr($path,8); } else { $this->theme_path = $this->default_theme_path; } if(false && defined('SESSION_USER') && SESSION_USER == 11753) { echo '<p>'.$this->theme_path; echo '<br/>'.$this->default_theme_path; echo '</p>'; } if(is_file($this->theme_path)) { $this->vardata = file_get_contents($this->theme_path); } elseif(is_file($this->default_theme_path)) { $this->vardata = file_get_contents($this->default_theme_path); } else { $this->vardata = 'Theme-file not found('.$this->default_theme_path.')'; } $this->position = 0; return true; } function stream_stat() { return array('size' => strlen($this->vardata)); } function stream_read($count) { $ret = substr($this->vardata, $this->position, $count); $this->position += strlen($ret); return $ret; } function stream_write($data) { $left = substr($this->vardata, 0, $this->position); $right = substr($this->vardata, $this->position + strlen($data)); $this->vardata = $left . $data . $right; $this->position += strlen($data); return strlen($data); } function stream_tell() { return $this->position; } function stream_eof() { return $this->position >= strlen($this->vardata); } function stream_seek($offset, $whence) { switch ($whence) { case SEEK_SET: if ($offset < strlen($this->vardata) && $offset >= 0) { $this->position = $offset; return true; } else { return false; } break; case SEEK_CUR: if ($offset >= 0) { $this->position += $offset; return true; } else { return false; } break; case SEEK_END: if (strlen($this->vardata) + $offset >= 0) { $this->position = strlen($this->vardata) + $offset; return true; } else { return false; } break; default: return false; } } } ?> |
1 2 3 4 5 6 7 | php stream_wrapper_register("theme", "ThemeStream") or die("Failed to register theme protocol"); } ?> |
1 2 3 4 5 6 7 | /default/page.normal.php /default/content.article.php /wml/page.normal.php /wml/content.article.php /pda/page.normal.php /pda/content.article.php |
1 2 3 4 5 6 | php include 'config.php'; $article = 'tekst uit de database'; include 'theme://content.article.php'; ?> |
1 2 3 4 5 6 7 | php ob_start(); echo '<div id="article">'.$article.'</div>';; $content = ob_get_clean(); include 'theme://page.normal.php'; ?> |
1 2 3 4 5 6 7 8 9 10 | php define('DIR_THEMES', '/var/www/templates'); define('DIR_DEFAULT_THEME', '/var/www/templates/default'); if($_SESSION['skin'] == 'pda') { define('USER_THEME', 'pda'); } else { define('USER_THEME', 'default'); } ?> |
Heel interessant, bedankt.quote:Op woensdag 13 september 2006 19:42 schreef Roönaän het volgende:
In principe heb je een class:
[ code verwijderd ]
Die kan je met stream_wrapper_register verbinden met theme://
[ code verwijderd ]
Dit bovenstaande doe je in een aparte file, lets say "streamwrapper.php";
Vervolgens pak je een directory structuur:
Hierin heb je voor de verschillende skins/themes, 2 template files.
[ code verwijderd ]
Nu heb je een article.php die wat content uitleest uit een db, dit in een article-layout past. De article layout doet zijn ding, en roept vervolgens de website template aan met de headers/footer/menu, etc, je kent het wel.
In principe ziet article.php er zo uit:
[ code verwijderd ]
En de template als volgt:
[ code verwijderd ]
En door het consequente gebruik van theme:// hoef je je nergens meer om directories zorgen te maken, dat doet de streamwrapper voor je.
Je config.php bevat vervolgens de code om aan te geven in welke layout/directory de templates moeten worden gezocht:
[ code verwijderd ]
Dit laatste is relatief eenvoudig aan je user management en user preferences te verbinden.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |