Jan 15

深度SEO:将网站文件生成目录改为根目录 雪

阵风 , 23:05 , 动易 , 评论(6) , 引用(0) , 阅读(1790) , Via 本站原创 | |

很多朋友,都希望网站的生成文件路径不要太深,而将生成文件路径改为网站根目录无疑是最佳选择。默认情况下,动易系统的频道首页、栏目列表页、内容页都不能生成在网站根目录。如何修改呢?


我觉得,这些朋友多是针对普通企业网站提出此要求的。普通的企业网站(不包括门户网站、行业网站等信息量大的网站),一般只用文章系统,信息量少,全部生成也不会花费太多时间;平时很少用FTP,即使文件全部放在根目录,也不会有太多不方便。


基于以上分析,我对PowerEasy® SiteWeaver™ CMS 6.5 Build 0115(动易 SiteWeaver™ 内容管理系统,)做了一些修改,使文件生成目录改为网站根目录(以后不可更改)。设置网站首页、频道首页、栏目列表页、内容页全部生成静态页面(由于信息量小,建议全部设为html或htm),这里假设其扩展名均为“.html”,预期效果:网站首页为Index.html,频道首页为Index99.html的形式(99为频道ID),栏目列表页为List55.html、List55_2.html、List_3.html的形式(其中55为栏目ID,2、3为分页数),内容页为Article88的形式(其中Article为频道目录,88为文章ID)。


我的修改步骤如下:



  1. 修改Include/PowerEasy.Common.Content.asp中的以下函数,修改后的代码如下:
    引用
    Public Function GetListPath(iStructureType, iListFileType, sParentDir, sClassDir)
            GetListPath = "/"
    End Function

    Public Function GetListFileName(iListFileType, iClassID, iCurrentPage, iPages)
            If iCurrentPage = 1 Then
                GetListFileName = "List" & iClassID
            Else
                GetListFileName = "List" & iClassID & "_" & iCurrentPage
            End If
    End Function

    Public Function GetItemPath(iStructureType, sParentDir, sClassDir, UpdateTime)
        GetItemPath = "/"
    End Function

    Public Function GetItemFileName(iFileNameType, sChannelDir, UpdateTime, ItemID)
            GetItemFileName = sChannelDir & ItemID
    End Function


  2. 将Admin_Article.asp第65行、admin/Admin_Class.asp第26行、Admin/Admin_UpdateCreatedStatus.asp第27行、Include/PowerEasy.Article.asp第57行的代码 “HtmlDir = InstallDir & ChannelDir”全部替换为“HtmlDir = InstallDir”。

  3. 将Admin/Admin_CreateCommon.asp第67行、第86行代码分别为:
    引用
    Response.Write "<b>正在生成此频道的首页(" & HtmlDir & "/Index" & FileExt_Index & ")……"
    引用
    Call WriteToFile(HtmlDir & "/Index" & FileExt_Index, strHtml)
    删除Index前面的“/”。

  4. 修改Admin/Admin_Article.asp:
    (一)在大约第760行处找到如下代码:
    引用
                    If iClassPurview > 0 Or rsArticleList("InfoPoint") > 0 Then
                        Response.Write "<a href='#' title='因为设置了阅读权限,所以不用生成HTML'><font color=green><b>¤</b></font></a>"
                    Else
                        If fso.FileExists(Server.MapPath(ArticlePath)) Then

    在其前面增加一行,代码为
    引用
    ArticlePath = Replace(ArticlePath, "//", "/")
    (二)在大约第2137行找到如下代码
    引用
    ArticlePath = HtmlDir & GetItemPath(StructureType, ParentDir, ClassDir, rsArticle("UpdateTime")) & GetItemFileName(FileNameType, ChannelDir, rsArticle("UpdateTime"), rsArticle("ArticleID"))
    将其替换为
    引用
    ArticlePath = Replace(HtmlDir & GetItemPath(StructureType, ParentDir, ClassDir, rsArticle("UpdateTime")) & GetItemFileName(FileNameType, ChannelDir, rsArticle("UpdateTime"), rsArticle("ArticleID")), "//", "/")


  5. 将Include/PowerEasy.FSO.asp中第50行的代码
    引用
    Set hf = fso.OpenTextFile(Server.MapPath(WriteToFileName), 2, True)
    替换为
    引用
    Set hf = fso.OpenTextFile(Server.MapPath(Replace(WriteToFileName, "//", "/")), 2, True)


  6. 将Admin/Admin_CreateArticle.asp第292行的代码
    引用
    tmpFileName = ArticlePath & FileExt_Item
    替换为
    引用
    tmpFileName = Replace(ArticlePath & FileExt_Item, "//", "/")


  7. 修改Admin/Admin_CreateCommon.asp:
    (一)将第186行的代码
    引用
    tmpFileName = tmpDir & GetListFileName(ListFileType, ClassID, CurrentPage, CurrentPage) & FileExt_List

    替换为
    引用
    tmpFileName = Replace(tmpDir & GetListFileName(ListFileType, ClassID, CurrentPage, CurrentPage) & FileExt_List, "//", "/")
    (二)第204行、227行的代码分别为
    引用
    Response.Write "&nbsp;&nbsp;&nbsp;成功生成第 <font color='red'><b>" & iCount & " </b></font>个栏目的第 <font color='blue'>" & CurrentPage & "</font> 页列表:" & tmpFileName & "<br>" & vbCrLf
    引用
    Response.Write "&nbsp;&nbsp;&nbsp;成功生成第 <font color='red'><b>" & iCount & " </b></font>个栏目的第 <font color='blue'>" & CurrentPage & "</font> 页列表:" & tmpFileName & "<br>" & vbCrLf
    将其中的tmpFileName改为Replace(tmpFileName, "//", "/")。
    (三)67的代码为
    引用
    Response.Write "<b>正在生成此频道的首页(" & HtmlDir & "/Index" & FileExt_Index & ")……"
    将其替换为
    引用
    Response.Write "<b>正在生成此频道的首页(" & HtmlDir & "Index" & ChannelID & FileExt_Index & ")……"
    (四)将第79行的代码为
    引用
    strNavPath = strNavPath & "&nbsp;" & strNavLink & "&nbsp;<a href='" & ChannelUrl & "/index" & FileExt_Index & "'>" & ChannelName & "</a>&nbsp;" & strNavLink & "&nbsp;" & PageTitle
    替换为改为
    引用
            strNavPath = strNavPath & "&nbsp;" & strNavLink & "&nbsp;<a href='" & HtmlDir & "Index" & ChannelID & FileExt_Index & "'>" & ChannelName & "</a>&nbsp;" & strNavLink & "&nbsp;" & PageTitle


  8. 修改include/PowerEasy.Common.Front.asp:
    (一)修改{$ShowChannel}标签对应的函数Function GetChannelList(NumNewLine),将其中的代码
    引用
    strChannel = strChannel & " href='" & ChannelUrl & "/index" & arrFileExt(rsChannel("FileExt_Index")) & "'"
    替换为
    引用
    strChannel = strChannel & " href='" & strInstallDir & "Index" & rsChannel("ChannelID") & arrFileExt(rsChannel("FileExt_Index"))  & "'"
    (二)修改Function GetClassUrl(sParentDir, sClassDir, iClassID, iClassPurview),将代码
    引用
    strClassUrl = ChannelUrl & GetListPath(StructureType, ListFileType, sParentDir, sClassDir) & GetListFileName(ListFileType, iClassID, 1, 1) & FileExt_List
    替换为
    引用
    strClassUrl = Replace(InstallDir & GetListPath(StructureType, ListFileType, sParentDir, sClassDir) & GetListFileName(ListFileType, iClassID, 1, 1) & FileExt_List, "//", "/")


  9. 修改include/PowerEasy.Common.Content.asp,将函数Function GetArticleUrl中的代码
    引用
    GetArticleUrl = ChannelUrl & GetItemPath(StructureType, tParentDir, tClassDir, tUpdateTime) & GetItemFileName(FileNameType, ChannelDir, tUpdateTime, tArticleID) & FileExt_Item
    替换为
    引用
    GetArticleUrl = Replace(GetItemPath(StructureType, tParentDir, tClassDir, tUpdateTime) & GetItemFileName(FileNameType, ChannelDir, tUpdateTime, tArticleID) & FileExt_Item, "//", "/")


  10. 修改PowerEasy.Common.Front.asp中的分页函数Function ShowPage_Html,修改后的代码如下:
    引用
    '**************************************************
    '函数名:ShowPage_Html
    '作  用:显示“上一页 下一页”等信息
    '参  数:strPath ----HTMl文件的路径
    '        iClassID  ----栏目ID
    '        FileExt ----- 扩展名
    '        sfilename  ---- 文件名
    '        TotalNumber ----总数量
    '        MaxPerPage  ----每页数量
    '        ShowTotal   ----是否显示总数量
    '        ShowAllPages ---是否用下拉列表显示所有页面以供跳转。有某些页面不能使用,否则会出现JS错误。
    '        strUnit     ----计数单位
    '返回值:“上一页 下一页”等信息的HTML代码
    '**************************************************
    Function ShowPage_Html(ByVal strPath, iClassID, FileExt, sfilename, totalnumber, MaxPerPage, CurrentPage, ShowTotal, ShowAllPages, strUnit)
        Dim NextPage, PrevPage, EndPage
        Dim TotalPage, strTemp, strUrl, i
        If totalnumber = 0 Or MaxPerPage = 0 Or IsNull(MaxPerPage) Then
            ShowPage_Html = ""
            Exit Function
        End If
        If totalnumber Mod MaxPerPage = 0 Then
            TotalPage = totalnumber \ MaxPerPage
        Else
            TotalPage = totalnumber \ MaxPerPage + 1
        End If
        If CurrentPage > TotalPage Then CurrentPage = TotalPage
        PrevPage = TotalPage - CurrentPage + 2
        NextPage = TotalPage - CurrentPage
        EndPage = 1
        If sfilename <> "" Then
            strUrl = JoinChar(sfilename)
        Else
            strUrl = ""
        End If
        
        If Right(strPath, 1) = "/" Then
            strPath = Left(strPath, Len(strPath) - 1)
        End If
        
        strTemp = "<!-- 分页开始 -->"
        strTemp = strTemp & "<div class=""show_page"">"
        If ShowTotal = True Then
            strTemp = strTemp & "共 <b>" & totalnumber & "</b> " & strUnit & "&nbsp;&nbsp;"
        End If
        If CurrentPage = 1 Then
            strTemp = strTemp & "首页 上一页&nbsp;"
        Else
            strTemp = strTemp & "<a href='" & InstallDir & "List" & ClassID & FileExt & "'>首页</a>&nbsp;"
            If CurrentPage = 2 Then
                strTemp = strTemp & "<a href='" & InstallDir & "List" & ClassID & FileExt & "'>上一页</a>&nbsp;"
            Else
                strTemp = strTemp & "<a href='" & InstallDir & "List" & ClassID & "_" & (CurrentPage - 1) & FileExt & "'>上一页</a>&nbsp;"
            End If
        End If
        If CurrentPage >= TotalPage Then
            strTemp = strTemp & "下一页 尾页"
        Else
            strTemp = strTemp & "<a href='" & InstallDir & "List" & ClassID & "_" & (CurrentPage+1) & FileExt & "'>下一页</a>&nbsp;"
            strTemp = strTemp & "<a href='" & InstallDir & "List" & ClassID & "_" & TotalPage & FileExt & "'>尾页</a>"
        End If
        strTemp = strTemp & "&nbsp;页次:<strong><font color=red>" & CurrentPage & "</font>/" & TotalPage & "</strong>页 "
        strTemp = strTemp & "&nbsp;<b>" & MaxPerPage & "</b>" & strUnit & "/页"
        If ShowAllPages = True Then
            If TotalPage > 20 Then
                strTemp = strTemp & "&nbsp;&nbsp;转到第<Input type='text' name='page' size='3' maxlength='5' value='" & CurrentPage & "' onKeyPress='gopage(this.value," & TotalPage & ");'>页"
            Else
                strTemp = strTemp & "&nbsp;转到:<select name='page' size='1' onchange=""javascript:window.location=this.options[this.selectedIndex].value;"">"
                strTemp = strTemp & "<option value='" & InstallDir & "List" & ClassID & FileExt & "'>第1页</option>"
                For i = 2 To TotalPage
                    strTemp = strTemp & "<option value='" & InstallDir & "List" & ClassID & "_" & i & FileExt & "'"
                    If CurrentPage = i Then strTemp = strTemp & " selected "
                    strTemp = strTemp & ">第" & i & "页</option>"
                Next
                strTemp = strTemp & "</select>"
            End If
        End If
        strTemp = strTemp & "</div>" & vbCrLf
        If ShowAllPages = True And TotalPage > 20 Then
            strTemp = strTemp & "<script language='javascript'>" & vbCrLf
            strTemp = strTemp & "function gopage(page,totalpage){" & vbCrLf
            strTemp = strTemp & "  if (event.keyCode==13){" & vbCrLf
            strTemp = strTemp & "    if(Math.abs(page)>totalpage) page=totalpage;" & vbCrLf

            strTemp = strTemp & "    if(Math.abs(page)>1) window.location='" & InstallDir & "List" & ClassID & "_'" & "+(Math.abs(page))+'" & FileExt & "';" & vbCrLf
            strTemp = strTemp & "    else  window.location='" & InstallDir & "List" & ClassID & FileExt & "';" & vbCrLf

            strTemp = strTemp & "  }" & vbCrLf
            strTemp = strTemp & "}" & vbCrLf
            strTemp = strTemp & "</script>" & vbCrLf
        End If
        strTemp = strTemp & "<!-- 分页结束 -->"
        ShowPage_Html = strTemp
    End Function

说明:虽然动易源代码有注释,但我对分页函数的各个参数还不是很清楚。目前的分页函数的修改没有考虑英文版,而且只测试了文章频道,并且文章频道首页调用自定义文章列表标签分页时“上下页”导航有问题(不分页时显示正常)——栏目列表页可以正常显示。


欢迎大家进行测试!测试时请将频道生成选项设为“全部生成”,文件扩展名建议全部设为html或htm。但是此修改方法不适合信息量大的网站,且文件全部生成在根目录,不便管理;管理后台的很多选项都将失效,而且生成方式不便更改;其它频道如果启用生成,会出现地址错误;生成的网站地图地址有误(但可以批量替换修正)。目前没有考虑网站顶部的导航及栏目导航,建议用自定义标签去实现。如果有其它频道,不愿生成在根目录,可以在替换前判断一下ModuleType或ChannelID——如果频道多,不建议采用此方法修改。

未经严格测试,修改请慎重!本人不对因参考本文进行修改而造成的任何损失负责!

我啊 Email Homepage
2008/04/28 19:38
怎么解除鼠标右键呀???

QQ:369130808

谢谢
阵风 回复于 2008/04/29 13:24
没看明白,你是要禁止用户使用鼠标右键还是要解除限制?
rock 'n' roll
2008/02/17 23:48
能举例说下吗?小第ASP语言不大熟unhappy,比如说改成标签Articletitle,怎么操作?谢谢!您好像是动易的版主,嘿嘿,望交友交流! QQ466670696
rock 'n' roll
2008/02/16 21:50
呵呵,那么巧啊,我也在打它的主义,不过我关注的是自定义文件名,比如生成的文件名为:标题.HTML或自定义标签.HTML,所以我找到了PowerEasy.Common.Content.asp的第136行,修改ItemID为其它的标签,但报错"标签未定义"晕3.嘿嘿,没想到你们在打目录的主义,我却在打文件名的主义,关于这方面的技术和技巧交流,望持续下去!!本人QQ466670696
阵风 回复于 2008/02/17 19:28
你增加相关变量的定义应该就行了吧?
王涛
2008/01/18 23:06
总结:其实文章频道的内容页,在一个频道生成根目录,另一个频道生成在频道文件内,我觉得有点难度.

我还想了解一下,把所有栏目页生成在根目录,多次用到下面一段代码ArticlePath = Replace(ArticlePath, "//", "/"),这个代码的作用是?
阵风 回复于 2008/02/17 19:49
文章路径是由安装路径、频道路径、栏目路径组合而成,返回值可能有"//",不替换的话无法生成文件。
王涛
2008/01/18 23:03
下面说的是内容页,可以根据选项,分别生成在频道目录(动易本来),另外也可以生成在根目录(这样便于通过后台管理一些单页如:link.html;about.html;contact.html)

这样一来,我可以做两个频道,一个频道为产品中心用于把产品页存放在频道文件夹内

再开放一个文章频道,加入一个个单页,生成方式选择生成在根目录,做成:link.html;about.html;contact.html这样的单页
阵风 回复于 2008/01/19 10:42
单页 可以用自定义页面实现,没有必要新建频道。
王涛
2008/01/18 22:58
文章ID.html    例:1358.html
更新时间.html    例:20040828112308.html

可以修改成以下两种形式:

文章ID.html    例:1358.html(生成在频道文件夹内product/1.html....文章多便于管理)
栏目目录.html    例:link.html(生成在根目录,把栏目目录分别设为link,about...这样生成的文件就为link.html,about.html...)
阵风 回复于 2008/01/19 10:36
是的,大家可以根据个人喜好进行修改。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]