跳转到内容

PHP 编程/Smarty 模板系统/简单教程

来自维基教科书,开放的书籍,开放的世界
  1. 在你的 Web 服务器上创建一个名为 Website 的目录。
  2. 将 Smarty 的 libs 目录复制到安装目录中。
  3. 创建一个名为 compile 的目录。
  4. 创建一个名为 templates 的目录。
  5. Website 目录中,创建一个名为 index.phpWeb.class.php 的文件。确保它们为空。
  6. 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);
      }
     }
     ?>
    
  7. 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();
     ?>
    
  8. 转到 templates 目录
  9. 创建一个名为 index.tpl 的新文件,确保它为空
  10. 创建你自己的 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}
    
  11. 创建一个新的 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
    
  12. 根据需要修改你的 index.phpindex.tpl(注意 index.php 中的 $db,将其更改为你的设置!
  13. 现在,使用你的 MySQL 客户端(phpMyAdmin[1]/MySQL[2] 或其他工具),在你的表中添加新行,包括内容和标题。一开始尝试添加三行。
  14. 现在,通过你的 Web 浏览器访问你的 Website 目录(你可能需要将它上传到你的 Web 服务器或在你的电脑上设置一个服务器) ;)

如果你遇到任何问题,请在 IRC irc://irc.freenode.org/php 上提问或联系我。我还没有测试过这个脚本,所以你可能会发现一些小错误。

  1. 对于 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;
    

参考文献

[编辑 | 编辑源代码]


华夏公益教科书