Smarty一些小技巧

2009年4月13日

Smarty, PHP的一个非常出名的模板引擎, 很少用, 最近用了一点, 记录一些心得以备日后查阅.
1. 使用Smarty进行循环嵌套

// 在这里定义$sec1为一个二维数组
$sec1 = $db->fetchAll("select * from category");
for($i=0; $i<count($sec1); $i++) {
	$sec1[$i]['news'] = $db->fetchAll("select * from news where cid = ".$sec1[$i]['id']." order by id desc limit 0, 5");
}
 
$smarty->assign('sec1', $sec1); 
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
$smarty->display('news.html');

// 模版文件

<{section name=sec1 loop=$sec1}>
<div class="inner">
<h1><a href="/category/<{$sec1[sec1].id}>.html"><{$sec1[sec1].name}></a></h1>
	<ul>
	<{section name=sec2 loop=$sec1[sec1].news}>
		<li>
		<a href="/news/<{$sec1[sec1].news[sec2].id}>.html" target="_blank">
		<{$sec1[sec1].news[sec2].title}>
		</a>
		</li>
	<{/section}>
	</ul>				
</div>
<{/section}>

2. Smarty对于类似分页情况时的多参数缓存
我们都知道可以通过$smarty->display(’NewsList.tpl’, $page)这样来实现类似与NewsList.php?page=1这样URL结构相同的情况缓存. 但是如果情况是NewsList.php?cid=1&Page=1这样呢? 或许大家也知道, 但是我今天在网上查阅了一下才知道原来这么简单,$smarty->display(’NewsList.tpl’, “cid:{$cid}-page:{$page}”)就可以了. 呵呵

admin PHP

无处安放的青春

2009年4月10日

1231
真的有来世吗?
那么
我愿做
一只懂得飞翔
不懂爱情的小鸟
一朵瞬间开放
无声消融的雪花
甚至
窗前的一角蓝天
掀乱书页的风
落进
你手心里的
一滴小雨

推荐阅读无处安放的青春

这几天出差, 闲来无暇一直在手机上看这本小说, 优美细腻的笔锋, 忧伤婉约的爱情, 欲罢不能的愁绪, 这是就是吕婉的作品, 它说的不仅仅是爱情, 更多的是爱情的思考. 爱情与婚姻或许从来都不是因果的关系, 爱情真的可以让我们放弃一切吗? 包括我们的自私? 即使没有杜晓斌, 李然和周蒙或许也会分开, 因为还会有下一个杜晓斌. 我相信李然是深爱着蒙蒙的, 我们没有权利指责他的自私, 他和杜晓斌在一起完全是因为责任吗? may be not. 每个人都有权利追求自己想要的. 或许这就是青春, 留下的总是那些支离破碎, 唯美而有伤感的片段.

P.S 佟大为和江一燕拍的电视剧很不错, 诠释的很完美, 只不过相对来讲, 我还是更喜欢小说的叙述.

admin 生活

通过PHP下载图片文件

2009年4月8日

通过PHP下载图片文件, 不需要使用右键另存为等这样的操作, 直接下载.

$img = substr($row['bqpath'], strrpos($row['bqpath'], '/')+1);
$ext = substr($row['bqpath'], strrpos($row['bqpath'], '.')+1);
header('Content-Type: image/'.$ext); 
header("Content-Disposition:attachment;filename=".$img);
header('Content-Transfer-Encoding: binary');
readfile(WEB_PATH.$row['bqpath']);

其他文件的下载同理…

admin PHP

通过PHP获取URL以及参数

2009年4月7日

项目的MySQL类中有个分页函数, 分页时要对当前的URL地址以及参数进行判断处理然后再加上分页参数, 网上没有合适的, 自己写了一个很简单的函数.

function join_param() {
	$_GET = array_map('inject', $_GET);
	$url = $_SERVER['PHP_SELF'];
	if (count($_GET) > 0) {
		foreach ($_GET as $k => $v)
		{
                       // 这里剔除原来的page参数
			if (strtolower($k) != 'page')
				$querystr .= $k.'='.$v.'&';
		}
//		$querystr = substr($querystr, 0, strrpos($querystr, '&'));
		$url .= '?'.$querystr;
	}
	else {
		$url .= '?';
	}
	return $url;
}

然后在mysql类中, 我们可以这么写了

// ....略
		$uri = join_page();
		if ($currentPage > 1)
		{
			$pager = "<a href='".$uri."page=1'>首页</a> ";
			$pager.= "<a href='".$uri."page=".($currentPage-1)."'>上一页</a> ";
		}
 
		if ($currentPage < $totalPages)
		{
			$pager.= "<a href='".$uri."page=".($currentPage+1)."'>下一页</a> ";
			$pager.= "<a href='".$uri."page=".$totalPages."'>尾页</a> ";
		}

admin PHP

一些开发常用的工具集(不断更新中…)

2009年4月7日

在线工具集

网上转载的, 原处点我

admin 生活

使用jquery简单实现popup/tooltip的插件效果

2009年4月7日

一个小项目需要用到窗口提示, 并且能在提示窗口中进行一些简单操作, 在网上找了找jquery的tooltip和popup, wow! 一大堆, 看的有点头晕眼花, 索性自己写了一个简单的, 代码很简单, 有需要的可以适当的再扩展一下, 比如对提示窗口进行CSS设计一下.还是那句老话, 适合自己用的就是最好的.

本脚本需要jquery1.2.6+以上版本支持.

/*
 * Popup/Tooltip script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by flywolf (http://www.suiyuan.org)
 * 04/07/2009 16:22
 */
 
/*
 * 弹出窗口/提示脚本
 * @param css 要弹出窗口的HTML元素CSS样式名
 * @param delay 弹出窗口是否可以点击
 */
this.popup = function(css, delay) {
    // 首先创建提示窗口
    $('body').append('<div id="PopWin">My Popup Window</div>');
    $('#PopWin').css({
        'position': 'absolute',
        'display': 'none',
        'width': '200px',
        'height': '100px',
        'border': '1px solid #333'
    })
 
    // 鼠标进入时提示窗口是否需要停留
    if (delay) {
        $('#PopWin').mouseover(function() {
            $(this).show();
        }).mouseout(function() {
            $(this).hide();
        })
    }
 
    // 对于所有css样式为popcss的a连接添加鼠标动作
    // 显示/隐藏提示窗口
    $('a.' + css).mouseover(function() {
        $('#PopWin').css({
            'left': $(this).offset().left + $(this).width(),
            'top': $(this).offset().top
        }).show();
    }).mouseout(function() {
        $('#PopWin').hide();
    });
}

阅读全文…

admin Javascript