2012-07-08 58 views
1

我准备用php和mysql创建一个自定义的CMS。每个页面都有几个区域。每个区域都可以输出模块。例如我们有一个新闻模块,我们已经在模块管理部分添加了新闻类别和单个新闻项目。 但在此开始:最终用户希望获得此模块的不同输出。例如,用户想要显示“运动”类别的新闻,或者用户想要显示前5名的最新消息,或者用户想要按某种东西排序新闻,或者,或者,或者......模块可以采取的许多其他选项。管理模块的选项方法

我的问题是你的解决方案来处理和管理这些选项。 - 你是否建议像news_options这样的每个模块的module_option表? - 你是否建议一个包含每个模块选项的表格?

希望我能明白我的意思;)也让我知道如果db图是必要的。

回答

1
  1. 第一种方法可能是对每个模块使用不同的表格。然后,您可以在字段中保留不同实例的设置。以可管理的形式。

    例子:

    Table: News 
    ---------------------------------------------------------------------- 
    | id  +  news_title  +  option 1  + option 2  | 
    ---------------------------------------------------------------------- 
    
  2. 接下来的做法,可能我用全局配置表,它保存在另一个领域中的关键名称和一个字段和键值。这样你就不必从不同的模块创建不同的表格。

    例子:

    表:ModuleOption

    --------+-----------------+-------------------+---------------------+ 
    | id | module_id  | setting_name | settings_value | 
    --------+-----------------+-------------------+---------------------+ 
    | 1 | 1    |  option 1  | option value 1 | 
    --------+-----------------+-------------------+---------------------+ 
    | 2 | 1    |  option 2  | option value 2 | 
    --------+-----------------+-------------------+---------------------+ 
    

的问题,您该选哪个以上,取决于你如何编写你的项目。两者都有其优点和缺点。然而,一些需要考虑的要点

  • 如果该选项包含输入长文本的方法的话,第二个方法是坏的选择规模将有很大的差异。
  • 如果所有的模块设置都可以伴随固定长度的字段,那么第二个选项绝对是最好的方法。
+0

我已经有第二种方法了。 一个包含module_contents_id(模块和区域之间的关系),已经说过的键和值的表。还有其他想法是受欢迎的。 – mhesabi 2012-07-08 17:47:23