【问题标题】:CMS: synchronize links to internal pages in page's contentCMS:同步链接到页面内容中的内部页面
【发布时间】:2011-04-23 23:15:12
【问题描述】:

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

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

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

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

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

提前致谢。

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

【问题讨论】:

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


    【解决方案1】:

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

    保留页面和链接表:

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

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

    【讨论】:

      【解决方案2】:

      选项 1:

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

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

      选项 2:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-12
        • 2017-10-29
        • 2017-02-08
        • 2013-04-21
        • 2021-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多