【问题标题】:Custom CMS - Storing Content自定义 CMS - 存储内容
【发布时间】:2013-03-16 22:04:22
【问题描述】:

我正在构建一个用于存储文章的自定义 CMS 系统。

将文章存储在数据库中的正确方法是什么?鉴于一篇文章可能由单个段落或任意数量的段落组成,并且可能包含图像,将每个段落存储在 db 的不同字段中似乎不切实际。

我查看了 Wordpress 如何存储帖子,它似乎将原始 html 集中在单个字段“post_content”中。这是一种公认​​的方法吗?我看到这种方法的缺点是,对于每篇文章,还存储了任何 html 标记。如果我只存储原始文本,那么显示文章的动态页面将只包含一次 html 标记。那么如何区分段落和图像呢?

有什么想法吗?

谢谢。

【问题讨论】:

  • 图像可以上传到您服务器上的某个文件夹,然后将<img> 标签包含在您的文本块中。我认为大多数做更大文本字段的地方都使用某种文本 blob,对于 mysql,我想你会在这里找到:stackoverflow.com/a/332805/1618257

标签: mysql content-management-system


【解决方案1】:

选择的字段是 BLOB 类型(例如 TEXT)。

然而,要存储什么数据是另一回事,实际上取决于您的实现。我曾在类似的系统上工作过,过去曾将数据存储为:

  • XML - 由应用层翻译和转换成 HTML 的自定义 XML 标记。此方法还意味着您可以使用 XPATH 查询对数据进行额外查询。
  • WMD - 将数据存储为 WMD 意味着没有任何 HTML 标签可以帮助防范跨站脚本攻击 (XSS)
  • HTML 这是最简单、最快捷的数据排序方式。如果您清理输入,这将大大有助于 XSS 和其他您不想要的数据,但这会增加 WMD 可以从一开始就解决的更多复杂性。

如果您要从链接的图像中寻找某种分析数据,我建议将图像 URI 存储在另一个表中并链接到 URL 的主键 ID。这意味着您可以检查而不是重复图像 URL。如果您在域中上传和存储图像,图像 URI 也可以是一个 ID。

【讨论】:

  • 谢谢 - XML 方法看起来很有趣。使用自定义 XML 标签...我会简单地使用诸如 content 之类的标签,然后编写一个脚本来从标签中提取内容吗?
  • @user2056238 是的,如果你有 标签,你可以提取你认为合适的数据和图像——你甚至可以开始包含属性,例如 并且您可以使用 XPATH 从数据库本身执行直接查询。
  • 那么我会将整个 xml 提要存储为单个 BLOB 类型,对吗?然后我可以抓住它并使用 XML 阅读器类。我今天实际上将它用于另一个应用程序,但我可以看到我也可以轻松地将它用于我的 CMS。
  • 我将如何存储我可能希望在段落中加粗的文本的 sn-ps,例如:这是粗体文本 this是正规的
  • @user2056238 这真的取决于你的实现。你可以做 normal textbold text 或类似 markdown 的东西(有很多针对各种不同语言的解析器)并做 this是正常的**这是粗体*​​
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多