smarty之一实验(smarty快速入门)

 

准备工作:到Smarty的官方网站下载最新的Smarty套件: http://smarty.php.net
解开 Smarty 2.6.0 后,会看到很多档案,其中有个 libs 资料夹。在 libs 中应该会有 3 个 class.php 檔 + 1 个 debug.tpl + 1 个 plugin 资料夹 + 1 个 core 资料夹。然后直接将 libs 复制到您的程序主资料夹下,再更名为 class 就可以了。就这样?没错!这种安装法比较简单,适合一般没有自己主机的使用者。

一、一、 建立网站目录
(设置DW的编码为UTF-8)
1、在我的电脑中新建文件夹smartynews,并把老师供的HTML文件夹中的所有文件复制到其中。Web共享smartynews文件夹。
2、 安装smarty:
(1)解压Smarty-2.6.18.tar.tar文件,并找到里面的libs文件夹,在smartynews文件夹中新建includes文件夹(注:该文件夹专门存入外部类、函数、自定义的函数),然后复制libs文件夹到includes中,然后重命名libs为smarty(该文件夹中的文件就是smarty技术中用到的主要文件)。
(2) 采用DW新建一个php文件,把里面的HTML标签删除,并编写如下的代码:
<?php
require_once('smarty/smarty.class.php');
$smarty=new Smarty;
$smarty->template_dir='templates';
$smarty->cache_dir='caches';
$smarty->compile_dir='compiled';
?>
然后命名为init.php并保存到smartynews文件夹中。(因为每一次要用到smarty时,都要设置这些参数,因此,把这些设置代码写成一个文件,要需要smarty时导入,达到重用。)
注:该文件主要导入smarty类,并配置smarty的模板的文件夹、缓存以及编译文件夹。
(3)在smartynews中新建templates文件夹(注:该文件夹存放网站的HTML文件,以作为模板之用。),在smartynews文件夹中再新建caches文件夹以及compiled文件夹。(caches存放smarty的缓存文件,compiled存放smarty编译的文件)
以此,完成smarty的安装。

二,数据库
采用mysql数据库,创建一个数据库nhnews,(注意设置它的编码为utf8_general_ci)
============================
表名 News(新闻信息表)
列名        数据类型         说明
Nid             Int            主键(自增)
Ntitle   Varchar(255)    标题(非空)
Ncontent    text            新闻内容
Ndate      datetime        发布时间
Nflag        bool            是否设置成flash展示
===========================
表名     Flash(flash展示信息表)
列名             数据类型                 说明
fid Int         主键                      (自增)
ftitle Varchar(255) flash标题(非空)
Fnid              Int                        新闻ID号
Fpath Varchar(100) Flash图片路径
forder           int                        排序位置
==============================
表名           Admin(管理员信息表)
列名             数据类型              说明
aid               Int 主键            (自增)
aname        Varchar(50)        账号
apwd          Varchar(40)        密码
===========================
三,设计HTML文件(即模板文件)
打开index.html和news.html页面,假设我们的HTML页面已经设计好。看看每个页面的内容。
然后把index.html和news.html文件移到templates文件夹中。(然后再打开页面,看看,是不是没有样式了,想一想为什么?这是正常的现象。)

四、编写PHP代码
1、采用DW编写连接服务器并选择数据库的文件connectdb.php。如下:
<?php
if(!mysql_connect("localhost","root","")){
  exit('连接数据库失败!');
}
if(!mysql_select_db("nhnews")){
exit('选择数据库失败!');
}
mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=utf8");
?>
保存到includes文件夹中。

2、制作新闻内容显示页面
(1)制作模板标签:
修改news.html页面,添加Smarty标签。
找到对应的标签:
修改成:
<div id="main">
  <h3 class="newstitle">{$ntitle}</h3>
  <h4 class="newsdate">日期:{$ndate}</h4>
  <div class="content">
  {$ncontent}
  </div>
</div>
其中{}中的名称可以自己定.

(2) 编写PHP代码:
采用DW新建一个news.php文件,删除里面的所有html标签。并输入
<?php
?>
在上面的标签中导入init.php和connectdb.php文件:
提示:采用require_once( );
注:采用include_once或者require_once可以避免出现多次导入一个文件。
编写从数据库获取新闻数据的代码:(自己先编写,不懂再看下面的代码,如果是复制,请注意标点符号)
$nid=$_GET['nid'];
$selectSQL='select * from news where nid='.$nid;
$result=mysql_query($selectSQL);
$row=mysql_fetch_assoc($result);
$smarty->assign('ntitle',____________);
$smarty->assign('ncontent',___________);
$smarty->assign('ndate',_____________);
$smarty->display(‘_________________’);
答案:$row['ntitle'], $row['ncontent'], $row['ndate'],news.html

(3)采用数组方式进行替换
修改news.htm文件中的标签如下:
<div id="main">
  <h3 class="newstitle">{$news.ntitle}</h3>
  <h4 class="newsdate">日期:{$news.ndate}</h4>
  <div class="content">
  {$news.ncontent}
  </div>
</div>
注意:$news可以随便命名,但它后面的属性名称却有一定的讲究(要跟数据库中对应的字段名称一致)。

Show.php文件代码修改成如下:
$nid=$_GET['nid'];
$selectSQL='select * from news where nid='.$nid;
$result=mysql_query($selectSQL);
$row=mysql_fetch_assoc($result);
$smarty->assign('news',$row);
$smarty->display('news.htm');
进行测试,并比较两种做法在代码的写法上有什么不同?那种写法比较好?

3、 制作显示新闻列表
(1) 制作模板标签
修改index.htm文件,把下面的内容:
<ul>
<li class="odd"><a href="#">“人生规划与成功励志”讲座在我院取得圆满成功</a></li>
<li class="even"><a href="#">“人生规划与成功励志”讲座在我院取得圆满成功</a></li>
<li class="odd"><a href="#">“人生规划与成功励志”讲座在我院取得圆满成功</a></li>
<li class="even"><a href="#">“人生规划与成功励志”讲座在我院取得圆满成功</a></li>
</ul>
修改成:
<ul>
{foreach from=$newslist item=news}
    <li class="odd"><a href="news.php?nid={$news.nid}">{$news.ntitle}</a></li>
{/foreach}
</ul>

(2)编写index.php代码:
新建一个PHP文件,删除HTML标签,并编写如下的代码:
<?php
导入init.php;
导入connectdb.php;
(查询news表,显示nid,ntitle,ndate字段,并以ndate降升的方式显示。)
$selectSQL=’select _____________________________ from news ________________’;
$result=mysql_query($selectSQL);
$newslist=array();
while($news=mysql_fetch_assoc($result))
{
   $newslist[]=$news;
}
$smarty->assign('newslist',$newslist);
$smarty->display('index.htm');
?>

(1)       (3)应用cycle功能
修改<li class="odd"><a href="news.php?nid={$news.nid}">{$news.ntitle}</a></li>
为:
<li class="{cycle values="odd,even"}"><a href="news.php?nid={$news.nid}">{$news.ntitle}</a></li>

在index.htm中的<head></head>中添加如下的代码:
<script language="JavaScript">
function show()
{
   alert("如何在模板中编写js函数或CSS代码呢?采用:literal");
}
</script>
把上面的函数放到{literal}{/literal}间,修改如下:
<script language="JavaScript">
{literal}
function show()
{
   alert("如何在模板中编写js函数或CSS代码呢?采用:literal");
}
{/literal}
</script>

4、分离网页的共同部分
(1)、分离头部和底部
打开index.html和news.html文件,复制其中的一个文件的头部,代码如下:
<div id="header">
……
</div>
保存为header.htlm文件。然后删除index.html和news.html文件中对应的代码内容,然后在对应的位置导入header.html:
{include file='header.html'}
同样,分离网页的底部,并导入。

我会继续发布smarty的练习...第一章练习先就这样先等smarty练习做完之后我在发布一个用mvc+smarty结合的项目跟大家学习交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值