【发布时间】:2011-04-16 18:39:22
【问题描述】:
我正在开发一个模块化的 CMS,并且我一直在思考内容架构。我需要一个灵活的系统,可以轻松创建不同的内容类型。每个内容类型都有一个处理它的模块(或其他模块中的方法)。该模块处理创建、操作并帮助显示内容(视图负责查看内容,模块为它们提供信息)。
每个内容类型都有自己的表格,不知道其他内容类型。
Contents 和 Content_types 是负责存储有关内容的信息的表。
Contents
---------------------------------------------------------------------------------------
id slug content_type_id in_table_id language_id uid parent_id
1 about-us 1 1 1 83j8je29 0
2 o-nama 1 2 2 83j8je29 0
3 first-page 1 3 1 12j83j28 0
4 prva-strana 1 4 2 12j83j28 0
5 news 2 1 1 mSk2919k 0
6 vijesti 2 2 2 mSk2919k 0
7 breaking-title 3 1 1 B8392mkA 5
8 vazna-vijest 3 2 2 B8392mkA 6
Content_types
------------------
id content_type
1 page
2 category
3 article
Contents 表包含内容的 slug、内容类型、该类型内容表中的内容 ID、语言 ID、uid - 这是内容独有的,因此我们可以轻松配对多语言内容和父 ID。
这是语言表...
Languages
---------------------------
id friendly_name sid
1 english eng
2 hrvatski cro
这是内容类型表的示例。
Pages
---------------------------------------------------------------
id title content author_id
1 About Us This is a page about us blah blah 5
2 O nama Ovo je stranica o nama 5
3 First Page Content 2
4 Prva strana Sadržaj 3
那么,这一切是如何运作的呢?
假设我们去: http://www.website.org/en/about-us
- 确定语言 (en) 并找出它的 ID(即 1)
- 确定蛞蝓(关于我们)
- 选择语言 ID 为 1 的内容并添加“about-us”
- 确定内容类型和 in_table_id
- 调用负责打开(处理)该类型内容的模块
- 模块现已加载。它现在找到 ID 为 1 的页面并显示它。
另一个例子: http://www.website.org/en/news/breaking-title
- 确定语言 (en) 并找出它的 ID(即 1)
- 确定蛞蝓(新闻)
- 我们有两个蛞蝓(break-title)
- 现在我们找到带有“break-title”的内容,其父项是“news”
- 调用负责打开(处理)该类型内容的模块
- 模块现已加载。它现在找到 ID 为 1 的文章并显示它。
如果我们转到http://www.website.org/en/news/,它将确定它是一个类别并调用一个负责处理类别的模块并执行我们需要的操作(在本例中是显示所有子内容)
我想我想出了一个非常灵活的系统,但由于我不是真正有经验的程序员(我今年 17 岁)我不太确定,所以我问你对这个概念有什么看法?
【问题讨论】:
-
你能分享一下你在这个主题上学到了什么吗?你问这个问题已经有一段时间了。
标签: php content-management-system