1

我用 PHP(和 Zend 框架)制作了这个适度的 CMS。

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

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

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

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

提前致谢。

PS.:它不必在 PHP/MySQL 中指定。只是全局概念可能会很好,除非它是 PHP/MySQL 无法处理的晦涩难懂的东西。

4

2 回答 2

1

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

保留页面和链接表:

|PageID    |LinksToID    |
|----------|-------------|
|1         |2            |
|1         |3            |
  1. 当您存储页面(foo)时,找到该页面中的所有链接(不是很密集),找到每个链接到的位置(微不足道,因为您的页面当然是由 URL 索引的,对吗?)。
  2. 使用该信息填充此表(第 1 页有指向第 2 页和第 3 页的链接)。
  3. 当第 3 页被重命名时,回到这个表并拉出所有链接到它的页面;在他们的内容中搜索到第 3 页的 URL,替换和更新。

没有运行时影响,并且优化了编辑时影响。您会得到一张方便、易于查询的网站中所有交叉链接的地图。奖金!

于 2010-10-11T22:39:48.667 回答
0

选项1:

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

然后,如果内容在“slug_content_map”中有条目,您可以添加一个方法,在更新 URL 时将内容中的旧 slug URL 替换为新的 slug URL。

选项 2:

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

于 2010-10-11T18:55:54.047 回答