Smarty模板变量操作符介绍

capitalize [首字母大写],示例:{$smarty.get.name|capitalize}

count_characters [计算字符数],示例:{$smarty.get.name|count_characters}

cat [连接字符串],示例:{$smarty.get.name|cat:’welcome to www.wuzhenjie.com’},连接两个变量如:{$smarty.get.name|cat:$smarty.get.password}

count_paragraphs [计算段落数],示例:{$smarty.get.name|count_characters}

count_sentences [计算句数],示例:{$smarty.get.name|count_sentences}

count_words [计算词数],示例:{$smarty.get.name|count_words}

date_format [时间格式],示例:{$smarty.server.request_time|date_format:”%Y-%m-%d %H:%M:%S”}或者{$smarty.now|date_format:”%Y-%m-%d %H:%M:%S”},显示格式如:2012-7-31 11:01:21

default [默认],示例:{$smarty.get.name|default:’wuzhenjie.com’},意思是当没有接受到name参数或者接收到的name参数值为空的时候,使用wuzhenjie.com代替这个值。

escape [转码],示例:{$smarty.get.name|escape:’url’} ?

indent [缩进],示例:{$smarty.get.name|indent:10:’ ‘},段落首行缩进,这里示例是缩进了十个空格表示的字符。作用类似于css里面的text-indent。

lower [小写],示例:{$smarty.get.name|lower}

upper [大写],示例:{$smarty.get.name|upper}

nl2br [将变量中的\n(换行符)替换成
],示例:{$smarty.get.name|nl2br}

regex_replace [正则替换],示例:{$smarty.get.name|replace:”/[\r\t\n]/”:”wuzhenjie.com”},将变量中的符合正则的内容替换成指定内容

replace [替换],示例:{$smarty.get.name|replace:”baidu.com”:”wuzhenjie.com”},将变量中要求的内容替换成指定内容,示例的意思是将变量中所有baidu.com替换为wuzhenjie.com。

spacify [插空],示例:{$smarty.get.name|spacify:”^^”},将变量字符与字符之间插入指定内容,包括空格。

string_format [字符串格式化],示例:{$smarty.get.namestring_format:”%d”},该操作是将变量中的内容格式化,格式化参数类同php的printf。

strip [去除(多余空格)],示例:{$smarty.get.name|strip:” “},如果存在第一个参数的话,则将空格替换为指定的内容,示例的意思是将空格都替换为” “;

strip_tags [去除html标签],示例:{$smarty.get.name|strip_tags}

truncate [截取],示例:{$smarty.get.name|truncate:10:’…’},示例的意思是截取10个字符,超出的部分用”…”代替,第二个参数为空的话,超出部分就直接省略了。
要是早知道这个,我就不用js的那么辛苦了>_

2013年,帮妹妹以及同事的笔记本重装电脑,推荐了最新的windows8系统。在自己的电脑上流畅异常的windows8系统,用在他们的笔记本上刚刚装完就卡的要死,一直以为是机器配置不行,硬盘灯狂闪,被骂惨了,最后只能用回了windows7….

用固态硬盘以后,重装了系统,自然要在搜索引擎上了解下优化。发现要4k对齐、关闭索引、关掉superfetch等。据说可以提高寿命以及提高速度。

话说用了大半年的windows8,都没啥感觉,今天全新安装了windows8.1 update,关闭了索引(Windows Search)以后,在outlook里搜索某个邮件等了1分钟都没出来任何东西。。。。而在关闭索引之前,基本是秒出。经确认就是因为关闭了索引的原因。网上说固态硬盘的速度很快,检索没感觉,其实感觉太明显了。
基本原因在于,以前邮件很少,但是现在outlook里积累了2年多的邮件已经超过10000封了,没有索引的搜索要人命!

事实上在机械硬盘里索引时速度慢,搜索快,在固态硬盘里,则是索引时快,搜索时更快!

那么现在对于超级预读(Superfetch)我也在想重新恢复使用了。

Japan_Css3_map

有些收件人邮件域名填错的情况下,自然是“Timeout”,不过Postfix默认会重新尝试,并且每次尝试的间隔逐渐延长,直到默认“5天”以后才会退回到发件人……

将延迟上限设置为0,则会立即退信:

这里涉及到Postfix的队列管理:

队列调度
  postfix会定期扫描队列,检查每一封等待邮件的时间,看看是否有任何等待邮件已经到了下一回合应该尝试投递的时间。每一次投递失败,都会导致延迟间 隔时间加长,所以,失败次数越多,就必须等待更长的时间才有再次被投递的机会。延迟时间上限由maximal_queue_lifetime参数决定。如 果邮件在等待队列里的时间超过此上线,postfix便会放弃投递,并退信给原寄件人。maximal_queue_lifetime的默认值为5天,你 可以将它改成任何时间长度;如果你希望postfix在第一次递送失败时就立刻退信,你可将此参数的值该为0。
  postfix内部的队列扫描间隔决定于queue_run_delay参数,其默认值为1000秒。也就是说,大约每隔1000秒,postfix就会检查一次等待队列,看看是否有任何应该再次尝试投体的邮件。
  postfix重新投体等待邮件的频繁程度的上下限,分别由minimal_backoff_time与maximal_backoff_time这两个 参数决定。每次邮件被延迟,qmgr便会加长下次投递机会的时间间隔,但是累增后的间隔时间不的超过上线,也不得低于下限。如果你发现经常有寄不出去的等 待邮件,或许你应该考虑适度加大上线,让postfix不要浪费太多资源于等待邮件。

队列管理工具
  postfix提供了一组命令行工具来检查、控制、管理队列里的邮件,其中以postsuper和postqueue这两个工具最为重要。你可以对队列中的邮件进行下列操作:
显示邮件列表
删除邮件
重新排队
保留邮件
显示邮件内容
清空邮件

每一种操作都有对应的命令。

  显示邮件列表
  邮件列表的显示项目,包括邮件在队列里的标识符、大小、到达时间、寄件人地址、收件人地址。对于等待邮件,还会另外显示等待原因。如果邮件是在活动队列 里,其标识符栏会加注一个星号(除非你的服务器很慢或是负荷沉重,否则应该没有机会见到星号)。在保留队列里的邮件的邮件,其标识符栏会加注一个感叹号。 等待邮件不加注任何符号。
  使用postqueue -p 命令可列出队列里的所有邮件,其效果如sendmail包的mailq。当安装postfix时,安装脚本会以postfix版的mailq程序(它其 实只是postqueue -p的符号链接而已)取代sendmail包原有的同名程序,借此维持与sendmail包的兼容性。

  删除邮件
  使用postsuper命令的-d选项,可移除队列里的邮件。邮件是以它们在队列里的标识符表示。
  如果要删除所有邮件,请把标识符换成ALL
  请注意,由于删除所有邮件是相当危险的操作,所以ALL关键字必须全以大写字母表示才有效,其目的是希望你三思而后行。

  保留邮件
  当你想将邮件无限期留在队列系统里,保留队列就成为容纳这些邮件的场所。不管邮件目前已经传到哪一个队列,你都可以将它们移除原来的队列,转移到保留队列。
  假设你已经知道要保留的邮件的标识符,使用postsuper工具的-h选项,就可将指定的邮件搬到保留队列:
  postsuper -h DRA3P1A9
  在这之后,如果观察邮件列表,会发现该邮件的标识符多了一个感叹号。
  要将邮件移回原来的队列,继续其未竟之进程,可使用同一个postsuper工具,只要将原来的-h改成-H。
  在邮件被移回原来的队列之后,qmgr依照平常的调度原则来决定其下次投递时间。或者,你也可以执行清空(flush)命令,立刻将邮件递送出去。

  重新排队
  如果因为配置问题而耽误了任何邮件,在问题解决之后,你可能希望被耽搁的邮件重新走一遍队列处理流程,以便能够成功完成递送。因为配置问题可能使得 postfix在邮件里存储了错误的投递处理信息,或是使用了错误的地址改写法则。重新排队会使得postfix依据里的新配置来修正错误信息。使用 postsuper工具的-r选项,可以重新排队某一特定邮件,或是要求所有邮件全部都重新排队。

  显示邮件内容
  使用postcat工具的-q选项,可以查看一个队列文件的内容
早期版本的postcat并未提供-q选项,而是要求你提供队列文件的完整路径。然而,由于邮件可能在各个队列目录之间游移不定,而且这些队列目录还有自己的子目录,所以管理员很难一眼看出队列文件的完整路径。

  清空邮件
  要求postfix立刻投递滞留在队列里的邮件的操作称为清空(flush),执行清空动作的命令是postqueue -f。不过,除了你有理由确定邮件一定能成功投递出去,否则,最好还是让qmgr自己决定重新投递的时机。不断的反复要求清空,会严重影响邮件服务器的效 率。
使用-s选项可清空寄到特定站点的邮件,而且收件站点必须要有接收快速清空的“资格”才有效。要使得某站点具备此资格,你必须将该站点的主机名称或网域名 称列在fast_flush_domains参数中。此参数的默认值只包含relay_domains所列的所有网域,但是你可以视情况增加额外的站点:
  fast_flush_domains = $relay_domains example.com
如果你有一个间歇性的邮件交换机,你可以在该交换器上线的时间内,使用postqueue -s清空先前无法送达到该交换器的所有邮件:
  postqueue -s example.com

大部分内容采摘自:http://hi.baidu.com/mongodb/item/9057580fb1b57b8902ce1b95

偶然使用ipad测试网站,发现自定义的input的按钮样式,有的正常,有的还是普通的按钮样式,不正常。

原因是按钮部分会按照苹果自己的方式渲染,只需要在CSS里添加个属性:

禁止苹果渲染就行了。

不过奇怪的是,有的是正常有的不正常,时间比较忙,不研究了。。

更详细的转载自:http://www.jb51.net/css/68771.html

需要JQuery ,下面的代码在外部js文件中。

纯Js,在网页内部的代码

突然收到客人的一封邮件,说是有问题……
看了客人的浏览记录进行测试发现正常,后来发现客人使用的是XP系统,IE8,试了兼容性,发现果然有问题……没有反应。
最后发现,是IE7、IE8、IE9不支持js的alert和confirm……
比如下面的代码,在其他浏览器都正常,但是IE7、IE8、IE9点击后没有反应。

解决办法只能是在js(支持jQuery)中增加判断

纯js(没有jQuery)

好吧,后来经过虚拟机实景测试,WIN7下,IE8,正常,只是IETester的问题,这个坑爹货( ▼-▼ )

{capture name=banner}{*注释掉中间显示内容*}
{include file=”banner.tpl”}
{/capture}
{include file=”banner.tpl” title=”Smarty学习”}
{$smarty.get.page}

{$smarty.post.page}

{$smarty.cookies.name}

{$smarty.server.SERVER_NAME}

{$smarty.env.PATH}

{$smarty.session.id}

{$smarty.request.username}

{$smarty.now|date_format:’%Y-%m-%d %H:%M:%S’}

{$smarty.const.PAGETITLE}{*常量*}

Hello {$name}{*变量*}

{html_select_date display_days=yes}

{$member.fax}

{$member.phone.home}

{$tempmember.member}

{$tempmember.phone.home}{*多维数组*}

{#error_message#}{*配置文件属性*}

{$name|lower}{*smarty字符串函数*}

{$name|upper}{*smarty字符串函数*}

{‘now’|date_format:’%Y-%m-%d’}{*smarty日期函数*}

{$title|truncate:11:”…”}{*截断字符串超长加…*}

{mailto|lower address=”mailto:linux@admin.com%22%7D%7B*mailto邮件*}

mailto:%7B$tempmember%7C@count}{*数据的总和*}

{$english_word|capitalize}{*首字母大写*}

{$english_word|capitalize:true}{*每个单词的首字母大写*}

{$title|count_characters:true}{*字符串的长度加true字符空格,不加true不计算空格*}

{$title|cat:’字符串后加入字符’}{*拼接字符串*}

{$title|count_words}{*计算字符数量*}

{$title2|default:”dsgadsgds”};{*如果变量不存在就输出默认值*}

{$english_word|escape:html}{*将字符串中的HTML转换为HTML编码方式*}

{$english_word|escape:htmlall}{*将字符串中的HTML转换为HTML编码方式*}

{$english_word|escape:url}{*将字符串中的HTML转换为URL编码方式*}

{$english_word|escape:quotes}{*将字符串中的HTML转换为HTML编码方式*}

{$title|indent:100}{*缩进指定宽度*}

{$title|regex_replace:”/要/”:”爱”}{*正则表达式替换字符*}

{$title|replace:”要”:”爱”}{*Replace替换字符*}

{$english_word|spacify:”||”}{*分隔字符串*}

{$money|string_format:”%.2f”}{*格式化数字为Float数*}

{$money|string_format:”%d”}{*格式化数字为INT数*}

{$english_word|strip:” “}{*替换空格*}

{$english_word|strip_tags:false}{*替换标签*}

{$english_word|truncate:10:”…”}{*截取指定长度字符,默认截取80字符长度*}

{$english_word|wordwrap:10}{*多长后字符串换行,默认换行长度为80*}

{$english_word|upper|spacify|truncate:30:”…”}{*Smarty支持多个函数的组合,此组合为字符串先大写然后分隔然后截取指定长度*}

{foreach name=outer item=contact from=$contacts}{*foreach循环数组*}
{foreach key=key item=item from=$contact}
{$key}:{$item}

{/foreach}
{/foreach}
{foreach name=outer item=contact2 from=$contacts2}
{foreach key=key item=item from=$contact2}
{$key}:{$item}

{/foreach}
{/foreach}
{include_php file=”function.php”}{*包含指定的PHP文件*}
{insert name=”top” lid=”toplid” sid=”topsid”}{*调用insert_top PHP函数,函数参数为lid和sid的值*}
{if 1 eq 1}{*条件判断语句*}
1=1
{elseif 1 ne 1}
1!=1
{elseif 1 gt 1}
1>1
{elseif 1 lt 1}
1<1 NO NUMERIC NOISE KEY 1014 1>=1
{elseif 1 lte 1}
1<=1 {elseif not 1 eq 1} not 1=1 {elseif (1 mod 1) eq 1} 1%1=1
{else}
你的人品真不好
{/if}
{ldelim}function insert_top {rdelim} is insert_top {*输出中括号*}
{literal}{*加入一段HTML,脚本代码等*}

{/literal}
{*包含一段PHP语句*}
{php}
echo “php代码运行”;
{/php}
{section name=member loop=$contacts3 show=true}{*while循环 show是否SHOW section中的循环内容*}
{if $smarty.section.member.first}
first
{/if}
{if $smarty.section.member.last}
last
{/if}
current loop rownum:{$smarty.section.member.rownum}

current loop iteration:{$smarty.section.member.iteration}

index:{$smarty.section.member.index} index_prev:{$contacts3[member.index_prev]} index_next:{$contacts3[member.index_next]} index:{$contacts3[member.index]} member:{$contacts3[member]}
{section name=memberchild loop=$contacts4[member] max=2}
memberchild:{$contacts4[member][memberchild]}
{/section}
total:{$smarty.section.member.total}{*数据长度或总记录数*}
{/section}

jquery获取父元素方法比较多,比如parent(),parents(),closest()这些都能帮你实现查找父元素或节点
获取上一个兄弟元素prev()
获取下一个兄弟元素next()