PHP 编程/Smarty 模板系统/简单教程
外观
< PHP 编程 | Smarty 模板系统
- 在你的 Web 服务器上创建一个名为 Website 的目录。
- 将 Smarty 的 libs 目录复制到安装目录中。
- 创建一个名为 compile 的目录。
- 创建一个名为 templates 的目录。
- 在 Website 目录中,创建一个名为 index.php 和 Web.class.php 的文件。确保它们为空。
- Web.class.php 应该像这样
<?php class Web { function db_connect($db_host,$db_user,$db_pass,$db_db) { $this->link=@mysql_connect($db_host,$db_user,$db_pass) or die("Can't connect to database"); @mysql_select_db($this->link,$db_db) or die("Connected, but can't select the database"); } function db_query($sql) { return @mysql_query($this->link,$sql); } function db_close() { mysql_close($this->link); } } ?>
- index.php 应该像这样
<?php error_reporting(E_ALL); $db=array("host"=>"localhost","user"=>"root","pass"=>"","db"=>"database"); $tables['content']="test_content"; require_once("Web.class.php"); $web=new Web(); $web->db_connect($db['host'],$db['user'],$db['pass'],$db['db']); require_once("libs/Smarty.inc.php"); $smarty=new Smarty(); $smarty->template_dir="template"; $smarty->compile_dir="compile"; if ( isset($_GET['content_id']) && is_numeric($_GET['content_id']) ) { $sql="SELECT * FROM {$tables['content']} WHERE content_id = '{$_GET['content_id']}' LIMIT 1"; $result=$web->db_query($sql); $rows=array(); while ( $row=mysql_fetch_assoc($result) ) { $rows[]=$row; } if ( count($rows) == 1 ) { $smarty->assign("content_found",true); $smarty->assign("content_content",$rows['0']); } else { $smarty->assign("content_found",false); } $smarty->assign("section","content"); } else { $sql="SELECT content_title,content_date,content_position,content_id FROM {$tables['content']} ORDER by content_position asc"; $result=$web->db_query($sql); $rows=array(); while ( $row=mysql_fetch_assoc($result) ) { $rows[]=$row; } $smarty->assign("section","home"); $smarty->assign("content_content",$rows); } $smarty->display("index.tpl"); $web->db_close(); ?>
- 转到 templates 目录
- 创建一个名为 index.tpl 的新文件,确保它为空
- 创建你自己的 html 设计或任何东西,并在中间(你想放置内容的地方),写下这些
{if $section == "home"} <ul> {foreach from="content_content" item="content_item"} <li><a href="./?content_id={$content_item.content_id}">{$content_item.content_title}</a></li> {/foreach} </ul> {elseif $section == "content"} <div><h1>{$content_content.content_title}</h1></div> <div>{$content_content.content_content}</div> {else} Sorry, there is no such page here! {/if}
- 创建一个新的 MySQL 表,包含以下信息
TABLE NAME: test_content PRIMARY KEY: content_id content_id: INTEGER, EXTRA - AUTO_INCREASE content_title: VARCHAR(255) content_date: DATETIME content_content: TEXT content_position: INTEGER
- 根据需要修改你的 index.php 和 index.tpl(注意 index.php 中的 $db,将其更改为你的设置!
- 现在,使用你的 MySQL 客户端(phpMyAdmin[1]/MySQL[2] 或其他工具),在你的表中添加新行,包括内容和标题。一开始尝试添加三行。
- 现在,通过你的 Web 浏览器访问你的 Website 目录(你可能需要将它上传到你的 Web 服务器或在你的电脑上设置一个服务器) ;)
如果你遇到任何问题,请在 IRC irc://irc.freenode.org/php 上提问或联系我。我还没有测试过这个脚本,所以你可能会发现一些小错误。
- 对于 MySQL 的后续版本,请使用以下代码
CREATE TABLE `test_content` ( `content_id` INT(11) NOT NULL AUTO_INCREMENT, `content_title` VARCHAR(255) NOT NULL, `content_date` DATETIME NOT NULL, `content_content` TEXT NOT NULL, `content_position` INT(11) NOT NULL, PRIMARY KEY (`content_id`) ) TYPE = myisam;