我在PHP(和Zend Framework)中创建了这个适度的CMS。
已发布网站的页面内容存储在MySQL TEXT字段中。编辑页面内容时,可以创建指向网站内其他内部页面的链接。
页面slugs(SEO uri)也可以在CMS中编辑。
当链接到的页面slug被CMS的最终用户更改时,同步内容中的内部链接有什么好方法?
我欢迎解决方案,从简单而强大的解决方案(没有太多的数据库重构),到更复杂和灵活,需要对数据库进行一些重构等。有什么好处可以解决这个问题?
提前致谢。
PS .: 它不必在PHP / MySQL中指定。只是全局概念可能会很好,除非它是PHP / MySQL当然无法处理的模糊内容。
答案 0 :(得分:1)
以下是一些内容管理系统如何处理它,一般来说,就运行时性能,编辑时性能和可管理性而言,它似乎是最佳平衡:
保留一个页面和链接表:
|PageID |LinksToID |
|----------|-------------|
|1 |2 |
|1 |3 |
没有运行时影响,并且优化了编辑时影响。您可以获得一个方便,易于查询的站点中所有交叉链接的地图。奖金!
答案 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才能替换它。