2009-10-11 28 views
3

我正在構建一個ecms的前端。前端的主要目的是根據存儲在數據庫中的內容來呈現html頁面。如何在CMS中的頁面之間存儲鏈接

我每頁有一個表,每個表由一個帶有頁面內容和一些元數據的xml字段組成。 (我選擇在數據庫中存儲xml以利用SQL Server 2008提供的功能,如xquery或xsd驗證)

我想如何存儲頁面之間的鏈接,以便可以在將來更改url模式(我不完全確定它是必需的)。

目前,我確定了兩種類型的內部鏈接:

  • 普通鏈接 - 就像一個<a>標籤的文本包圍。與嵌入式內容鏈接
  • 列表 - 像相關的新聞項目的列表(每個項目,我需要顯示與鏈接和摘要標題)

目前我看到了以下解決方案:

一個正常的鏈接:

  • 商店通過它像一個令牌包圍:$PAGE_LINK[unique identifier of the content] ,並在呈現階段正確的鏈接替換該標記。 (此方法取自Livesite,與我一起工作的ECMS)
  • 將其存儲爲<a href="local://unique identifier of the content">,並用適當的鏈接替換href屬性 的內容。
  • 假設url的模式是靜態的。

並與嵌入內容的鏈接:

  • 存儲它儘可能多的在數據庫中的許多關係(利用我的ORM)。
  • 將它作爲xml內容的唯一標識符列表存儲,作爲頁面的xml內容的一部分(這可以免費訂購,並且更靈活一點)。例如:

    <related_articles> 
        <resource type="news" content_id="233"/> 
        <resource type="news" content_id="231"/> 
        <resource type="blog_post" content_id="233"/> 
    </related_articles> 
    

的問題: 你知道任何其他辦法解決這個問題?它是如何在領先的CMS系統中完成的,如:Drupal,Joomla,N2,Wordpress等等?你會選擇哪種解決方案?

回答

1

我想它很大程度上取決於您期望鏈接的功能。過去我使用過一些CMS,其中一些我喜歡的內容是,您可以阻止刪除或停用與他們鏈接的頁面。這樣我避開了很多幫助臺電話。如果您確實允許人們打破鏈接,另一個重要功能是報告中斷鏈接。

他們所做的是有一個默認的鏈接方案,您可以配置,然後它會模式匹配內容中的鏈接來查找相關的內容。這將在內容保存/發佈時完成。 對於由系統生成的鏈接,內部代碼會將鏈接註冊到與其生成的索引相同的索引中。

嘗試避免的陷阱是緩存。如果您緩存呈現的頁面,那麼如果鏈接以任何方式更改,則應該使該緩存無效。

HTH。

相關問題