<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>trylife &#187; php</title>
	<atom:link href="http://www.trylife.cn/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trylife.cn</link>
	<description>life&#039;s short , try more...</description>
	<lastBuildDate>Sat, 03 Dec 2011 21:04:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>openid怎么登陆到帝国CMS</title>
		<link>http://www.trylife.cn/openid-connect-ecms/</link>
		<comments>http://www.trylife.cn/openid-connect-ecms/#comments</comments>
		<pubDate>Tue, 24 May 2011 03:29:18 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1656</guid>
		<description><![CDATA[帝国CMS会员数据主表： http://www.phome.net/doc/dbdoc/66/page/phome_enewsmember.html 字段名 类型 解释 附加说明 userid int(11) 用户ID username varchar(30) 用户名 password varchar(32) 用户密码 rnd varchar(30) 随机认证码 email varchar(50) 联系邮箱 registertime datetime 注册时间 groupid smallint(6) 会员组ID userfen int(11) 点数 userdate int(11) 有效期 money float(11,2) 金额 zgroupid smallint(6) 到期后转向会员组ID havemsg tinyint(1) 是否有短信息 1为提示有短信息，0为不提示 checked tinyint(1) 是否审核 1为已审核，0为未审核 salt varchar(8) salt密码加密随机码 相关字段说明 涉及登陆的字段有username,password,rnd,salt,checked username: 就是用户名不用说 rnd:是randomize的缩写，取得随机数的意思，记录中会员每登陆一次变一次，用这个随机数来判断当前登陆是否有效，用两个非IE内核浏览器登陆同一个会员，第一个登陆的被挤掉就是RND的效果。 [...]]]></description>
			<content:encoded><![CDATA[<h3>帝国CMS会员数据主表：</h3>
<p>http://www.phome.net/doc/dbdoc/66/page/phome_enewsmember.html</p>
<table class="tableborder" border="0" cellspacing="1" cellpadding="3" width="100%">
<tbody>
<tr class="header">
<td width="20%" height="30">字段名</td>
<td width="15%">类型</td>
<td width="20%">解释</td>
<td width="45%">附加说明</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userid</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">用户ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>username</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(30)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">用户名</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>password</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(32)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">用户密码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>rnd</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(30)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">随机认证码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>email</strong></td>
<td bgcolor="#FFFFFF">varchar(50)</td>
<td bgcolor="#FFFFFF">联系邮箱</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>registertime</strong></td>
<td bgcolor="#FFFFFF">datetime</td>
<td bgcolor="#FFFFFF">注册时间</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>groupid</strong></td>
<td bgcolor="#FFFFFF">smallint(6)</td>
<td bgcolor="#FFFFFF">会员组ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userfen</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">点数</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>userdate</strong></td>
<td bgcolor="#FFFFFF">int(11)</td>
<td bgcolor="#FFFFFF">有效期</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>money</strong></td>
<td bgcolor="#FFFFFF">float(11,2)</td>
<td bgcolor="#FFFFFF">金额</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>zgroupid</strong></td>
<td bgcolor="#FFFFFF">smallint(6)</td>
<td bgcolor="#FFFFFF">到期后转向会员组ID</td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>havemsg</strong></td>
<td bgcolor="#FFFFFF">tinyint(1)</td>
<td bgcolor="#FFFFFF">是否有短信息</td>
<td bgcolor="#FFFFFF">1为提示有短信息，0为不提示</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><strong>checked</strong></td>
<td bgcolor="#FFFFFF">tinyint(1)</td>
<td bgcolor="#FFFFFF">是否审核</td>
<td bgcolor="#FFFFFF">1为已审核，0为未审核</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF"><span style="color: #ff0000;"><strong>salt</strong></span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">varchar(8)</span></td>
<td bgcolor="#FFFFFF"><span style="color: #ff0000;">salt密码加密随机码</span></td>
<td bgcolor="#FFFFFF"></td>
</tr>
</tbody>
</table>
<h3>相关字段说明</h3>
<p>涉及登陆的字段有username,password,rnd,salt,checked<br />
<strong>username:</strong> 就是用户名不用说<br />
<strong>rnd:</strong>是randomize的缩写，取得随机数的意思，记录中会员每登陆一次变一次，用这个随机数来判断当前登陆是否有效，用两个非IE内核浏览器登陆同一个会员，第一个登陆的被挤掉就是RND的效果。<br />
<strong>checked:</strong>会员是否被审核<br />
<strong>password,salt:</strong>共同用于密码会员密码验证</p>
<h3>openid第一次连接帝国CMS 或者绑定帝国CMS账号</h3>
<p>新浪微博，腾讯微博，QQ空间等等都会给一个openid,比如新浪微博的是weiboid,腾讯微博的是nickname,QQ空间给的是openid，无论第一次连接注册还是绑定原有帝国CMS账号都是绑定一个openid而已，所以在一般在帝国CMS主表新建一个字段用于储存openid；</p>
<h3>以后的连接</h3>
<p>以后的连接就简单了，获得返回的OPENID后搜索帝国CMS会员主表，如果有存在的OPENID就执行登陆，没有就执行注册或绑定，trylife用的登陆函数如下：openid已经是绑定的，所以函数更新下RND之后写COOKIE就可以；买过trylife插件的童鞋可以看下这个函数在，e\trylife/common/Dev/ecms-rd-common-functions.php</p>
<pre name="code" class="php">
function ecms_memberlogin($userid)
{
	global $empire,$user_tablename,$public_r,$user_groupid,$user_username,$user_userid,$user_email,$user_password,$user_dopass,$user_rnd,$user_registertime,$user_register,$user_group,$user_saltnum,$user_salt,$user_seting,$forumgroupid,$registerurl,$dbtbpre,$user_regcookietime,$user_userfen,$user_checked,$level_r;
	$r=$empire->fetch1("select * from ".$user_tablename." where ".$user_userid."='$userid' limit 1");
	$rnd=make_password(12);
	$sql=$empire->query("update ".$user_tablename." set ".$user_rnd."='$rnd' where ".$user_userid."='$userid' ");
	$logincookie=0;
	$set1=esetcookie("mlusername",$r[$user_username],$logincookie);
	$set2=esetcookie("mluserid",$r[$user_userid],$logincookie);
	$set3=esetcookie("mlgroupid",$r[$user_group],$logincookie);
	$set4=esetcookie("mlrnd",$rnd,$logincookie);

	if( $set1 &#038;&#038; $set2 &#038;&#038; $set3 &#038;&#038; $set4 )
	{
		$re=1;
	}
	else
	{
		$re=0;
	}

	return $re;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/openid-connect-ecms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>帝国CMS订单邮件提醒</title>
		<link>http://www.trylife.cn/ecms-order-email-remind/</link>
		<comments>http://www.trylife.cn/ecms-order-email-remind/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 02:20:53 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1480</guid>
		<description><![CDATA[e/class/ShopSysFun.php搜索代码 printerror($mess,$location,1); 在上一行加入如下代码： //trylife 订单信息发送管理员邮箱 [s] 1/1 //此函数增加代码开始结束 无其他 $email=array('94592590@qq.com'); $subject='邮件标题'; $content='邮件内容'; @include(ECMS_PATH.'e/class/SendEmail.inc.php'); EcmsToSendMail($email,$subject,$content); //trylife 订单信息发送管理员邮箱 [e] 1/1]]></description>
			<content:encoded><![CDATA[<p>e/class/ShopSysFun.php搜索代码 printerror($mess,$location,1);<br />
在上一行加入如下代码：</p>
<pre name="code" class="php">
		//trylife 订单信息发送管理员邮箱 [s] 1/1
		//此函数增加代码开始结束 无其他
		$email=array('94592590@qq.com');
		$subject='邮件标题';
		$content='邮件内容';   

		@include(ECMS_PATH.'e/class/SendEmail.inc.php');
		EcmsToSendMail($email,$subject,$content);
		//trylife 订单信息发送管理员邮箱 [e] 1/1
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-order-email-remind/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>提高帝国CMS二次开发关联模型效率 高效利用帝国CMS关联字段</title>
		<link>http://www.trylife.cn/highly-active-use-ecms-association-field/</link>
		<comments>http://www.trylife.cn/highly-active-use-ecms-association-field/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 23:15:57 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS模板]]></category>
		<category><![CDATA[下拉外表关联字段]]></category>
		<category><![CDATA[帝国CMS关联字段]]></category>
		<category><![CDATA[选择外表关联字段]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1436</guid>
		<description><![CDATA[帝国CMS关联字段应用简介 这个功能主要是为了两个或多个模型行数据间关系而产生的；例如音乐模型中的数据关系如下： phome_ecms_singer(歌手数据表) id //歌手ID title //歌手名 text //歌手简介 phome_ecms_album(专辑数据表) id//专辑ID title //专辑名称 singer_id //歌手ID 这个歌手ID就是关联的 歌手数据表中的id字段 phome_ecms_music(专辑数据表) id//歌曲ID title //歌曲名称 singer_id //歌手ID 这个歌手ID就是关联的 歌手数据表中的id字段 album_id //专辑ID 这个专辑ID就是关联的 专辑数据表中的id字段 downpath //音乐地址 选择外表关联字段 与 下拉外表关联字段优缺点 使用帝国CMS关联字段有“选择外表关联字段”与“下拉外表关联字段”两种关联表单录入方式； 选择外表关联字段：弹出新页面选择要录入的值，优点是避免过多数据载入到表单页导致添加信息表单加载慢，别且可以搜索，缺点例如当我们要使用id作为录入字段，title作为显示字段的时候，再次修改表单带来了信息确认上的困难（使用id 等INT类型是因为查询的时候较为高效）； 下拉外表关联字段：优缺点正好反过来…… 关联字段的数据调用 灵动标签+SQL示例：专辑内容页调用所有专辑下歌曲 [e:loop={"select * from {$dbtbpre}ecms_music where album_id='$navinfor[id]' order by id desc",0,24,0,'',''}] //这里是木板内容 内容页内的字段值可以使用$navinfor[字段]的方式获取 [/e:loop] 使用结合项：有关结合项可以看官方结合项解密 规避帝国CMS原有的管理字段缺点 [...]]]></description>
			<content:encoded><![CDATA[<h3>帝国CMS关联字段应用简介</h3>
<p>这个功能主要是为了两个或多个模型行数据间关系而产生的；例如音乐模型中的数据关系如下：<br />
<strong>phome_ecms_singer(歌手数据表)</strong><br />
id //歌手ID<br />
title //歌手名<br />
text  //歌手简介</p>
<p><strong>phome_ecms_album(专辑数据表)</strong><br />
id//专辑ID<br />
title //专辑名称<br />
singer_id //歌手ID <span style="color: green;">这个歌手ID就是关联的 歌手数据表中的id字段</span></p>
<p><strong>phome_ecms_music(专辑数据表)</strong><br />
id//歌曲ID<br />
title //歌曲名称<br />
singer_id //歌手ID <span style="color: green;">这个歌手ID就是关联的 歌手数据表中的id字段</span><br />
album_id //专辑ID <span style="color: green;">这个专辑ID就是关联的 专辑数据表中的id字段</span><br />
downpath //音乐地址</p>
<h3>选择外表关联字段 与 下拉外表关联字段优缺点</h3>
<p>使用帝国CMS关联字段有“<strong>选择外表关联字段</strong>”与“<strong>下拉外表关联字段</strong>”两种关联表单录入方式；<br />
<strong>选择外表关联字段：</strong>弹出新页面选择要录入的值，优点是避免过多数据载入到表单页导致添加信息表单加载慢，别且可以搜索，缺点例如当我们要使用id作为录入字段，title作为显示字段的时候，再次修改表单带来了信息确认上的困难（使用id 等INT类型是因为查询的时候较为高效）；<br />
<strong>下拉外表关联字段：</strong>优缺点正好反过来……</p>
<h3>关联字段的数据调用</h3>
<p><strong>灵动标签+SQL示例：</strong>专辑内容页调用所有专辑下歌曲<br />
<code><br />
[e:loop={"select * from {$dbtbpre}ecms_music where album_id='$navinfor[id]' order by id desc",0,24,0,'',''}]<br />
//这里是木板内容 内容页内的字段值可以使用$navinfor[字段]的方式获取<br />
[/e:loop]<br />
</code></p>
<p><strong>使用结合项：</strong>有关结合项可以看官方结合项解密</p>
<h3>规避帝国CMS原有的管理字段缺点 使用AJAX效果</h3>
<p>做的好点不仅可以规避原有管理字段的缺点而且还可以做到同页面录入关联模型信息，这个就不多说了（trylife的JS现在还是个白菜，有JS的问题可以问<a href="http://www.abc3210.com/" target="_blank">装B的凡姐</a> 哈哈）截张近期项目的图；</p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2010/10/ecms-association-field-0.jpg" alt="" title="ecms-association-field-0" width="579" height="84" class="alignnone size-full wp-image-1453" style="border:3px solid gray;" /><br />
这张图还少了一张游戏账号表</p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2010/10/ecms-association-field-1.jpg" alt="" title="ecms-association-field-1" width="612" height="183" class="alignnone size-full wp-image-1451" style="border:3px solid gray;" /><br />
类似百度的搜索关键字下拉</p>
<p><img src="http://www.trylife.cn/wp-content/uploads/2010/10/ecms-association-field-2.jpg" alt="" title="ecms-association-field-2" width="680" height="451" class="alignnone size-full wp-image-1454" style="border:3px solid gray;" /><br />
游戏账号的无刷新录入和管理</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/highly-active-use-ecms-association-field/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>帝国CMS添加信息成功后处理函数</title>
		<link>http://www.trylife.cn/ecms-do-function-after-addinfo-suc/</link>
		<comments>http://www.trylife.cn/ecms-do-function-after-addinfo-suc/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 14:16:09 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS模板]]></category>
		<category><![CDATA[帝国CMS 建材]]></category>
		<category><![CDATA[帝国CMS 游戏发号]]></category>
		<category><![CDATA[帝国CMS字段处理函数]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1410</guid>
		<description><![CDATA[帝国CMS本身已经具有字段处理函数，但是字段处理函数只能应用到添加信息入库前处理，信息入库后返回成功提示前处理就无能力为力了，但是这方面的处理又是很必须。 eg1:比方说trylife现在经手的《游戏发号》项目里有这么一个功能：帝国CMS发布文章同时发布到DiscuzX,领号用户需在DiscuzX更贴后才能领号；帝国CMS发布文章同时发布到DiscuzX这样的功能就需要在帝国CMS添加信息入库后于成功返回前进行操作，如果使用字段处理函数，文章因字段问题没有成功入库，因某些字段内容填写错误，发回错误提示，这样就及其有可能造成DX内错误信息； eg2:再例如以trylife前有个《建材项目 》里，由于品牌和商品都是用户录入的，品牌可能存在也可能不存在，添加商品的时候录入品牌，这个时候就不能用字段处理函数，因有可能商品录入不成功而导致多余的品牌数据录入到库中，所以选择的是商品信息入库后，返回成功提示前处理； 简单的处理 以后台添加信息为例，简单说下添加信息处理 后台添加信息函数:AddNews($add,$userid,$username) 函数定义位置：e/class/hinfofun.php 简单的处理，我们只需要在AddNews()函数体内的下面代码上一行加入需要处理的代码即可 printerror("AddNewsSuccess","AddNews.php?enews=AddNews&#038;ecmsnfrom=$add[ecmsnfrom]&#038;bclassid=$add[bclassid]&#038;classid=$add[classid]"); 扩展下 上边的方法老是改系统文件，trylife个人认为比较烦，越改越多，臃肿的文件看着心里会烦；所以trylife在e/class/userfun.php定义了一个函数 //后台添加信息入库后与返回成功提示前处理函数 function AddNews_BeforeSucDo($add,$userid,$username) { //以后在这里添加处理 } 还是有更好的方法，待续…… //类似这样的问题，比如注册，前后台添加信息，评论，等都有必要存在入库前处理函数和入库后处理函数。 //整理好函数方面的建议，还是要给王猛老大发一份。 //上次给老大发了一份《帝国CMS方便拓展建议1-设置与缓存》这样个文档 //如果能采纳就方便多了哈]]></description>
			<content:encoded><![CDATA[<p>帝国CMS本身已经具有字段处理函数，但是字段处理函数只能应用到添加信息入库前处理，信息入库后返回成功提示前处理就无能力为力了，但是这方面的处理又是很必须。</p>
<p><strong>eg1:</strong>比方说trylife现在经手的<strong>《游戏发号》</strong>项目里有这么一个功能：<strong>帝国CMS发布文章同时发布到DiscuzX</strong>,领号用户需在DiscuzX更贴后才能领号；<strong>帝国CMS发布文章同时发布到DiscuzX</strong>这样的功能就需要在帝国CMS添加信息入库后于成功返回前进行操作，如果使用字段处理函数，文章因字段问题没有成功入库，因某些字段内容填写错误，发回错误提示，这样就及其有可能造成DX内错误信息；</p>
<p><strong>eg2:</strong>再例如以trylife前有个<a href="http://home.guifun.com/" target="_blank"><strong>《建材项目 》</strong></a>里，由于品牌和商品都是用户录入的，品牌可能存在也可能不存在，添加商品的时候录入品牌，这个时候就不能用字段处理函数，因有可能商品录入不成功而导致多余的品牌数据录入到库中，所以选择的是商品信息入库后，返回成功提示前处理；</p>
<h3>简单的处理</h3>
<p>以后台添加信息为例，简单说下添加信息处理<br />
后台添加信息函数:AddNews($add,$userid,$username)<br />
函数定义位置：e/class/hinfofun.php<br />
简单的处理，我们只需要在AddNews()函数体内的下面代码上一行加入需要处理的代码即可<br />
<code>printerror("AddNewsSuccess","AddNews.php?enews=AddNews&#038;ecmsnfrom=$add[ecmsnfrom]&#038;bclassid=$add[bclassid]&#038;classid=$add[classid]");</code></p>
<h3>扩展下</h3>
<p>上边的方法老是改系统文件，trylife个人认为比较烦，越改越多，臃肿的文件看着心里会烦；所以trylife在e/class/userfun.php定义了一个函数<br />
<code><br />
//后台添加信息入库后与返回成功提示前处理函数<br />
function AddNews_BeforeSucDo($add,$userid,$username)<br />
{<br />
	//以后在这里添加处理<br />
}<br />
</code></p>
<h3>还是有更好的方法，待续……</h3>
<p>//类似这样的问题，比如注册，前后台添加信息，评论，等都有必要存在入库前处理函数和入库后处理函数。<br />
//整理好函数方面的建议，还是要给王猛老大发一份。<br />
//上次给老大发了一份《帝国CMS方便拓展建议1-设置与缓存》这样个文档<br />
//如果能采纳就方便多了哈</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-do-function-after-addinfo-suc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>帝国CMS商城代码解析1 &#8211; 购物车cookie</title>
		<link>http://www.trylife.cn/ecms-shopsys-code-1-buycar-cookie/</link>
		<comments>http://www.trylife.cn/ecms-shopsys-code-1-buycar-cookie/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 19:39:09 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS模板]]></category>
		<category><![CDATA[帝国CMS cookie]]></category>
		<category><![CDATA[帝国CMS商城]]></category>
		<category><![CDATA[帝国CMS购物车]]></category>
		<category><![CDATA[帝国CMS购物车COOKIE]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1307</guid>
		<description><![CDATA[题外： 每天博客也没什么好写的，如果把一个系统用的透透彻彻那就是进步了，如果内部结构了解的透透彻彻了应该是成长了，如果是分析的透透彻彻那应该是上一个层次了，trylife现在做第二步，并向第三步骤发展；希望写出来的内容同样对大家有帮助，另外一系列的内容比较容易集中探讨问题，文章水平比较烂，有什么不足的地方请多指教，有什么要关于这个系列《帝国CMS购物车代码解析》要讨论我们可以在评论里讨论,当然有什么好问题更欢迎，本身博客要交换，更多是为浏览者而存在，也许你的问题就是下一篇博文呢。 帝国CMS商城前台相关文件 e/class/ShopSysFun.php 商城核心函数文件 e/ShopSys/buycar/index.php 商城购物车 e/ShopSys/order/index.php 订单信息填写页 e/ShopSys/SubmitOrder/index.php 订单确认提交页 e/ShopSys/ListDd/index.php 前台会员查看订单列表 e/ShopSys/ShowDd/index.php 前台会员查看订单详细 e/template/ShopSys/buycar.php 商城购物车模板 e/template/ShopSys/order.php 订单信息填写页模板 e/template/ShopSys/SubmitOrder.php 订单确认提交页模板 e/template/ShopSys/ListDd.php 前台会员查看订单列表模板 e/template/ShopSys/ShowDd.php 前台会员查看订单详细模板 增加订单入口链接 /e/enews/?enews=AddBuycar&#038;classid=[!--classid--]&#038;id=[!--id--] 增加订单函数 AddBuycar($classid,$id) $classid 为栏目ID $id 为文章ID 购物车cookie声明与读取 声明： SetBuycar($buycar) e/class/ShopSysFun.php 读取： $buycar=getcvar(&#8216;mybuycar&#8217;); 帝国CMScookie操作函数查看《esetcookie() getcvar() -帝国CMS cookie 操作函数》 增加订单系统流程简介 1.从入口链接GET得到栏目ID和内容ID 2.判断信息在数据表中是否存在 3.设置购物车cookie 4.跳转购物车地址e/ShopSys/buycar/index.php 5.购物车（e/ShopSys/buycar/index.php）将会读取COOKIE分离后得到栏目ID，内容ID，购买数量 购车COOKIE格式 一种商品：&#124;栏目ID,内容ID&#124;购买数量! 二种商品：&#124;栏目ID,内容ID&#124;购买数量!&#124;栏目ID,内容ID&#124;购买数量! 三种商品：&#124;栏目ID,内容ID&#124;购买数量!&#124;栏目ID,内容ID&#124;购买数量!&#124;栏目ID,内容ID&#124;购买数量! 备注：查看购物车cookie可以在e/ShopSys/buycar/index.php中找到$buycar=getcvar(&#8216;mybuycar&#8217;);修改为echo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>题外：</strong><br />
每天博客也没什么好写的，如果把一个系统用的透透彻彻那就是进步了，如果内部结构了解的透透彻彻了应该是成长了，如果是分析的透透彻彻那应该是上一个层次了，trylife现在做第二步，并向第三步骤发展；希望写出来的内容同样对大家有帮助，另外一系列的内容比较容易集中探讨问题，文章水平比较烂，有什么不足的地方请多指教，有什么要关于这个系列《帝国CMS购物车代码解析》要讨论我们可以在评论里讨论,当然有什么好问题更欢迎，本身博客要交换，更多是为浏览者而存在，也许你的问题就是下一篇博文呢。</p>
<h3>帝国CMS商城前台相关文件</h3>
<p>e/class/ShopSysFun.php 商城核心函数文件<br />
e/ShopSys/buycar/index.php 商城购物车<br />
e/ShopSys/order/index.php 订单信息填写页<br />
e/ShopSys/SubmitOrder/index.php 订单确认提交页<br />
e/ShopSys/ListDd/index.php 前台会员查看订单列表<br />
e/ShopSys/ShowDd/index.php 前台会员查看订单详细</p>
<p>e/template/ShopSys/buycar.php 商城购物车模板<br />
e/template/ShopSys/order.php 订单信息填写页模板<br />
e/template/ShopSys/SubmitOrder.php 订单确认提交页模板<br />
e/template/ShopSys/ListDd.php 前台会员查看订单列表模板<br />
e/template/ShopSys/ShowDd.php 前台会员查看订单详细模板</p>
<h3>增加订单入口链接</h3>
<p>/e/enews/?enews=AddBuycar&#038;classid=[!--classid--]&#038;id=[!--id--]</p>
<h3>增加订单函数</h3>
<p><strong>AddBuycar($classid,$id)</strong><br />
$classid 为栏目ID<br />
$id 为文章ID</p>
<h3>购物车cookie声明与读取</h3>
<p><strong>声明：</strong> SetBuycar($buycar) e/class/ShopSysFun.php<br />
<strong>读取：</strong> $buycar=getcvar(&#8216;mybuycar&#8217;);<br />
帝国CMScookie操作函数查看<a href="http://www.trylife.cn/ecms-cookie-functions/" target="_blank">《esetcookie() getcvar() -帝国CMS cookie 操作函数》</a></p>
<h3>增加订单系统流程简介</h3>
<p>1.从入口链接GET得到栏目ID和内容ID<br />
2.判断信息在数据表中是否存在<br />
3.设置购物车cookie<br />
4.跳转购物车地址e/ShopSys/buycar/index.php<br />
5.购物车（e/ShopSys/buycar/index.php）将会读取COOKIE分离后得到栏目ID，内容ID，购买数量</p>
<h3>购车COOKIE格式</h3>
<p><strong>一种商品：</strong>|栏目ID,内容ID|购买数量!<br />
<strong>二种商品：</strong>|栏目ID,内容ID|购买数量!|栏目ID,内容ID|购买数量!<br />
<strong>三种商品：</strong>|栏目ID,内容ID|购买数量!|栏目ID,内容ID|购买数量!|栏目ID,内容ID|购买数量!<br />
<font color="gray">备注：查看购物车cookie可以在e/ShopSys/buycar/index.php中找到$buycar=getcvar(&#8216;mybuycar&#8217;);修改为echo $buycar=getcvar(&#8216;mybuycar&#8217;); 打开购物车就可以看到购物车COOKIE了</font></p>
<h3>帝国CMS商城购物车 cookie开发示例：在购物车直接删除某件商品</h3>
<p><strong>分析：</strong>根据购物车COOKIE的格式，我们得到栏目ID，内容ID，购买数量(不一定是必须的),之后组合格式，删除COOKIE中的此段内容，重新打开购物车/或刷新购物车页面，这样就可以不用调整购物车，二直接删除某件商品；</p>
<p><strong>要点：</strong><br />
1.需要一个PHP脚本页从用户删除商城COOKIE中删除提交的商品<br />
2.为了直观方便体验好，还是使用AJAX效果（trylife使用的是JQuery），所以又下面2条<br />
3.给购物车商品行加个ID格式为：product-栏目ID-信息ID-购买数量<br />
3.商品行每行增加一个删除按钮<br />
3.一个ajax函数用于处理删除动作</p>
<p><strong>文件修改与增加：</strong><br />
修改文件：e/template/ShopSys/buycar.php 商城购物车模板<br />
增加问津：e/trylife/ShopSys-demo/del-product.php 删除单个商品处理文件</p>
<p><strong>最终效果截图：</strong><br />
<img src="http://www.trylife.cn/wp-content/uploads/2010/10/ecms-shop-del-pruduct.jpg" alt="" title="ecms-shop-del-pruduct" width="656" height="268" class="alignnone size-full wp-image-1319" /></p>
<p><strong>示例下载与安装：</strong><br />
1.点击下载<a href='http://www.trylife.cn/wp-content/uploads/2010/10/Ecms-ShopSys-Delproduct.zip' tartet="_blank">帝国CMS商城购物车 AJAX删除商品插件示例</a><br />
2.解压后上传trylife目录到e目录<br />
3.buycar.php上传覆盖到e/template/ShopSys/buycar.php 或对照修改 </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;Exp.line&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<font color="green">感谢<a href="http://www.abc3210.com/" target="_blank">凡姐</a>关于JS的问题有问必答；各位朋友有关于帝国CMS商城的问题解析和本文的问题欢迎在本文下评论。《帝国CMS商城代码解析》下面的文章要写什么还是需要大家的方向标滴</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-shopsys-code-1-buycar-cookie/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>帝国CMS不为人知的技巧 &#8211; 终极栏目自定义排序项</title>
		<link>http://www.trylife.cn/ecms-user-order/</link>
		<comments>http://www.trylife.cn/ecms-user-order/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 08:25:10 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS列表]]></category>
		<category><![CDATA[帝国CMS列表排序]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1269</guid>
		<description><![CDATA[一、概述 此文同属于《帝国CMS 会员信息加粗/加色/置顶》相关分享 如上图，默认的选择方式如绿色框圈出有5个选项，实际上是可以自定义新的排序方式，不限制在系统给定的5个，而是主表字段均可参与排序，例如:turetime(真实发布时间的UNIX时间戳)，lastdotime(信息修改时间UNIX时间戳)所有主表字段包括自定义字段在内，同样可以多个排序参数一起用(truetime desc,lastdotime desc),实际情况我们我们先看代码； 二、探索 $query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$yhadd."(".$whereclass.") and checked=1 order by ".ReturnSetTopSql('list').$addorder.$limit; 以下代码是e/class/functions.php中负责终极栏目查询的代码，有两个排序条件取得代码ReturnSetTopSql(&#8216;list&#8217;)和$addorder；ReturnSetTopSql(&#8216;list&#8217;)取得的是列表是否使用置顶排序，ReturnSetTopSql()定义在e/class/connect.php,相关设置在后台->系统设置->信息设置中；$addorder为以下代码判断获得的，大致意思是栏目设置中排序方式为空的话就默认用发布时间倒序排序，如果是不为空的话呢就使用栏目设置的排序； //排序 if(empty($class_r[$classid][reorder])) { $addorder="newstime desc"; } else { $addorder=$class_r[$classid][reorder]; } 三、总结 1.以会员信息置顶为例如果使用外置字段作为置顶字段，可以在栏目设置中添加排序选项，这样减少了修改系统文件 2.不同模型排序，复杂模型排序同样可以使用栏目设置的排序选项，方便； 3.不更改文件并且系统参数设置使用制定排序则置顶排序永远高于栏目设置的排序设置 4.必要的时候可以更改ReturnSetTopSql(&#8216;list&#8217;)与$addorder前后顺序满足特殊排序需要（其他排序选项高于系统排序情况下） 5.最好的办法就是后台系统设置不设置置顶项参与排序，而在栏目设置中自己定义排序字段 四、相关文章推荐 帝国CMS模板不为人知的技巧2 – 对系统设置的重新赋值 帝国CMS模板不为人知的技巧 – 对语言包重新赋值应用]]></description>
			<content:encoded><![CDATA[<h3>一、概述</h3>
<p>此文同属于<a href="http://www.trylife.cn/ecms-member-strong-hightlight-top-plugin/" target="_blank">《帝国CMS 会员信息加粗/加色/置顶》相关分享</a><br />
<img src="http://www.trylife.cn/wp-content/uploads/2010/09/mtop-20100920-4.jpg" alt="" title="mtop-20100920-4" width="600" class="alignnone size-full wp-image-1265" /><br />
如上图，默认的选择方式如绿色框圈出有5个选项，实际上是可以自定义新的排序方式，不限制在系统给定的5个，而是主表字段均可参与排序，例如:turetime(真实发布时间的UNIX时间戳)，lastdotime(信息修改时间UNIX时间戳)所有主表字段包括自定义字段在内，同样可以多个排序参数一起用(truetime desc,lastdotime desc),实际情况我们我们先看代码；</p>
<h3>二、探索</h3>
<pre class="php" name="code">
$query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$yhadd."(".$whereclass.") and checked=1 order by ".ReturnSetTopSql('list').$addorder.$limit;
</pre>
<p>以下代码是e/class/functions.php中负责终极栏目查询的代码，有两个排序条件取得代码ReturnSetTopSql(&#8216;list&#8217;)和$addorder；ReturnSetTopSql(&#8216;list&#8217;)取得的是列表是否使用置顶排序，ReturnSetTopSql()定义在e/class/connect.php,相关设置在后台->系统设置->信息设置中；$addorder为以下代码判断获得的，大致意思是栏目设置中排序方式为空的话就默认用发布时间倒序排序，如果是不为空的话呢就使用栏目设置的排序；</p>
<pre class="php" name="code">
//排序
if(empty($class_r[$classid][reorder]))
{
	$addorder="newstime desc";
}
else
{
	$addorder=$class_r[$classid][reorder];
}
</pre>
<h3>三、总结</h3>
<p>1.以会员信息置顶为例如果使用外置字段作为置顶字段，可以在栏目设置中添加排序选项，这样减少了修改系统文件<br />
2.不同模型排序，复杂模型排序同样可以使用栏目设置的排序选项，方便；<br />
3.不更改文件并且系统参数设置使用制定排序则置顶排序永远高于栏目设置的排序设置<br />
4.必要的时候可以更改ReturnSetTopSql(&#8216;list&#8217;)与$addorder前后顺序满足特殊排序需要（其他排序选项高于系统排序情况下）<br />
<font color="red">5.最好的办法就是后台系统设置不设置置顶项参与排序，而在栏目设置中自己定义排序字段</font></p>
<h3>四、相关文章推荐</h3>
<p><a href="http://www.trylife.cn/ecms-unkonwn-template-skill-2/">帝国CMS模板不为人知的技巧2 – 对系统设置的重新赋值</a><br />
<a href="http://www.trylife.cn/ecms-template-language-evaluation/">帝国CMS模板不为人知的技巧 – 对语言包重新赋值应用</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-user-order/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>《帝国CMS 会员信息加粗/加色/置顶》 插件</title>
		<link>http://www.trylife.cn/ecms-member-strong-hightlight-top-plugin/</link>
		<comments>http://www.trylife.cn/ecms-member-strong-hightlight-top-plugin/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 06:43:22 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS信息加色]]></category>
		<category><![CDATA[帝国CMS信息置顶]]></category>
		<category><![CDATA[帝国CMS置顶插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1256</guid>
		<description><![CDATA[一、帝国CMS 会员信息加粗/加色/置顶 展示 和以前做的有些不同,以前只做的是帝国CMS系统外置功能，就是不和系统的信息加色/加粗/置顶相关联的；以前《帝国CMS会员信息加色/置顶/加粗》地址：http://bbs.phome.net/showthread-13-115085-0.html；此版本客户要求按着系统内置的加粗/加色/置顶；于是出现新版本的截图如下： 二、帝国CMS 会员信息加粗/加色/置顶 相关分享 帝国CMS不为人知的技巧 – 自定义列表排序项]]></description>
			<content:encoded><![CDATA[<h3>一、帝国CMS 会员信息加粗/加色/置顶 展示</h3>
<p>和以前做的有些不同,以前只做的是帝国CMS系统外置功能，就是不和系统的信息加色/加粗/置顶相关联的；以前《帝国CMS会员信息加色/置顶/加粗》地址：http://bbs.phome.net/showthread-13-115085-0.html；此版本客户要求按着系统内置的加粗/加色/置顶；于是出现新版本的截图如下：<br />
<img class="size-full wp-image-1257 aligncenter" title="mtop-20100920-1" src="http://www.trylife.cn/wp-content/uploads/2010/09/mtop-20100920-1.jpg" alt="" width="585" height="496" /></p>
<p><img class="alignnone size-full wp-image-1261" title="mtop-20100920-2" src="http://www.trylife.cn/wp-content/uploads/2010/09/mtop-20100920-2.jpg" alt="" width="500" height="343" /></p>
<h3>二、帝国CMS 会员信息加粗/加色/置顶 相关分享</h3>
<p><a href="http://www.trylife.cn/ecms-user-order/" target="_blank">帝国CMS不为人知的技巧 – 自定义列表排序项</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-member-strong-hightlight-top-plugin/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ReplaceListVars() 帝国CMS函数</title>
		<link>http://www.trylife.cn/replacelistvars-ecms-functions/</link>
		<comments>http://www.trylife.cn/replacelistvars-ecms-functions/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 16:46:28 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS插件]]></category>
		<category><![CDATA[帝国CMS模板]]></category>
		<category><![CDATA[帝国CMS函数]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=1134</guid>
		<description><![CDATA[函数：ReplaceListVars() 功能：替换列表模板/标签模板/搜索模板 位置：帝国CMS e/class/connect.php 例子一：最新信息图标 例子二：N分钟前信息 个性时间显示 修改例子一：最新信息 new图标 1.准备个图标放在e/trylife/common/images/title_new.gif 2.ReplaceListVars()函数体内 return $listtemp; 代码上方加入如下代码： $new_icon=''; if((time()-$r[newstime])&#60;86400) { $new_icon='&#60;img src="'.$public_r[newsurl].'e/trylife/common/images/title_new.gif" /&#62;'; } $listtemp=str_replace('[!--NewIcon--]',$new_icon,$listtemp); 3.列表模板VAR合适位置加入[!--NewIcon--] 5.刷新列表（动态列表就不用刷新了） 修改例子二：多少分钟前信息 1.e/class/userfun.php加入如下函数 //多少小时以前 function trylife_TimePass($newstime,$formatdate) { //过去的秒钟数 $p=time()-$newstime; if($p&#60;60) { return ''.$p.'秒前'; } elseif($p&#60;3600) { return ''.floor($p/60).'分钟前'; } elseif($p&#60;86400) { return ''.floor($p/3600).'小时前'; } elseif($p&#60;2592000)//30天 { return ''.floor($p/86400).'天前'; } else { return [...]]]></description>
			<content:encoded><![CDATA[<p><strong>函数：</strong>ReplaceListVars()<br />
<strong> 功能：</strong>替换列表模板/标签模板/搜索模板<br />
<strong> 位置：</strong>帝国CMS e/class/connect.php</p>
<div>
<div style="float:left; text-align:center;;">
<img class="alignnone size-full wp-image-1139" title="new_icon_demo" src="http://www.trylife.cn/wp-content/uploads/2010/08/new_icon_demo.jpg" alt="" width="310"  /></p>
<p><b>例子一：最新信息图标</b></p>
</div>
<div style="float:right; text-align:center;">
<img class="alignnone size-full wp-image-1152" title="ecms_min_ago" src="http://www.trylife.cn/wp-content/uploads/2010/08/ecms_min_ago.jpg" alt="" width="310"/></p>
<p><b>例子二：N分钟前信息 个性时间显示</b></p>
</div>
<div style="clear:both"></div>
</div>
<p><span id="more-1134"></span></p>
<h3>修改例子一：最新信息 new图标<img class="alignnone size-full wp-image-1137" title="title_new" src="http://www.trylife.cn/wp-content/uploads/2010/08/title_new.gif" alt="" width="27" height="9" /></h3>
<p>1.准备个图标放在e/trylife/common/images/title_new.gif<br />
2.ReplaceListVars()函数体内 <span style="color: #008000;">return $listtemp;</span> 代码上方加入如下代码：</p>
<p><code><br />
$new_icon='';<br />
if((time()-$r[newstime])&lt;86400)<br />
{<br />
$new_icon='&lt;img src="'.$public_r[newsurl].'e/trylife/common/images/title_new.gif" /&gt;';<br />
}<br />
$listtemp=str_replace('[!--NewIcon--]',$new_icon,$listtemp);<br />
</code></p>
<p>3.列表模板VAR合适位置加入[!--NewIcon--]<br />
5.刷新列表（动态列表就不用刷新了）</p>
<h3>修改例子二：多少分钟前信息</h3>
<p>1.e/class/userfun.php加入如下函数</p>
<pre class="php" name="code">//多少小时以前
function trylife_TimePass($newstime,$formatdate)
{
	//过去的秒钟数
	$p=time()-$newstime;

	if($p&lt;60)
	{
		return '<span style="color: red;"><strong>'.$p.'</strong>秒前</span>';
	}
	elseif($p&lt;3600)
	{
		return '<span style="color: green;"><strong>'.floor($p/60).'</strong>分钟前</span>';
	}
	elseif($p&lt;86400)
	{
		return '<span style="color: blue;"><strong>'.floor($p/3600).'</strong>小时前</span>';
	}
	elseif($p&lt;2592000)//30天
	{
		return '<span style="color: gray;"><strong>'.floor($p/86400).'</strong>天前</span>';
	}
	else
	{
		return format_datetime($newstime,$formatdate);
	}

}
</pre>
<p>2.ReplaceListVars() 函数体内修改片段</p>
<pre class="php" name="code">		elseif($f=='newstime')//时间

		{

			//$value=date($formatdate,$value);

			//$value=format_datetime($value,$formatdate);
			$value=trylife_TimePass($value,$formatdate);

			$spf=1;

		}
</pre>
<h3>讨论：</h3>
<p>1.实现例子中效果的方法很多，比如使用列表模板VAR支持动态代码 在模板VAR中进行判断<br />
2.如果不是整站需要此类的功能，还是讨论1中的方法会节省整体效率<br />
3.ReplaceListVars()支持对列表模板/标签模板/搜索模板的替换，其他情况下比如使用灵动标签的情况还需要重写相同代码到模板中，使用情况多的话，还是将返回图标功能写成函数定义到e/class/userfun.php中，这样就可以重复使用～～<br />
4.例子二 实际应用页面生成的是HTML的话 用JS更为合理～～ 节省资源和时间实时</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/replacelistvars-ecms-functions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>博客ping好友设想 &#8211; 独立博客的P2P SNS</title>
		<link>http://www.trylife.cn/blog-friend-ping/</link>
		<comments>http://www.trylife.cn/blog-friend-ping/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 20:51:45 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[P2P SNS]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[ping 服务]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[博客]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=942</guid>
		<description><![CDATA[引言：trylife自从7月31日看了卢松松的就这样从草根到知名的转变之后对“评论推广”这种方式产生了兴趣，大量在Google Reader订阅推荐博客，每天看完未为止，能做到经评的也就花时间认真评论了下例如：海天的“大家帮忙选个LOG”，出于能力/领域等多方面的问题没有那么多能写的出评论的，这样就随便评了下或者无耻的用了如下关键字 沙发 坐大腿  第一次来 …… 出于博客评论前辈们的习惯照顾在4天时间约140/2的评论数（因为将近每篇都回复所以处以2了） 为了更快速的得到订阅内容，trylife本地装了Liferea设置每10分钟跑一次，这样也大大提高了沙发和前排的可能性 &#8211; -！通过评论的邮件通知回采博主的评论；后来觉得有些吃力，为了能得到一个好的及时的互动我想了以下几个问题： 1.好友博客之间ping 前边写了一篇帝国CMS ping 插件 之后思考PING可不可为博友之间交互做点事情，让SNS的意义拓展到分布居住的独立博客之间，出于独立博客都有自己的空间/服务器，可以不设立中转服务器，实行P2P（点对点）的通知；大致功能设想如下： 1.1最新好友最新博文ping 博友发布博文我们可以不再订阅了，而是通过好友的PING更快知道好友更新了文章，我们可以最快速度阅读，和评论互动； 1.2回复评论ping 现在看评论回复都是跑到邮件里看回复提醒，没有邮件回复的就只能回访踩点了，另外已经看过文章了回访到文章内容也进行评论除了增加PV以外也没有特别打的意思，当然还有去看其他的评论内容可以去去内容页看，也可以订阅某文章所有评论，我想这个也可以ping过来；（这么一折腾貌似服务器压力大哦，先想实现再想压力和效率囧） 1.3其他 1.3.1.返回ping结果,不成功则进入失败ping列，闲暇重新进行ping或手动重新ping 1.3.2.其他功能ping 2.SNS的体现 出于1中的功能，好友数据 好友最新博文 评论数据 评论回复数据 等可以具有SNS的交互内容基础了，那么在博客中下面的内容就可以出现了： 2.1我的好友：当然有有好友分组，好友备注，点击链接添加好友，隐藏好友分组等等 2.2我的足迹：访问足迹，评论足迹 当然也有隐私可以设置 2.3转播/分享/ETC：这些也就不说了大家都了解 3.B/S客户端 3.0.B/S加速了交互(不用打开浏览器拉) 3.1.始终还是需要一个客户端的，用于接收WEB所有接收的数据到桌面，方便及时通知和浏览； 3.2.订阅期传送门出发都没有告诉你我是从www.trylife.cn来的，B/S客户端哪怕是伪造也好，也要来一个这个； 3.2.POST回复数据到服务器 3.3.当然也有可能有其他拓展 eg:分享音乐 分享状态(我勒个去，令一个蚂蚁QQ出现了，你菜不死我因为被需要) 4.其他 4.-1：肯定早有人想到的，为啥人家没做？ 4.0.其实已经有相关的SNS微博做了这类事情只不过是通过RSS的订阅更新，eg:嘀咕 4.1.除了P2P ping 好友同样可以ping主服务器进行更广泛的交流，服务会把在官方网站的评论ping回给你 4.2.我为什么不住在SNS网站上，而选择这样的sns ping呢，我想独立博客的你一定知道的 ^ ^ 4.3.特殊独立的人员聚集总是有特别的效果 4.4.商业价值吗？你想他会是什么呢？ 4.5.非独立博客的用户被排挤？设想官方也会给他们一个帐号呢～ 4.6.这么多聊天工具很繁杂呢？相信当麻花藤挂了之后，扣扣也可以有API插件聚合出，你可以有更多联想 4.7.又是一个浮躁的应用？微博盛行，大家已经意识到自己在微博上要么是看炮弹要么是吃快餐，生活还是空洞的；我们更有营养，我更新博客了，我不是天天在这刷屏，我更新出来的都是非化学的营养精华～ [...]]]></description>
			<content:encoded><![CDATA[<p><strong>引言：</strong>trylife自从7月31日看了卢松松的<a rel="bookmark" href="http://www.lusongsong.com/reed/219.html#from?http://www.trylife.cn/blog-friend-ping/" target="_blank">就这样从草根到知名的转变</a>之后对“评论推广”这种方式产生了兴趣，大量在Google Reader订阅推荐博客，每天看完未为止，能做到经评的也就花时间认真评论了下例如：海天的“<a href="http://blog.haitianhome.com/help-logo.html#comment-5676" target="_blank">大家帮忙选个LOG</a>”，出于能力/领域等多方面的问题没有那么多能写的出评论的，这样就随便评了下或者无耻的用了如下关键字 <strong>沙发 坐大腿  第一次来 ……</strong> 出于博客评论前辈们的习惯照顾在4天时间约140/2的评论数（因为将近每篇都回复所以处以2了）</p>
<p>为了更快速的得到订阅内容，trylife本地装了Liferea设置每10分钟跑一次，这样也大大提高了沙发和前排的可能性 &#8211; -！通过评论的邮件通知回采博主的评论；后来觉得有些吃力，为了能得到一个好的及时的互动我想了以下几个问题：</p>
<h3>1.好友博客之间ping</h3>
<p>前边写了一篇<a title="Permanent Link to 帝国CMS ping 插件 [未完]" rel="bookmark" href="../ecms-ping-plugin/" target="_blank">帝国CMS ping 插件 </a>之后思考PING可不可为博友之间交互做点事情，让SNS的意义拓展到分布居住的独立博客之间，出于独立博客都有自己的空间/服务器，可以不设立中转服务器，实行P2P（点对点）的通知；大致功能设想如下：</p>
<p><strong>1.1最新好友最新博文ping</strong><br />
博友发布博文我们可以不再订阅了，而是通过好友的PING更快知道好友更新了文章，我们可以最快速度阅读，和评论互动；</p>
<p><strong>1.2回复评论ping</strong><br />
现在看评论回复都是跑到邮件里看回复提醒，没有邮件回复的就只能回访踩点了，另外已经看过文章了回访到文章内容也进行评论除了增加PV以外也没有特别打的意思，当然还有去看其他的评论内容可以去去内容页看，也可以订阅某文章所有评论，我想这个也可以ping过来；（这么一折腾貌似服务器压力大哦，先想实现再想压力和效率囧）</p>
<p><strong>1.3其他</strong><br />
1.3.1.返回ping结果,不成功则进入失败ping列，闲暇重新进行ping或手动重新ping<br />
1.3.2.其他功能ping</p>
<h3>2.SNS的体现</h3>
<p>出于1中的功能，好友数据 好友最新博文 评论数据 评论回复数据 等可以具有SNS的交互内容基础了，那么在博客中下面的内容就可以出现了：<br />
<strong>2.1我的好友：</strong>当然有有好友分组，好友备注，点击链接添加好友，隐藏好友分组等等<br />
<strong>2.2我的足迹：</strong>访问足迹，评论足迹 当然也有隐私可以设置<br />
<strong>2.3转播/分享/ETC：</strong>这些也就不说了大家都了解</p>
<h3>3.B/S客户端</h3>
<p>3.0.B/S加速了交互(不用打开浏览器拉)<br />
3.1.始终还是需要一个客户端的，用于接收WEB所有接收的数据到桌面，方便及时通知和浏览；<br />
3.2.订阅期传送门出发都没有告诉你我是从www.trylife.cn来的，B/S客户端哪怕是伪造也好，也要来一个这个；<br />
3.2.POST回复数据到服务器<br />
3.3.当然也有可能有其他拓展 eg:分享音乐 分享状态(我勒个去，令一个蚂蚁QQ出现了，你菜不死我因为被需要)</p>
<h3>4.其他</h3>
<p>4.-1：肯定早有人想到的，为啥人家没做？<br />
4.0.其实已经有相关的SNS微博做了这类事情只不过是通过RSS的订阅更新，eg:嘀咕<br />
4.1.除了P2P ping 好友同样可以ping主服务器进行更广泛的交流，服务会把在官方网站的评论ping回给你<br />
4.2.我为什么不住在SNS网站上，而选择这样的sns ping呢，我想独立博客的你一定知道的 ^ ^<br />
4.3.特殊独立的人员聚集总是有特别的效果<br />
4.4.商业价值吗？你想他会是什么呢？<br />
4.5.非独立博客的用户被排挤？设想官方也会给他们一个帐号呢～<br />
4.6.这么多聊天工具很繁杂呢？相信当麻花藤挂了之后，扣扣也可以有API插件聚合出，你可以有更多联想<br />
4.7.又是一个浮躁的应用？微博盛行，大家已经意识到自己在微博上要么是看炮弹要么是吃快餐，生活还是空洞的；我们更有营养，我更新博客了，我不是天天在这刷屏，我更新出来的都是非化学的营养精华～</p>
<h3>#End.Exp:欢迎大家持各种关键观点进行评论</h3>
<p>转载署名出处原文地址：<a href="http://www.trylife.cn/blog-friend-ping/">http://www.trylife.cn/blog-friend-ping/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/blog-friend-ping/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>帝国CMS ping 插件 [未完]</title>
		<link>http://www.trylife.cn/ecms-ping-plugin/</link>
		<comments>http://www.trylife.cn/ecms-ping-plugin/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 21:41:03 +0000</pubDate>
		<dc:creator>TryLife</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[帝国CMS]]></category>
		<category><![CDATA[帝国CMS二次开发]]></category>
		<category><![CDATA[帝国CMS SEO插件]]></category>
		<category><![CDATA[帝国CMS插件]]></category>

		<guid isPermaLink="false">http://www.trylife.cn/?p=906</guid>
		<description><![CDATA[帝国CMS ping 插件]]></description>
			<content:encoded><![CDATA[<h3>一 什么是PING服务</h3>
<p>过程上简单的讲就是没发布一个新文章，都会通知搜索引擎(google baidu等等)，搜索引擎会很快派来蜘蛛抓取你的新文章，这样会提高收录的速度（特殊网站除外）;<span style="color: #ff0000;">都是针对博客的，不知道收录方面对其他CMS有什么效果；</span></p>
<p><strong>以上是trylife个人的解释，下面是COPY百度的：</strong>ping是基于XML_RPC标准协议的更新通告服务，是用于blog在内容更新时通知百度blogsearch及时进行抓取、更新的方式。百度 blogsearch在成功接受到ping以后，会立刻进行抓取并更新。使用ping服务，可以让百度blogsearch在第一时间抓取到您博客上的新 内容。</p>
<p><strong>下面是COPY google的：</strong>通过 Google“博客搜索”Ping API, 用户可以程序化的方式将博客内容的更新通知给 Google“博客搜索”引擎。这对于经常更新博客内容的用户尤其有用。博客服务提供商的管理人员也可以利用此API将其平台上的博客内容变化向 Google 通告，以便 Google“博客搜索”及时抓取来自这一服务提供商的最新内容。为设置对 Google“博客搜索”的自动 Ping 机制，请按照如下所述设置XML-RPC客户端或REST客户端以发送请求。您可以任选一种方法进行通知；两者都将按照相同的方式进行处理。</p>
<h3>二 帝国CMS PING插件功能需求</h3>
<p>1.是否开启<br />
2.PING服务地址列表<br />
3.功能支持栏目<br />
4.动作选项：后台录入 前台投稿 采集更新 采集器更新<br />
5.针对采集器的设置(针对其他操作增加PING功能)</p>
<h3>三 帝国CMS PING插件实现思路</h3>
<p>功能的实现思路很简单，通过在（后台添加信息/会员投稿/采集入库）函数体内信息录入成功 和 返回代码前加入PING功能函数；注意：采集入库是循环录入只有所有需要入库内容循环完才有返回成功代码，所以帝国自带的采集入库是在循环录入代码中加入PING函数的；另外采集器是通过前台/后台重复投稿脚本来实现的，我们要在采集器的脚本中加入我们的PING函数；我们按着其他情况来对待。</p>
<p><strong>数据库:</strong><br />
数据库这里我们设置两个字段id,item每行记录一个功能的设置；主要针对增加PING功能的可拓展性选择这样的记录方式；固定操作动作可以使用行记录比如帝国CMS的phome_enewspublic(系统设置记录表)</p>
<p><strong>新建[文件/函数/目录]：</strong><br />
1.根据PING功能写函数 (PING函数 缓存更新函数 插件设置函数)<br />
2.函数定义在一个新文件里这样对于插件作者备份查看函数方便 比如：e/trylife/ping/function.php<br />
3.将2中的文件require到e/userfun.php (建议大家都这样做)<br />
4.其他文件 插件设置文件e/trylife/ping/index.php</p>
<p><strong>更改[函数]：</strong><br />
主要更改 后台/前台/采集 增加信息函数 在函数成功printerror()前加入我们的PING函数就可以；</p>
<p><strong>缓存文件：</strong><br />
1.设置缓存<br />
2.PING地址缓存</p>
<h3>四 帝国CMS PING插件 制作</h3>
<p>待续 <span style="color: #ff0000;">[最近忙，先写文章放到这，后面有时间去挖掘实现，再看看自己过段时间的想法是不是一样]</span></p>
<h3>五 帝国CMS PING插件 测试</h3>
<p>针对SEO和不同站点收录速度的测试不好做，测试主要针对一个已经被收站，PING后蜘蛛来的速度来评估；主要记录文章发布时间和蜘蛛来的时间；</p>
<h3>六 帝国CMS PING插件 讨论&amp;总结</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.trylife.cn/ecms-ping-plugin/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
	</channel>
</rss>

