Phpcms 2008 Beta1 测试版试用测评报告

Filed under: phpcms专栏 | No Comments »
Posted on

新版的phpcms2008终于浮出水面,我们的助易测试团队迫不及待的对其进行了试用,并用最快的时间完成了测评报告,和所有关注phpcms2008的人分享我们的心得。

前言

2008年9月1日,经过并购风波之后,国内著名内容管理系统phpcms开发团队终于拿出了他们转投新东家的第一份成绩单——phpcms2008 beta1版,相比其他cms发版时大张旗鼓宣传不同,这次测试版的发布相当的低调——发版时间选择在凌晨,官方网站上也没有任何的宣传消息。透过从phpcms论坛以及开发团队所发表的功能说明中,phpcms2008增加很多令人期待的功能,因此虽然此次发布的仅仅是测试版,还是引起了广大站长的关注,助易网测评小组也从phpcms官方网站下载程序并对其进行试用,究竟新的phpcms2008会是什么样子?有什么样的改变?增强了哪些功能?助易网测评小组经评测后给出了自己的答案。

阅读全文 »

Tags : ,

PHPCMS 2007 完全二次开发手册(chm格式,支持索引、查询)

Filed under: phpcms专栏 | No Comments »
Posted on

收集整理:肥龙龙(635249)/宇宏(4598685)/疯狂兔不死鸟(80774505)
博客:http://www.blog-dragon.com/
更多内容:http://www.cmshelp.com.cn/
技术支持群:48608218

下载:PHPCMS完全二次开发手册

Tags : ,

phpcms 地区设置AJAX中文参数传递的错误问题分析及解决

Filed under: phpcms专栏 | 1 Comment »
Posted on

近日研究使用phpcms sp6,当进行会员管理设置会员所在地的时候,发现当切换省份时,对应的城市及城区的下拉菜单中会出现html输出的500错误信息,对应会出现的问题的代码如下(/member/admin/templates/member_edit.tpl.php):

<select name="province" id="province" onChange="javascript:loadcity(this.value);">
<option value="0" selected="selected">请选择</option>
</select>
 
<select name="city" id="city" onChange="javascript:loadarea($('province').value, this.value);">
<option value="0" selected="selected">请选择</option>
</select>
 
<select name="area" id="area">
<option value="0" selected="selected">请选择</option>
</select>
<script language="javascript">
<!--
var phpcms_path = '<?=PHPCMS_PATH?>';
var selectedprovince = '<?=$province?>';
var selectedcity = '<?=$city?>';
var selectedarea = '<?=$area?>';
//-->

</script>
<script type="text/javascript" src="<?=PHPCMS_PATH?>include/js/area.js"></script>

分析原因,是因为我的调试环境不支持ajax的GET方法传递中文参数(这个问题可能在一些纯中文的环境中被避免),问题出现在area.js这个文件。解决此问题,只需要将中文参数通过UrlEncode的编码再进行传递即可。解决方法如下:
修改/include/js/area.js文件如下:

var url = phpcms_path+"area.php";
 
function loadprovince()
{
    
var pars = "action=province";
    
var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: setprovince});
}
 
//urlencode编码
String.prototype.UrlEncode = function()
{
    
var str = this;
    
str = str.replace(/./g,function(sHex)
    
{
        
window.EnCodeStr = "";
        
window.sHex = sHex;
        
window.execScript('window.EnCodeStr=Hex(Asc(window.sHex))',"vbscript");
        
return window.EnCodeStr.replace(/../g,"%$&");
    
});
    
return str;
}
 
function setprovince(Request)
{
    
var text = Request.responseText;
    
var provinces = text.split(",");
    
var currprovince = enterValue(provinces, $('province'));
    
loadcity(currprovince);
}
 
function loadcity(province)
{
    
var pars = "action=city&province=" + province.UrlEncode();
    
var cAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: setcity});
}
 
function setcity(Request)
{
    
var text = Request.responseText;
    
var citys = text.split(",");
    
var currcity = enterValue(citys, $('city'));
    
loadarea($('province').value, currcity);
}
 
function loadarea(province,city)
{
    
var pars = "action=area&province="+ province.UrlEncode() +"&city="+ city.UrlEncode();
    
var aAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: setarea});
}
 
function setarea(Request)
{
    
var text = Request.responseText;
    
var areas = text.split(",");
    
enterValue(areas, $('area'));
}
 
function enterValue(cell,place)
{
    
clearPreValue(place);
    
var selectedval = cell[0];
    
for(i=0; i<cell.length; i++)
    
{
        
isselected = addOption(place, cell[i], cell[i]);
        
if(isselected)
        
{
            
place.options[i].selected = true;
            
selectedval = cell[i];
        
}
    
}
    
return selectedval;
}
 
function addOption(objSelectNow,txt,val)
{
    
var objOption = document.createElement("option");
    
objOption.text = txt;
    
objOption.value = val;
    
objSelectNow.options.add(objOption);
    
return objOption.value == selectedprovince || objOption.value == selectedcity || objOption.value == selectedarea;
}
 
function clearPreValue(pc)
{
    
while(pc.hasChildNodes())
    
pc.removeChild(pc.childNodes[0]);
}
 
loadprovince();

其中关键部分为新增函数UrlEncode,为中文参数进行编码。请自行理解。

have fun!

Tags : , ,