如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

大家好,又和大家见面了。在上一篇文章中,苏南大叔描述了:thinkcmf的模版文件的制作方法中的非常基本部分。实际上,在thinkcmf中,还可以利用一个<同级同名>.json文件,来定义<同级同名>.html模版的相关配置信息。当然,这个<同级同名>.json文件,并不是必须存在的,但是作为thinkcmf的特有功能,还是值得学习学习研究的。

后台管理模版配置

正常情况下来说,后台模板的相关配置能正常使用的前提是:你并没有修改默认模板文件的位置。也就是说,对应模板目录还是存在默认目录/public/themes/<your_theme_name>/之内。在后续的内容中,苏南大叔将讲述如何修复这个问题。

对于新增的json文件,我们需要先识别一下:

如何理解 thinkcmf 模板描述json文件 - theme_json_00

如何理解 thinkcmf 模板描述json文件(图9-1)

如何理解 thinkcmf 模板描述json文件 - theme_json_01

如何理解 thinkcmf 模板描述json文件(图9-2)

识别成功之后,就可以进入列表进行配置了。

如何理解 thinkcmf 模板描述json文件 - theme_json_02

如何理解 thinkcmf 模板描述json文件(图9-3)

如何理解 thinkcmf 模板描述json文件 - theme_json_03

如何理解 thinkcmf 模板描述json文件(图9-4)

如何理解 thinkcmf 模板描述json文件 - theme_json_04

如何理解 thinkcmf 模板描述json文件(图9-5)

皮肤文件识别如果有什么问题的话,可以到数据库中寻找答案。相关数据表是<前缀>_theme<前缀>_theme_file

如何理解 thinkcmf 模板描述json文件 - theme_json_db

如何理解 thinkcmf 模板描述json文件(图9-6)

在实际测试中,苏南大叔发现:如果开启了debug模式下的话,每次访问前台页面,都会调用thememodel里面的updatetheme方法,就是每次访问页面都会去检测刷新json文件。关闭debug模式的话,就没有这种情况发生。

define("APP_DEBUG", true);

如何理解 thinkcmf 模板描述json文件 - auto_update

如何理解 thinkcmf 模板描述json文件(图9-7)

自动加载到模板变量里的途径

这些json相关配置,自动加载到模板变量里的途径,见这个文件/cmf/controller/HomeBaseController.php中的fetch()方法:

如何理解 thinkcmf 模板描述json文件 - theme_vars

如何理解 thinkcmf 模板描述json文件(图9-8)

json范例

我们看一下默认皮肤下面的默认首页配置文件simpleboot3/portal/index.json

{
    "name": "首页",
    "action": "portal/Index/index",
    "description": "首页模板文件",
    "order": 5.0,
    "more": {
        "vars": {
            "top_slide": {
                "title": "顶部幻灯片",
                "value": "",
                "type": "text",
                "dataSource": {
                    "api": "admin/Slide/index",
                    "multi": false
                },
                "placeholder": "请选择顶部幻灯片",
                "tip": "顶部幻灯片",
                "rule": {
                    "require": true
                }
            }
        },
        "widgets": {
            "features": {
                "title": "快速了解ThinkCMF",
                "display": "1",
                "vars": {
                    "sub_title": {
                        "title": "副标题",
                        "value": "Quickly understand the ThinkCMF",
                        "type": "text",
                        "placeholder": "请输入副标题",
                        "tip": "",
                        "rule": {
                            "require": true
                        }
                    },
                    "features": {
                        "title": "特性介绍",
                        "value": [
                            {
                                "title": "MVC分层模式",
                                "icon": "bars",
                                "content": "使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),他不是一个新的概念,只是ThinkCMF将其发挥到了极致。"
                            },
                            {
                                "title": "用户管理",
                                "icon": "group",
                                "content": "ThinkCMF内置了灵活的用户管理方式,并可直接与第三方站点进行互联互通,如果你愿意甚至可以对单个用户或群体用户的行为进行记录及分享,为您的运营决策提供有效参考数据。"
                            },
                            {
                                "title": "云端部署",
                                "icon": "cloud",
                                "content": "通过驱动的方式可以轻松支持云平台的部署,让你的网站无缝迁移,内置已经支持SAE、BAE,正式版将对云端部署进行进一步优化。"
                            },
                            {
                                "title": "安全策略",
                                "icon": "heart",
                                "content": "提供的稳健的安全策略,包括备份恢复,容错,防治恶意攻击登陆,网页防篡改等多项安全管理功能,保证系统安全,可靠,稳定的运行。"
                            },
                            {
                                "title": "应用模块化",
                                "icon": "cubes",
                                "content": "提出全新的应用模式进行扩展,不管是你开发一个小功能还是一个全新的站点,在ThinkCMF中你只是增加了一个APP,每个独立运行互不影响,便于灵活扩展和二次开发。"
                            },
                            {
                                "title": "免费开源",
                                "icon": "certificate",
                                "content": "代码遵循Apache2开源协议,免费使用,对商业用户也无任何限制。"
                            }
                        ],
                        "type": "array",
                        "item": {
                            "title": {
                                "title": "标题",
                                "value": "",
                                "type": "text",
                                "rule": {
                                    "require": true
                                }
                            },
                            "icon": {
                                "title": "图标",
                                "value": "",
                                "type": "text"
                            },
                            "content": {
                                "title": "描述",
                                "value": "",
                                "type": "textarea"
                            }
                        },
                        "tip": ""

                    }
                }
            },
            "last_news": {
                "title": "最新资讯",
                "display": "1",
                "vars": {
                    "last_news_category_id": {
                        "title": "文章分类ID",
                        "value": "",
                        "type": "text",
                        "dataSource": {
                            "api": "portal/Category/index",
                            "multi": true
                        },
                        "placeholder": "请选择分类",
                        "tip": "",
                        "rule": {
                            "require": true
                        }
                    }
                }
            }
        }
    }
}

<模版同名>.json之变量

json定义:

"vars": {
    "varName1": {
        "title": "测试 text", /*后台设置时 input 的 label*/
        "value": "1", /*变量默认值*/
        "type": "text", /*变量类型*/
        "tip": "这是一个text", /*后台设置时 input 的 帮助提示*/
        "rule": { /*后台设置时 input 的 验证规则*/
            "require": true
        }
    }
}

模板内使用方式一:

{$theme_vars.varName1|default=''}

模板内使用方式二:

<php>
echo $theme_vars['varName1']; //记得要判断一下这个变量是否存在!
</php>

<模版同名>.json之控件

json定义:

"widgets": {
    "widgetName1": {
        "title": "所有组件演示",  /*模板控件标题,用于后台设置*/
        "display": "1", /*控件是否显示,1:显示;0:不显示*/
        "vars": {/*模板控件变量,和模板变量一样*/
            "text": {
                "title": "测试 text",
                "value": "1",
                "type": "text",
                "tip": "这是一个text",
                "rule": {
                    "require": true
                }
            }
        }
    }
}

模板内使用方式一:

<php>
if(isset($theme_widgets)){
    print_r($theme_widgets['widgetName1']);//记得要判断一下这个控件是否存在!
}
</php>

模板内使用方式二:

<widget name="widgetName1">
    <!--输出控件标题-->
    {$widget.title}
    <!--调用控件的变量-->
    {$widget.vars.varName1|default=''}
    或:
    <php>
        echo $widget['vars']['varName1'];//记得要判断一下这个变量是否存在!
    </php>
</widget>

<模版同名>.json文件里面的特殊属性值is_public

下面的配置信息来自:simpleboot3/public/config.json

{
    "name": "模板全局配置",
    "action": "public/Config",
    "description": "模板全局配置文件",
    "is_public": "1",/*默认值为0,开启后会在每个页面加载这个配置*/
    "order": 0.0,
    "more": {
        "vars": {
            "enable_mobile": {
                "title": "手机注册",
                "value": "ThinkCMF",
                "type": "select",
                "value": 1,
                "options": {
                    "1": "开启",
                    "0": "关闭"
                },
                "tip": ""
            }
        }
    }
}

用于表示这个配置是需要加载到每个模版文件中的,一般用于public文件夹下面的<模版同名>.json文件。使用方式请参见上面两条中关于变量和控件的说明文字。

函数变量模板

在模板里面输出变量的时候,您可能需要配合如下php函数,isset(),array_key_exists()

修改过后的json存储值

有必要说明一下,json数据的存储位置。否则会有些误会。

数据首先是保存在json文件里面的,在识别模板json的时候,就读取到数据库里面了。在后台修改之后,存储值也是在数据库里面的。如果在json里面做了修改,最终结果会合并到数据库里面的。新的项目会新增,老的已有数据不会覆盖。展示的时候,数据也是从数据库里面读取的。也就是说,json是起源,但是还是数据库里面起决定作用。

如果json文件删除了,再刷新模板的时候,相关数据库项目,也是会被删除的。相关的数据表为:<pre>_theme_file。如果有疑问的话,可以观测一下这个表的数据变化情况,就可以明白了。

如何理解 thinkcmf 模板描述json文件 - table

如何理解 thinkcmf 模板描述json文件(图9-9)

关联文章

结论

thinkcmf很好很强大,这个模版的json文件配置功能,也是非常的不错。希望大家能够利用好这个功能。一些前台的不方便表述为数据库的功能,都可以通过这个<模版同名>.json文件进行定制。

更多thinkcmf的相关经验文章,请点击这里查看。https://newsn.net/tag/thinkcmf/

  【php】秘籍文章入口,仅传授于有缘之人  php

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

打赏领取小礼物

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/thinkcmf-theme-json.html
上一篇好文:thinkcmf如何理解皮肤模板页面对应关系
下一篇好文:thinkcmf模板执行php代码的两种方式

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~