2012-08-29 54 views
2

我的客户有一个现有的旗帜网站标题和后7年以上,他们现在想要的页面标题文本下方另一条理由是网页标题是什么。我试图避免必须进入每个页面来添加一行文本,并提出了以下解决方案。这不是完美的(也不是必须的),但是你是否会看到有关这种方法的未解决的问题?添加页面标题,以现有的网站页面标题下

<cfparam name="url.CurrentPage" default=""> 
<div id="wideheader"> 
<div id="wideheadermain"> 
    <h1 id="title"> 
    <div class="PageBannerText">Technology Lab 
    <span id="CurrentPage"><cfswitch expression="#url.CurrentPage#"> 
     <cfcase value="Update"> 
      Update Project Data 
     </cfcase> 
     <cfcase value="Tracker"> 
      Project Tracker 
     </cfcase> 
     <cfcase value="ProjectLog"> 
      Project Log 
     </cfcase> 
     <cfcase value="Portfolio"> 
      Project Portfolio 
     </cfcase> 
     <cfcase value="Links"> 
      Related Links 
     </cfcase> 
     <cfcase value="Coordinator"> 
      Coordinator Space 
     </cfcase> 
     <cfcase value="Request"> 
      Project Request 
     </cfcase> 
     <cfcase value="Viewer"> 
      Project Tracker Read-Only 
     </cfcase> 
     <cfcase value="LabMgr"> 
      Lab Manager 
     </cfcase> 
     <cfcase value="Architect"> 
      Architect Module 
     </cfcase> 
     <cfdefaultcase> 
      #url.CurrentPage# 
     </cfdefaultcase> 
    </cfswitch> #cookie.CurrentPage#</span> 
     </div> 
</div> 
</div> 

我可以添加上面的代码到我的头页,然后在主导航菜单,添加以下代码将设置子页面标题:

<ul> 
    <li><a href="Proj/TrackerMenu.cfm?CurrentPage=Project Tracker">Project Tracker</a></li> 
    <li><a href="Proj/RequestCopyOrAdd.cfm?CurrentPage=Request a Project">Request a Project</a></li> 
    <li><a href="Proj/ViewerMenu.cfm?CurrentPage=Project Viewer">Project Viewer</a></li> 
    ... 
</ul> 

我知道这不会是完美的但我相信这将覆盖90-95%的网站。

其他想法我是包,跨度标签的子页面标题文本,并给它一个ID,然后使用jQuery来设置文本。我可以编写例程来评估当前URL,然后相应地设置子页面横幅文本。

TIA

回答

5

更简单的解决方案是将标题存储在结构中,然后执行查找。

即把这个里面onApplicationStart:

<cfset Application.PageTitles = 
    { 'Update' : 'Update Project Data' 
    , 'Tracker' : 'Projet Tracker' 
    ... 
    , 'LabMgr' : 'Lab Manager' 
    , 'Architect' : 'Architect Module' 
    }/> 

(注意:如果你在CF9或更早的版本,你需要使用=代替:有CF10和Railo和OpenBD的所有版本。在串联结构支持使用的任:=

然后与此替换交换机/ case块:

<cfif StructKeyExists(Application.PageTitles,Url.CurrentPage)> 
    <cfset PageTitle = Application.PageTitles[Url.CurrentPage] /> 
<cfelse> 
    <cfset PageTitle = Url.CurrentPage /> 
</cfif> 

#HtmlEditFormat(PageTitle)# 

您可以使用您的菜单类似的东西,这样你就不会需要更新在多个地方的称号。

还要注意使用HtmlEditFormat以防止可能出现的HTML /脚本注入。

您还应该将其添加到cookie变量以及任何其他用户提供的变量(以及任何不保证不具有可能会更改HTML的字符的变量)。

+1

我喜欢的HTMLEditFormat一个结构和+1把这个的想法。我经常记得,在一张麻烦票被放置后。大声笑 – HPWD

相关问题