Detta har inget med OOP att göra, men varför uppfinner du hjulet igen när det kommer till templating? Har du kollat på lösningar som t.ex Smarty?
Trådstart#1
Hade tänkt att testa på lite OOP. Har kommit så här långt
Grundkoden på sidan
<?php
/// global function
function parseFile($tpl)
{
ob_start();
include($tpl);
$content=ob_get_contents();
ob_end_clean();
return $content;
}
// Prints global header
class tpl_GlobalHeader {
var $output;
function tpl_GlobalHeader($tpl)
{
$this->output=file_get_contents($tpl) or die('Error: Template file '.$tpl.' not found');
}
function parseTemplate($lang=array())
{
if(count($lang)>0)
{
foreach($lang as $text=>$data)
{
$data=(file_exists($data))?$this->parseFile($data):$data;
$this->output=str_replace('|'.$text.'|',$data,$this->output);
}
}
else {die('Error: No language defined');}
}
function display_tpl()
{
return $this->output;
}
}
// Javascripts
class Begin_Print_JavaScript {
var $JS_output;
function Begin_Print_JavaScript($JS_tpl)
{
$JS_part = explode('/*', file_get_contents($JS_tpl));
$JS_section = explode('>', $JS_part[1]);
$this->JS_output .= $JS_part[0].'/*'; // Beginning of HTML-JavaScript
$this->JS_output .= $JS_section[0]; // Defining languge in JS functions
foreach($JS_section as $html_JS)
{
if(preg_match("/".$_GET['page_id']."/i", $html_JS) == true)
{
$this->JS_output .=$html_JS;
}
}
$this->JS_output .= '/*'.$JS_part[2]; // End of HTML-Javascript
}
function display_final_JS()
{
$JS_begin = "\t<script src=\"/js/";
$JS_end = ".js\" type=\"text/javascript\" />\n";
if($_GET['page_id'] == 'register') {$this->JS_output .= $JS_begin.'CheckForm'.$JS_end;}
if($_GET['page_id'] == 'register') {$this->JS_output .= $JS_begin.'HexIt'.$JS_end;}
if($_GET['page_id'] == 'test') {$this->JS_output .= $JS_begin.'TestIt'.$JS_end;}
return $this->JS_output;
}
}
/////////////////////////////////////////////// END //////////////////
require $_GET['lang'].".php";
// BEGIN HEADER
$tp=&new tpl_GlobalHeader('sidan.tpl');
$tp->parseTemplate($lang);
echo $tp->display_tpl();
// PRINT JAVASCRIPTS
$js=&new Begin_Print_JavaScript('Javascript.tpl');
echo $js->display_final_JS();
?>
De två templatefilerna
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>|title|</title>
<!-- META -->
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="distribution" content="global" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="robots" content="index, follow" />
<meta name="description" content="|meta-desc|" />
<meta name="keywords" content="|meta-keyw|" />
<meta http-equiv="content-language" content="|language|" />
<link rel="icon" href="img/favicon.ico" type="img-x/ico" />
<link rel="stylesheet" href="css/main.css" type="text/css" />
<link rel="stylesheet" href="css/|language|.css" type="text/css" />
<script src="/js/beta.js" type="text/javascript"></script>
<script type="text/javascript">
/* <![CDATA[ */
var Lang = 'sv';
>//register
var reg;
>//test
var test;
/* ]]> */
</script>
Språkfilen
<?php
$lang['title'] ='titel';
$lang['meta-desc'] ='Meta descriptio';
$lang['meta-keyw'] ='Nyckelord';
$lang['language'] ='sv';
$lang['text'] = 'HEj hej hemskt mycket hej';
?>
Jag gillar separeringen mellan de olika kodspråken men jag vet inte om det här egentligen är helt onödigt, lite overkill kanske. Det kommer som sagt finnas en del javascript i html-koden som ger olika kommentarer som hämtas från språkfilen
Någon som kanse har nåt tips att ge Allt fungerar som sagt men kanske man kunde få lite råd nu när man försöker lära sig att tänka på det här sättet