管理模块的选项方法


manage module's options approach

我即将创建一个带有php和mysql的自定义CMS。 每个页面都有几个区域。 每个区域都可以输出模块。 例如,我们有一个新闻模块,我们已经在模块管理部分添加了新闻类别和单个新闻项目。但这里开始了:最终用户希望获得此模块的不同输出。例如,用户想要显示"体育"类别的新闻,或者用户想要显示前 5 条最新新闻,或者用户想要按某事对新闻进行排序,或者,或者,或者......模块可以采用的许多其他选项。

我的问题是,您处理和管理这些选项的解决方案是什么。- 您是否建议像news_options这样的每个模块都有一个module_option表?- 您是否建议使用包含每个模块选项的单个表?

希望我能明白我的意思;)也让我知道是否需要数据库图。

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

    例:

    Table: News
    ----------------------------------------------------------------------
    | id      +     news_title     +     option 1     +    option 2      |
    ----------------------------------------------------------------------
    
  2. 下一个方法,我可以使用全局配置表,该表保存键名称和一个字段以及另一个字段中的键值。这样,您就不必从不同的模块创建不同的表。

    例:

    表:模块选项

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

关于选择哪一个而不是哪个的问题取决于您如何编写项目代码。两者都有自己的优点和缺点。但是,需要考虑的一些要点

  • 如果选项包含输入长文本的方法,则第二种方法很糟糕,因为选项的大小会有很大差异。
  • 如果所有模块设置都可以在固定长度字段中伴随,那么第二个选项绝对是最好的方法。