2010-10-11 197 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,替换和更新。

没有运行时影响,编辑时间影响已优化。您可以获得一个方便,易于查询的网站中所有交叉链接的地图。奖金!