博客升级完毕(PJBlog3 v3.2.8.352修改合集)

千呼万唤之中,终于升级到最新版了,话说是最新版,却是PJ一年前的更新了.因为是非正式版,所以等了这么久.另外,本版(V3.2.8.352)也存在很多问题,现一一说明解决方法如下:

========2010.12.20 新增加的修改=========
自PJBlog3以来,一直存在草稿部分有问题,今天稍微分析了一下代码,本地测试可以解决问题.
问题描述:
1、编写草稿之后,点击保存草稿,然后返回的页面提示和链接有问题(这个问题我以前写过博文解决,可点击进入查看).
2、顺便说下,凡是由草稿修改然后保存为正式博文的,首页的"固定链接"至少20分钟内都是无法打开的,因为Application周期默认为20分钟.
3、经过第1步修改之后的链接,点进去依然出错.但是发现过大约20分钟之后就正常了.为什么?分析代码,跟踪参数之后,发现Application一直出于清空状态(值为空""),所以才会出现页面上的提示"function.asp中的RedirectUrl()函数中参数Url必须不为空.那么怎么修改呢?
方法如下:
打开/common/function.asp文件,搜索"function caload(id)",将它下面的一行代码
If not IsEmpty(Application(CookieName&"_articleUrl_"&id)) then
替换为
If not IsEmpty(Application(CookieName&"_articleUrl_"&id)) and Application(CookieName&"_articleUrl_"&id) <> "" then
保存即可.

如有兴趣的朋友,欢迎去我的博客参与讨论此问题.博客地址:http://www.heycoffee.com
========2010.12.20 End,下面继续=========

1、CODE执行BUG及查看更多连接的修改
引用内容 引用内容
打开cls_logAction.asp,找到(记得,有两处。)
Temp1 = Replace(Temp1, "<$ArticleContent$>", UnCheckStr(UBBCode(HtmlEncode(log_View("log_Content")), Mid(log_View("log_ubbFlags"), 1, 1), Mid(log_View("log_ubbFlags"), 2, 1), Mid(log_View("log_ubbFlags"), 3, 1), Mid(log_View("log_ubbFlags"), 4, 1), Mid(log_View("log_ubbFlags"), 5, 1))))
修改成:
Temp1 = Replace(Temp1, "<$ArticleContent$>", UBBCode(HtmlEncode(log_View("log_Content")), Mid(log_View("log_ubbFlags"), 1, 1), Mid(log_View("log_ubbFlags"), 2, 1), Mid(log_View("log_ubbFlags"), 3, 1), Mid(log_View("log_ubbFlags"), 4, 1), Mid(log_View("log_ubbFlags"), 5, 1)))
引用内容 引用内容
查看更多连接不对的修改方法:
打开cls_logAction.asp,找到(大约1411行)
If Len(log_View("log_Tag"))>0 Then
        Temp2 = Replace(Temp2, "<$log_tag$>", "<p class=""tags"">Tags: "&getTags.filterHTML(log_View("log_Tag"))&"</p>")
    Else
        Temp2 = Replace(Temp2, "<$log_tag$>", "")
    End If

    If log_View("log_ComOrder") Then comDesc = "Desc" Else comDesc = "Asc" End If
在它下面添加一个定义变量代码
Dim var_getCate_cate_Part
    var_getCate_cate_Part = ""
找到下面的代码,有2处(大约1426行,及1438行)
Temp2 = Replace(Temp2, "<$log_readMore$>", "<p><a href=""article/"&LogID&".htm"" class=""more"">查看更多...</a></p>")
分别替换为
If getCate.cate_Part <> "" Then
                    var_getCate_cate_Part = getCate.cate_Part & "/"
                End If
                Temp2 = Replace(Temp2, "<$log_readMore$>", "<p><a href=""article/"& var_getCate_cate_Part & LogID &".html"" class=""more"">查看更多...</a></p>")


2、错位文字"请稍候"修改.
用Dreamweaver等软件在所有网站文件里面搜索"请稍后",找到后,修改错误的"请稍后"为"请稍候",正确的留着.记得其中最后有一个"请稍后"是正常的,但在它后面紧跟着的"在重试",应该是"再重试".

3、内容页关键字后多余的,修改
引用内容 引用内容
cls_logAction.asp文件
Temp1 = Replace(Temp1, "<$keywords$>", trim(log_View("log_KeyWords"))&",")
修改为:
Temp1 = Replace(Temp1, "<$keywords$>", trim(log_View("log_KeyWords")))
可以去掉内容页关键字中多余的","


4、keywords的多余关键字删除
在所有目录中搜索"PuterJam,Blog,ASP,designing,with"...,删除.
个人认为此举并非修改PJ的版权,而是关键字堆积太多,容易被搜索引擎惩罚误认为是垃圾站或作弊站,还是精炼并具有自己的特色为好.该保留的版权保留,例如底部的版权信息.

5、让PJBlog发表日志时间和编辑日志时间显示时、分、秒的方法
PJBlog在日志标题只显示发表日志的日期,而时间却不显示。这样,在发表日志的具体时间就无法显示,由于是一些要求时效性比较强的地方就不能满足需要。所幸,通过修改代码可以实现时、分、秒的显示。方法如下:
引用内容 引用内容
打开class\cls_default.asp,找到
<h2 class="ContentAuthor">作者:<%=webLogArr(2,PageCount)%>  日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d")%></h2>
修改为:
<h2 class="ContentAuthor">作者:<%=webLogArr(2,PageCount)%>  日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d H:I:S")%></h2>
找到
<a href="<%=logLink%>" title="作者:<%=webLogArr(2,PageCount)%> 日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d")%>">
修改为:
<a href="<%=logLink%>" title="作者:<%=webLogArr(2,PageCount)%> 日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d H:I:S")%>">
打开class\cls_article.asp,找到
<h2 class="ContentAuthor">作者:<%=log_ViewArr(5,0)%> 日期:<%=DateToStr(log_ViewArr(9,0),"Y-m-d")%></h2>
修改为:
<h2 class="ContentAuthor">作者:<%=log_ViewArr(5,0)%> 日期:<%=DateToStr(log_ViewArr(9,0),"Y-m-d H:I:S")%></h2>
找到
<span class="commentinfo">[<%=DateToStr(commArr(3,Pcount),"Y-m-d H:I A")%>
修改为:
<span class="commentinfo">[<%=DateToStr(commArr(3,Pcount),"Y-m-d H:I:S")%>
找到:
<span class="commentinfo">[<%=DateToStr(commArr(3,Pcount),"Y-m-d H:I A")%>
修改为:
<span class="commentinfo">[<%=DateToStr(commArr(3,Pcount),"Y-m-d H:I:S")%>
打开class\cls_logAction.asp,找到:
weblog("log_Modify")="[本日志由 "&memName&" 于 "&DateToStr(now(),"Y-m-d H:I A")&" 编辑]"
修改为:
weblog("log_Modify")="[本日志由 "&memName&" 于 "&DateToStr(now(),"Y-m-d H:I:S")&" 编辑]"
找到
(Temp1,"<$log_PostTime$>",DateToStr(log_View("log_PostTime"),"Y-m-d")
修改为:
(Temp1,"<$log_PostTime$>",DateToStr(log_View("log_PostTime"),"Y-m-d H:I:S")
找到
(Temp2,"<$log_PostTime$>",DateToStr(log_View("log_PostTime"),"Y-m-d")
修改为:
(Temp2,"<$log_PostTime$>",DateToStr(log_View("log_PostTime"),"Y-m-d H:I:S")
(注:该修改根据自己需要来做,如果上面有部分实在找不到,就跳过.)

6、查看次数"统计代码修复(兼:所有静态化日志内页报错,common/common.js第669行错误:"'1'为空或不是对象")解决(两个其实为一个问题):
打开common/common.js,到第669行,找到:
var Guest = /Guest=(.*)/.exec(unescape(decodeURI(n)));

                        var ComRe = Guest[1].json();

                        if (ComRe.record){

                                try{

                                        if (document.forms[0].username) document.forms[0].username.value = ComRe.username;

                                        if (document.forms[0].Email) document.forms[0].Email.value = ComRe.useremail;


                                        if (document.forms[0].WebSite) document.forms[0].WebSite.value = ComRe.userwebsite;

                                }catch(e){if (e.description.length > 0) alert(e.description);}

                        }

                }
修改为:
var Guest = /Guest=true\|\-\|(.*)\|\+\|/.exec(unescape(n));

                        if (Guest != null && Guest[1].indexOf("|$|") != -1){

                                var SplitGuest = Guest[1].split("|$|");

                                try{

                                        if (document.forms[0].username) document.forms[0].username.value = escape(SplitGuest[0]);

                                        if ($("editMask")) $("editMask").value = escape(SplitGuest[1]);

                                        if (document.forms[0].Message) document.forms[0].Message.value = escape(SplitGuest[1]);

                                }catch(e){if (e.description.length > 0) alert(e.description);}

                        }

                }
,以上实为替换为旧版统计js.

7、352版本的相关日志翻页有问题,而且页码js报错(相关日志超过1页的静态内页才会js报错,其实js报错和相关日志翻页是同一个问题),pj论坛上有针对352修改的帖子,但只修改了翻页问题,未加上相关日志"全部显示"模式的代码,所以还不如还原为170版本的相关日志的显示方法,尽管在请求次数和显示速度上比352的稍逊,但起码功能是ok的.以下是还原为170"相关日志"的修改方法.修改完毕之后到后台全部重新生成静态日志、并清除服务器缓存、删除浏览器的临时文件、刷新页面即可看到效果.
a、上传170版本中的common\ajax.js文件到352同样目录位置.或者复制下面的ajax.js全文到文本文件,保存为ajax.js上传也可以.
ajax.js全文:
//Author:evio

//edit by evio start  AJAX 模式
//创建HTTPREQUEST对象系列
function echo(obj,html)
{
    $(obj).innerHTML=html;
}
function fopen(obj)
{
    $(obj).style.display="";
}
function fclose(obj)
{
    $(obj).style.display="none";
}
function CreateXMLHTTP()
{
    var xmlhttp=false;
    try    {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
          try {
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (e) {
               xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
          xmlhttp = new XMLHttpRequest();
                if (xmlhttp.overrideMimeType) {//设置MiME类别
            xmlhttp.overrideMimeType('text/xml');
        }
    }    

    return xmlhttp;    
}
function check(url,obj1,obj2)
{
        
        var xmlhttp = CreateXMLHTTP();
        if(!xmlhttp)
        {
            alert("你的浏览器不支持XMLHTTP!!");
            return;
        }
        xmlhttp.onreadystatechange=requestdata;
        xmlhttp.open("GET",url,true);
        xmlhttp.send(null);
        function requestdata()
        {
            
                fopen(obj1);
                echo(obj1,"<img src='images/loading.gif'>");
                if(xmlhttp.readyState==4)
                {
                    if(xmlhttp.status==200)
                    {
                        if(obj1!=obj2){fclose(obj1);};
                        echo(obj2,xmlhttp.responseText);
                        
                    }
                }
            
        }
}
//edit by evio start
再打开Template\static.htm,找到:
<script type="text/javascript" src="common/AjaxRequest.js"></script>
替换为
<script type="text/javascript" src="common/ajax.js"></script>
<script type="text/javascript" src="common/AjaxRequest.js"></script>
找到
<div class="Content-body" id="related_tag" style="margin-left:25px"></div>
                    <script language="javascript" type="text/javascript">Related(<$LogID$>, 2, related_tag, 1);</script>
替换为
<div class="Content-body" id="wbc_tag" style="margin-left:25px"></div>
                    <script language="javascript" type="text/javascript">check('Getarticle.asp?id=<$LogID$>&blog_postFile=2','wbc_tag','wbc_tag')</script>
b、打开common\function.asp,在最上面添加
'*************'*************************************
'防XSS注入函数 更新于2009-04-21 by evio
'与checkstr()相比, checkxss更加安全
'*************************************
Function Checkxss(byVal ChkStr)
    Dim Str
    Str = ChkStr
    If IsNull(Str) Then
        CheckStr = ""
        Exit Function
    End If
    Str = Replace(Str, "&", "&amp;")
    Str = Replace(Str, "'", "&acute;")
    Str = Replace(Str, """", "&quot;")
    Str = Replace(Str, "<", "&lt;")
    Str = Replace(Str, ">", "&gt;")
    Str = Replace(Str, "/", "&#47;")
    Str = Replace(Str, "*", "&#42;")
    Dim re
    Set re = New RegExp
    re.IgnoreCase = True
    re.Global = True
    re.Pattern = "(w)(here)"
    Str = re.Replace(Str, "$1h&#101;re")
    re.Pattern = "(s)(elect)"
    Str = re.Replace(Str, "$1el&#101;ct")
    re.Pattern = "(i)(nsert)"
    Str = re.Replace(Str, "$1ns&#101;rt")
    re.Pattern = "(c)(reate)"
    Str = re.Replace(Str, "$1r&#101;ate")
    re.Pattern = "(d)(rop)"
    Str = re.Replace(Str, "$1ro&#112;")
    re.Pattern = "(a)(lter)"
    Str = re.Replace(Str, "$1lt&#101;r")
    re.Pattern = "(d)(elete)"
    Str = re.Replace(Str, "$1el&#101;te")
    re.Pattern = "(u)(pdate)"
    Str = re.Replace(Str, "$1p&#100;ate")
    re.Pattern = "(\s)(or)"
    Str = re.Replace(Str, "$1o&#114;")
    re.Pattern = "(\n)"
    Str = re.Replace(Str, "$1o&#114;")
    '----------------------------------
    re.Pattern = "(java)(script)"
    Str = re.Replace(Str, "$1scri&#112;t")
    re.Pattern = "(j)(script)"
    Str = re.Replace(Str, "$1scri&#112;t")
    re.Pattern = "(vb)(script)"
    Str = re.Replace(Str, "$1scri&#112;t")
    '----------------------------------
    If Instr(Str, "e­xpression") > 0 Then
        Str = Replace(Str, "e­xpression", "e&#173;xpression", 1, -1, 0) '防止xss注入
    End If
    Set re = Nothing
    Checkxss = Str
End Function
c、将Getarticle.asp整个文件的内容全选,然后删除,替换为如下代码,其实就是170版本中的Getarticle.asp文件.
<!--#include file="BlogCommon.asp" -->
<!--#include file="common/function.asp" -->
<!--#include file="common/library.asp" -->
<!--#include file="common/upfile.asp" -->
<!--#include file="common/cache.asp" -->
<!--#include file="common/checkUser.asp" -->
<%
Response.expires=-1
Response.AddHeader"pragma","no-cache"
Response.AddHeader"cache-control","no-store"
Session.CodePage=65001
Dim id
id=request("id")
blog_postFile = Cint(Checkxss(request.QueryString("blog_postFile")))
if id<>"" and  isnumeric(id) then  
  Dim wbc_tag,Rs,i,RsT,OutPut,i2,i3,i4,str,ifMore,i2_2,total_rela,page,pagestr,thispage
  Set Rs=conn.execute("Select * from blog_Content where log_ID="&id&"")
  if request("page")<>"" and isnumeric(request("page"))  then
     page=Cint(request("page"))
     if page<1 then page=1
  Else
     page=1
  End if
  thispage=page
  OutPut=""
  total_rela=0
  i2_2=10 '每页显示No.
  i3=(page-1)*i2_2
  if request("act")="more" then i2_2=-1
  ifMore=false
  if not rs.eof then
     wbc_tag=rs("log_tag")
     if wbc_tag<>"" then
        wbc_tag=split(wbc_tag,"}")
        i=0
        i2=0
        'find total
        DO until i>Ubound(wbc_tag)
           Set RsT=conn.execute("Select log_Title,log_id,log_ViewNums from  blog_Content where log_tag like '%"&wbc_tag(i)&"}%' and log_ID<>"&id&" order by log_PostTime desc")
           if not RsT.eof then
              Do until Rst.eof
                  str=split(RsT(0),"(*##*)")(0)
                  If instr(OutPut,str)=0 and wbc_tag(i)<>"" then
                     total_rela=total_rela+1
                  End if
                  Rst.movenext
              Loop
           End if
           Set RsT=nothing
           i=i+1
        Loop
        'pages
        if int((total_rela/i2_2))< total_rela/i2_2 then
           page=(total_rela/i2_2)+1
         Else
           page=int(total_rela/i2_2)
         end if        
         pagestr=""
         i=1
         do until i>page
           if thispage=i then
              pagestr=pagestr&"<strong style='text-decoration:none' title='当前页'>["&i&"]</strong>"
           Elseif abs(thispage-i)<5 then
              pagestr=pagestr&"<a style='cursor:pointer'  title='转到第"&i&"页' onclick=check('Getarticle.asp?id="&id&"&page="&i&"&blog_postFile="&blog_postFile&"','wbc_tag','wbc_tag') >["&i&"]</a>"
           end if
           i=i+1
         Loop
         if page>1 then pagestr=" <div style='margin-top:10px;width:350px;'><strong>分页:</strong> "&pagestr&""
        'show results
        i=0
        i4=0
        Dim urlLink
        DO until i>Ubound(wbc_tag)
           Set RsT=conn.execute("Select log_Title,log_id,log_ViewNums from  blog_Content where log_tag like '%"&wbc_tag(i)&"}%' and log_ID<>"&id&" order by log_PostTime desc")
           if not RsT.eof then
              Do until Rst.eof  or i4=i2_2
                  str=split(RsT(0),"(*##*)")(0)
                  If instr(OutPut,str)=0 and wbc_tag(i)<>"" then
                     if i2>(i3-1) then
                        i4=i4+1
                        if blog_postFile = 2 then
                            urlLink = Alias(RsT(1))
                        else
                            urlLink = "article.asp?id="&RsT(1)
                        end if
                        OutPut=OutPut&"   <li><a href='"&urlLink&"'>"&str&"["&RsT(2)&"]</a></li>"
                     end if
                     i2=i2+1
                  End if
                  Rst.movenext
              Loop
              if not RsT.eof then Ifmore=true
           End if
           Set RsT=nothing
           i=i+1
        Loop
     End if
  End if
  output=output&pagestr
  If Ifmore or thispage<>1 then
     OutPut=OutPut&"<br/><strong>模式:</strong> <a style='cursor:pointer'  onclick=check('Getarticle.asp?id="&id&"&act=more&blog_postFile="&blog_postFile&"','wbc_tag','wbc_tag') >全部显示[共"&total_rela&"个相关文章]</a></div>"
  elseif i2>(i2_2-1)  then
     OutPut=OutPut&"<div style='margin-top:10px;width:350px;'><strong>模式:</strong> <a style='cursor:pointer'  onclick=check('Getarticle.asp?id="&id&"&blog_postFile="&blog_postFile&"','wbc_tag','wbc_tag') >分页显示[共"&total_rela&"个相关文章]</a></div>"
  end if
  OutPut=replace(OutPut,chr(39),chr(34))
  response.Write OutPut
  Set rs=nothing
end if
'*************************************
'自定义路径 by evio
'*************************************
Function Alias(id)
    dim cname,ccate,chtml,ccateID,ccateExec,cnames,ctype,cc
    set cc=conn.execute("select top 1 log_CateID,log_cname,log_ctype from blog_Content where log_ID="&id)
    
    ccateID = cc(0)
    cname = cc(1)
    ctype = cc(2)

    set ccateExec=conn.execute("select Cate_Part from blog_Category where cate_ID="&ccateID)

    If not ccateExec.EOF and not ccateExec.bof Then
        ccate = ccateExec(0).value
    end if
    
    if ccate="" or ccate=empty or ccate=null or len(ccate)=0 then
        ccate="article/"
    else
        ccate="article/"&ccate&"/"
    end if
    
    if cname="" or cname=empty or cname=null or len(cname)=0 then
        cnames=trim(id)
    else
        cnames=cname
    end if
    
    if ctype="0" then
        chtml="htm"
    elseif ctype="1" then
        chtml="html"
    else
        chtml="asp"
    end if
    
    chtml="."&chtml
    set ccateExec = nothing
    set cc = nothing
    Alias=ccate&cnames&chtml
End Function
%>


8、友情链接页面.很高兴,看到352有了友情链接分类.但前台显示效果却并不如人意.
1、如果是全新安装的352版本,友情链接页面会默认分类为pjblog;如果是从旧版升级上来的,会发现友情链接页面一干二净,一个显示都没有.why?因为友情链接分类那里数据库增加了新字段,所有以前添加的友情链接就成了"未分类",而未分类的友情链接新版本是不显示的,此问题倒是不大,在后台一一添加分类即可;

2、新版增加了分类设置,但却忘了图片链接与文字链接的最初分类.或许是觉得增加了分类,打乱了前台页面原先图片链接排在上面文字链接排在下面的布局,觉得不太好做前台的css(在我新看来版旧版均未用css来控制友情链接页面的布局,而是用的table,-_-!!!),所以干脆一刀切,所有都必须是图片链接,如果没有图片的,那么就用一个默认图片代替(遗憾的是该默认图片或许是因为忘记而没有打包到发布文件里面),如果默认图片都显示不了,那么就显示错误的替换图片(该图片倒是打包进去了);说到这里,我也觉得在使用table的情况下,布局确实不好搞,过时的table框架注定了图文混排不好处理,要知道,大部分的友情链接并非是图片链接.

3、其实,在BlogLink.asp页面稍作注释修改,就可以回到之前的图片链接和文字链接分来排列的布局,但这样的话友情链接的分类显示就又无效了,实在难以两全!最近没空了,有空自己写一个出来好了.

  最后提醒,所有操作都请先备份.

[本日志由 黑咖啡 于 2011-04-05 14:01:00 编辑]
上一篇: 《敢死队》
下一篇: 推荐下Enhancer音效插件
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 博客 升级 完毕 PJ Blog 352 修改 合集
相关日志:
评论: 7 | 引用: 0 | 查看次数: -
maxma
回复回复maxma[2011-03-27 11:02:53 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
hyphonyan
回复回复hyphonyan[2010-09-09 15:18:10 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
hyphonyan
回复回复hyphonyan[2010-09-09 15:16:53 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
hyphonyan
回复回复hyphonyan[2010-09-08 17:36:19 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
gaga
回复回复gaga[2010-09-05 14:36:19 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
kedeng美女博客
回复回复kedeng美女博客[2010-09-03 17:43:39 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
kedeng美女博客
回复回复kedeng美女博客[2010-09-03 17:40:08 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.