2009-12-21 104 views
1

爲了讓自己的生活更輕鬆我想爲我的項目構建一個非常簡單的模板引擎。我想到的一點就是在一個目錄中有.html文件,當我想要它們時,這個目錄將被包含到使用PHP的頁面中。因此,一個典型的index.php是這樣的:包含模板文件和動態變化的變量

<?php 

IncludeHeader("This is the title of the page"); 
IncludeBody("This is some body content"); 
IncludeFooter(); 

?> 

沿着這些線路的東西,然後在我的模板文件,我想有:

<html> 
<head> 
    <title>{PAGE_TITLE}</title> 
</head> 
<body> 

但有一件事我不能工作,如何do獲取傳遞給函數的參數,並用它替換{PAGE_TITLE}

有沒有人有解決方案或者更好的方法來做到這一點?謝謝。

回答

0

最簡單的事情是這樣的:

<?php 
function IncludeHeader($title) 
{ 
    echo str_replace('{PAGE_TITLE}', $title, file_get_contents('header.html')); 
} 
?> 
0

正如你可能知道,PHP是,本身就是一個模板引擎。話雖如此,有幾個項目添加了您所描述的模板類型。你可能想要調查的是Smarty Templates。你可能也想看看article發佈在SitePoint一般描述模板引擎。

1

爲了保持簡單,爲什麼不使用.php文件和PHP短標籤而不是{PAGE_TITLE}或類似的東西?

<html> 
<head> 
    <title><?=$PAGE_TITLE?></title> 
</head> 
<body> 

然後,分離出可變空間,您可以創建工作的這樣的一個模板加載功能:

function load_template($path, $vars) { 
    extract($vars); 
    include($path); 
} 

其中$瓦爾是一個關聯數組鍵等於變量名和值等於變量值。

+0

@Gordon:http://www.mail-archive.com/[email protected]/msg41868。 html – Amber 2009-12-21 18:26:52

+0

有趣。不知道。感謝您的鏈接。 – Gordon 2009-12-21 18:52:00

1

爲什麼不使用php?

<html> 
<head> 
    <title><?=$pageTitle; ?></title> 
</head> 
<body> 
0

這是我見過的一些框架使用的伎倆:

// Your function call 
myTemplate('header', 
    array('pageTitle' => 'My Favorite Page', 
      'email' => '[email protected]', 
    ) 
); 

// the function 
function myTemplate($filename, $variables) { 
    extract($variables); 
    include($filename); 
} 

// the template: 
<html> 
<head> 
    <title><?=$pageTitle?></title> 
</head> 
<body> 
    Email me here<a href="mailto:<?=$email?>"><?=$email?></a> 
</body> 
</html>