2010-10-11 146 views
1

我已經在PHP(和Zend Framework)中製作了這個適度的CMS。CMS:同步頁面內容中的內部頁面的鏈接

已發佈網站的頁面內容存儲在MySQL TEXT字段中。編輯頁面內容時,可以創建指向網站內其他內部頁面的鏈接。

頁面slu SEO(SEO uri's)也可在CMS中編輯。

當CMS的最終用戶更改鏈接的頁面鏈接時,什麼方法可以同步內容中的內部鏈接?

我喜歡從簡單而強大的解決方案(沒有太多數據庫重構)到更復雜和更靈活的解決方案,這需要重構數據庫等。有什麼好的想法來處理這個問題?

在此先感謝。

PS: 它不必在PHP/MySQL中指定。只是全球概念可能會很好,除非它是PHP/MySQL無法處理的東西。

回答

0

選項1:

插入/更新內容時,搜索塞URL的內容,並將其存儲在涉及塞URL到它們的ID的一個表,並以內容ID。 ('slug_content_map')

然後,您可以添加一種方法,如果內容在'slug_content_map'中有條目,則會在更新URL時在內容中用新的slug URL替換舊的slug URL。

選項2:

插入時/更新內容,以一個字符串,如替換蛞蝓網址{slugId:3},和顯示所述內容時然後更換動態。 該方法在顯示內容時會有更多開銷,因爲您必須查找slug來替換它。

1

這裏的一些內容管理系統如何對待它,並在總體上似乎是最佳的平衡,只要運行時的性能,編輯時的性能和可管理性:

保留的網頁和鏈接表:

|PageID |LinksToID | 
|----------|-------------| 
|1   |2   | 
|1   |3   | 
  1. 當存儲頁面(富),發現在該頁面中的所有鏈接(不是很密集),發現其中每一個鏈接(瑣碎的,因爲你當然有你的網頁的網址收錄,權?)。
  2. 使用該信息填充此表(第1頁包含指向第2頁和第3頁的鏈接)。
  3. 當頁面3被重命名時,回到這個表格並且拉出所有鏈接到它的頁面;搜索他們的內容尋找第3頁的URL,替換和更新。

沒有運行時影響,編輯時間影響已優化。您可以獲得一個方便,易於查詢的網站中所有交叉鏈接的地圖。獎金!