参考链接:http://hi.baidu.com/bdusnb/item/289d160e6a9c92cd9157183d
参考链接:http://hi.baidu.com/mayimu789/item/b565088d047da0d05f0ec16f
参考链接:http://blog.sina.com.cn/s/blog_8155e74d0101el2k.html
Smarty 3 :大括号问题
smarty如何避免大括号、超链接如何去掉下划线
本文向大家描述一下避免Smarty与CSS语法冲突的三种方法,Smarty和CSS的语法存在冲突,因为二者都需要使用大括号{}。如果简单地将CSS标记嵌入到HTML文档首部,将导致"不可识别标记"错误。
避免Smarty与CSS语法冲突
熟悉CSS的人很快就会发现Smarty和CSS的语法存在冲突,因为二者都需要使用大括号{}。如果简单地将CSS标记嵌入到HTML文档首部,将导致"不可识别标记"错误:
<html><head><title>{$title}</title><style type="text/css">p{ margin::2px } </style></head>...
不要担心,因为我们有3种解决方案。
一、使用link标记从另一个文件中提取样式信息:
<html><head><title>{$title}</title><link rel="stylesheet" type="text/css" href="default.css"/></head>...
二、使用Smarty的literal标记将样式表信息包围起来
这些标记告诉Smarty不要解析该标记内的任何内容:
<html><head><title>{$title}</title>
{literal} <style type="text/css">p{ margin::2px } </style>
{/literal} </head>...
三、修改Smarty的默认定界符
可以通过设置center_delimiter和center_delimiter属性来做到这一点:
<?php
require("Smarty.class.php");
$smarty=newSmarty;
$smarty->left_delimiter='';
$smarty->right_delimiter='';...
?>
虽然3种解决方案都能解决问题,但其中第一种可能是最方便的,因为将CSS放在单独的文件中是一种常见的实践做法。此外,这种解决方案不需要修改Smarty的重要默认配置(定界符)。
超链接如何去掉下划线
在源代码中的<HEAD>…</HEAD>之间输入如下代码:
<style type="text/css">
<!--
a { text-decoration: none}
-->
</style>
或者直接加入超链接中:
<a style= "text-decoration:none " href=#> fason </a>
Smarty 3 :计算数组个数问题
分配了一个数组array给Smarty,假设Smarty的分界符为'{' 和'}'。
在很多资料上都看到,在Smarty中要求数组的长度时,可以用在数组后便 加|count的方法调用。
即通过{array|count}获得array的长度。
但是今天在写模板时,发现这样得不到数组的长度,而只是得到一个返回 的字符串Array。
也就是说仅仅是返回了{array}的结果,而没有返回其array的长度。
查看smarty\plugins文件夹,发现并没有count的相关方法,也就是说,count是直接调用了php中的方法。
后来通过网络上的资料,发现可以在count前面加@,从而正确的获取数组的长度。
再进一步查看Smarty的源码,发现Smarty对属性调节器后边的方法名进行处理时,会对前边加@的进行特殊处理。
因此作出判断:
在Smarty中的属性调节器中调用php中定义好的函数时,可以通过加@来表示。
1、对类型为数组的方法进行测试时,发现不加@符号都会出错。
比如:要对一个数组调用count方法求出数组的长度,就可以这样调用{array|@count},而要对数组调用end方法得出数组的最后一组数据时,则可以通过{array|@end}。
2、在对字符串的相关函数进行测试,发现加不加@都可以正常的调用。
3、其他的尚未认真测试。
对于在smarty中调用复杂的php函数不予鼓励,因为Smarty的本意就是要实现代码和模板分离,应该认定模板就是界面设计的人员用的,如果过多地加复杂逻辑,对他们来说就是一种折磨了。www.relaxcool.com/
Smarty 3 :字符串拼接
PHP页面传到Smarty模板上的变量(这里用,在Smarty上创建两个变量代替)
{assign var="name" value='Richard.Lee'}
{assign var="age" value='27'}
1、想要在Smarty模板的某个位置输出(Richard.Lee---27)
2、想要在Smarty模板的某个位置输出(姓名:Richard.Lee,年龄:27)
备注:在网上找到的方法,不是很理解|cat:的作用,但是经过两个简单的例子得出简单结论:可以把|cat:当成是链接字符串的符号,相当于PHP文件中的点(.)。