CMS:同步链接到页面内容中的内部页面

时间:2010-10-11 18:46:32

标签: content-management-system synchronize internal-link

我在PHP(和Zend Framework)中创建了这个适度的CMS。

已发布网站的页面内容存储在MySQL TEXT字段中。编辑页面内容时,可以创建指向网站内其他内部页面的链接。

页面slugs(SEO uri)也可以在CMS中编辑。

当链接到的页面slug被CMS的最终用户更改时,同步内容中的内部链接有什么好方法?

我欢迎解决方案,从简单而强大的解决方案(没有太多的数据库重构),到更复杂和灵活,需要对数据库进行一些重构等。有什么好处可以解决这个问题?

提前致谢。

PS .: 它不必在PHP / MySQL中指定。只是全局概念可能会很好,除非它是PHP / MySQL当然无法处理的模糊内容。

2 个答案:

答案 0 :(得分:1)

以下是一些内容管理系统如何处理它,一般来说,就运行时性能,编辑时性能和可管理性而言,它似乎是最佳平衡:

保留一个页面和链接表:

|PageID    |LinksToID    |
|----------|-------------|
|1         |2            |
|1         |3            |
  1. 当您存储页面(foo)时,找到该页面中的所有链接(不是非常密集),找到每个链接的位置(琐碎,因为当然您的网页是用URL索引的,对吧?)。
  2. 使用该信息填充此表(第1页包含指向第2页和第3页的链接)。
  3. 重命名第3页时,请返回此表并拉出链接到该表的所有页面;在第3页的网址中搜索其内容,替换并更新。
  4. 没有运行时影响,并且优化了编辑时影响。您可以获得一个方便,易于查询的站点中所有交叉链接的地图。奖金!

答案 1 :(得分:0)

选项1:

在插入/更新内容时搜索slug URL的内容,并将它们存储在将slug url与其id和内容id相关联的表中。 ( 'slug_content_map')

如果内容在'slug_content_map'中有条目,则可以在更新URL时添加一个方法,用旧的slug URL替换旧的slug URL。

选项2:

插入/更新内容时,使用{slugId:3}之类的字符串替换slug URL,然后在显示内容时动态替换它。 显示内容时,此方法会产生更多开销,因为您必须查找slug才能替换它。