本文作者:较瘦黎博客

织梦二开增加栏目万能字段,利用json实现栏目万能的自定义字段

较瘦黎博客 2021-06-19 09:40:43 2 抢沙发
织梦二开增加栏目万能字段,利用json实现栏目万能的自定义字段摘要: 织梦二开不来一把骚操作怎么能行ing... 需求: 因为网站整个架构比较大, 不同的栏目需要不同的自定义字段,例如做一个装修站,用一个栏目作为一个【设计师】,栏目下面有很...

织梦二开不来一把骚操作怎么能行ing...

需求:

因为网站整个架构比较大, 不同的栏目需要不同的自定义字段,例如做一个装修站,用一个栏目作为一个【设计师】,栏目下面有很多的案例,案例又是另一个内容模型,这两个不能混用,那么这时候需要给这个【设计师】定义很多属性字段。如果每添加一个字段都要去修改织梦的php程序和mysql数据库,那么就太繁琐了。如果网站架构大的情况下,会更繁琐,于是乎就有了下面的骚操作...

后台编辑:

模板调用:

{dede:field.json runphp='yes'}

        $jsonstr = @me;
        $json = json_decode($jsonstr,true);
        @me = $json['风格'];

{/dede:field.json}

思路:

按照以前栏目编辑添加自定义字段的方法,

1、添加一个json字段,并且修改后台模板

2、然后在这个json选项里面用json表达式添加你想要的key和值。

3、模板使用的时候读取栏目里面的json,调用模板标签的runphp='yes',对json字符串进行解析,用php去除json的key和值。

于是,就实现了栏目的万能字段(你能为每个栏目填入任何数据)

操作:

1、打开mysql数据库, 找到织梦dede_arctype表,在合适的位置插入json字段

说一下这个字段类型:

    TEXT:最大长度为65,535(2的16次方–1)字符

    MEDIUMTEXT:最大长度为16,777,215

    LONGTEXT:最大长度为4,294,967,295

我选用最长的LONGTEXT,免得后期需要修改,一个汉字算两个字节,TEXT可能不够用。

PS:我的程序做过多次二开,可能跟正常的dedecms字段不一样,原理是一样的

2、修改后台的mysql语句,catalog_edit.php和catalog_add.php两个都要改

路径在跟目录的/dede/里面,要是你后台改了名字, 就是你改的名字目录里面。

catalog_add.php文件,查找第一个变量$queryTemplate,赋值字符串那一句,把你的字段插进去,mysql语句前面是字段名`json`,后面是字段值$json

然后再查找第一个变量$in_query,位置不同,内容大致是相同的, 添加一个json字段

catalog_edit.php文件跟上面的y一样修改。catalog_edit.php只有一个位置,chaz查找$upquery变量,找到图中的位置,对应位置添加json字段

3、修改后台模板,添加json选项框,位置在catalog_edit.html和catalog_add.html

按F12找到对应你后台模板的代码位置,将上面的栏目描述代码复制过来,然后将name属性修改成json,将$myrow['description']修改成json。

PS:由于我的后台是layui框架二开,所以代码跟原生dedecms不一样,不过大同小异,思路值得参考
<div class="layui-form-item">
    <label class="layui-form-label">json数据</label>
    <div class="layui-input-block">
        <textarea name="json" class='layui-textarea'><?php echo $myrow['json']?></textarea>
    </div>
</div>

如图所示是这样子的,照样子画葫芦的事情catalog_edit.html

接下来是catalog_add.html

PS:知道为什么复制description编辑框来修改吗 ?因为json和description一样,是多行文本框。切记不要复制成单行文本框的了

选项编辑框出来了。尝试写一些数据进去, 然后看能不能保存

构造一个json数据

{
    "公司": "深圳旗舰店",
    "职务": "主任设计师",
    "经验": "16年",
    "报价": "750-900元/平米",
    "风格": "欧式古典、现代简约、地中海、美式乡村"
}

注意:json不能使用单引号,织梦的编辑框字体分辨不清全角引号和半角引号,建议修改字体,建议使用json格式化工具格式化一下代码方便阅读

PS:key可以使用中文

界面再美化一下:

4、前端模板调用操作

使用{dede:field.json/}调出我们刚才的json数据

将刚才的模板代码拆分为{dede:field.json runphp='yes'}{/dede:field.json},php代码写在中间,在标签的中间写上

$jsonstr = @me;
$json = json_decode($jsonstr,true);
@me = $json['风格'];
先将@me的json字符串赋值给变量,然后用php的json_decode函数进行解码转换为数组,然后直接$json['字段名']的形式输出你想要的自定义字段,看效果

然后按照这个方法 , 其他字段也是如此。

总结

思路明白了道理很简单, 这样一来, 只需要修改栏目只需要设置json选项的内容,就可以为栏目设置任意字段名和字段值。另外,如果json的key使用的是中文,需要注意下编码问题。下次添加栏目的时候,将旧的栏目json字符串复制粘贴过去,修改值就能用了。

怎么样? 到这里栏目添加万能字段你学会了吗 ? 如果有什么更好的想法,欢迎下方评论

文章投稿或转载声明:

来源: 较瘦黎博客 版权归原作者所有,转载请保留出处。本站文章发布于2021-06-19
温馨提示: 文章内容系作者个人观点,不代表 较瘦黎博客 对其观点赞同或支持。

操作:
赞(1

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (有 4 条评论, 2人围观) 参与讨论
今日新闻头条
今日新闻头条游客2021-03-294楼
文章不错支持一下
找一找
找一找游客2021-02-023楼
对于新手还是选织梦
采购查询
采购查询游客2020-12-152楼
博客很棒 对我很有用
刷百度指数
刷百度指数游客2020-12-071楼
织梦功能还是很强大的了