将页面标题添加到网站标题下的现有页面

时间:2012-08-29 14:32:24

标签: javascript jquery coldfusion

我的客户有一个现有的横幅网站标题,经过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

1 个答案:

答案 0 :(得分:5)

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

即。把它放在应用程序开始:

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

(注意:如果您使用的是CF9或更早版本,则需要使用=而不是:。CF10以及所有版本的Railo和OpenBD支持使用内联结构中:=的内容。)

然后用这个替换你的开关/盒子:

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

#HtmlEditFormat(PageTitle)#

您可以在菜单中使用类似的内容,因此您无需在多个位置更新标题。

还请注意使用HtmlEditFormat来阻止可能的HTML /脚本注入。

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