Coldfusion MX技巧精华收集之2第1/6页

 更新时间:2007年03月15日 00:00:00   作者:  
设定你的根目录 

作者: Kyle 2/16/03 

内容: 

设定你的根目录
网站开发人员向来都一直必须在相对路径 vs. 绝对路径这项议题上面打转。在 ColdFusion 环境里面,你可以在多个不同页面使用 CFINCLUDE 卷标,不过既然我们对于在哪个目录里面将会用到 CFINCLUDE 语法,因此在 CFINCLUDE 卷标里面使用相对路径经常会造成很多麻烦。 

举例来说,某个被包含的选单里面可能有一个指向网站首页的连结,像下面这样: 

<A HREF="index.cfm">Home Page</A> 
在网站根目录下面的任何档案引入这个包含档都不会有问题。但是如果你在某个次目录下的一个档案里面引入这个选单档案,那么上面这个超链接便会失效,或者至少会连结到错误的页面去。这时候你实际上会希望这个超链接是写成这样: 

<A HREF="../index.cfm">Home Page</A> 
有两种方式可以克服这个问题。一个是在超链接里面直接使用绝对路径。要使用这个作法,你必须在 ColdFusion 里面预先设定好一个路径对应关系(mapping)。你可以在 ColdFusion 管理员(ColdFusion Administrator)的「路径对应(Mappings)」区块里面建立这些对应关系。一旦你建立好了路径对应关系,你便可以把指向网站首页的超链接写成下面这个样子: 

<A HREF="/mymapping/index.cfm>Home Page</A> 
如果你使用了绝对路径,那么不论你在那个位置引入这个档案,该档案里面的超链接永远都会保持有效。我通常使用一个叫做 APPLICATION.RootDir 的应用程序变量来储存这项路径对应设定,并且在超链接里面直接套用这个变量。使用这个作法,如果我真有必要修改目录结构或者路径对应的名称,那么我只需要修改这么一个变量的值就可以了。 

<CFSET APPLICATION.RootDir = "/MyMapping"> 
如果你套用这个变量,你的超链接看起来会像下面这样: 

<A HREF="#APPLICATION.RootDir#/index.cfm"> 
在每个页面的开端建立这样的变量,那么你就可以在该页面的其它部分套用这个变量的值。包含档案运作起来就像该档案的内容实际上真的被写入原有页面一样,因此如果档案 A 引入了档案 B,那么在档案 B 里面我们便可以直接参照到档案 A 里面的变量值: 

<!--- 在每个页面设定 RootDir 变量值 --->
<CFSET RootDir ="../">
<!--- 在被引入的页面中参照 RootDir 变量的值(只要确定这个变量确实有被定义即可,否则在引入档案的时候会出现错误讯息) --->
<A HREF="#RootDir#news/newspage.cfm"></code>

相关文章

最新评论