管理模块的选项方法

时间:2012-07-08 17:34:16

标签: php mysql content-management-system

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

我的问题是您处理和管理这些选项的解决方案是什么。 - 你为news_options这样的每个模块建议一个module_option表吗? - 你建议一个包含每个模块选项的表吗?

希望我能得到我的意思;)也让我知道db map是否必要。

1 个答案:

答案 0 :(得分: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    |
    --------+-----------------+-------------------+---------------------+
    

  3. 关于选择哪一个的问题取决于您对项目进行编码的方式。两者都有自己的优点和缺点。但是,有些要考虑的要点

    • 如果该选项包含输入长文本的方法,则第二种方法很糟糕,因为选项的大小会有很大变化。
    • 如果所有模块设置都可以在固定长度字段中附带,那么第二种选择绝对是最佳方式。