zoukankan      html  css  js  c++  java
  • phpcms万能字段的使用方法

    今天想做一个单选的字段,
    里面要使用别的字段,
    于是研究了一下万能字段!
    刚开始使用的时候,在网上,论坛里找了好久,没发现一个贴子有针对万能字段的使用说明,
    官方的例子里也只有一个调用字段本身值的变量 {FIELD_VALUE}
    在字段设置里写上{IF}这样的标签无效.php代码也被安全过滤了.
    这时候我真的觉得万能字段,,还不如叫低能字段...这样的东西能实现什么?
    当时我就想,或者我可以改一下,让他增加一点别的功能.比如判断?
    于是我找到了模型类文件,找到了万能字段的调用.
    看来看去,发现一个很好玩的东西.
    caches/caches_model/caches_data/content_form.class.php
    约450行
    这是缓存文件里面的万能字段解析
    在这里面我们可以发现一个有趣的东西,
    这才是万能字段叫万能的真正原因;
    preg_match_all('/{FUNC((.*))}/',$formtext,$_match);
    这一句话,很多人都能看明白,正则查找;
    然后,下面的循环就有趣了.
            foreach($_match[1] as $key=>$match_func) {
                            $string = '';
                            $params = explode('~~',$match_func);
                            $user_func = $params[0];
                            $string = $user_func($params[1]);
                            $formtext = str_replace($_match[0][$key],$string,$formtext);
                    }
    会PHP的兄弟也许看到这里就明白了,
    万能字段之所以万能.是因为他可以调用外部函数;
    你想实现什么东西,只要写一个函数,
    像我之前有提过,能不能实现和帝国一样的那样,调用另外一个表里的某个字段作为这个表的字段值!
    看到这个东西,我就想笑了,感情这是小儿科!
    我的天啊,这么好用的功能.官方,论坛,竟然没有任何一个人出来告诉我们!
    真是....太过份了!
    好吧,我来给大家分享.
    //-----------------------------------------华丽丽的分割线

    下面说一下怎么使用这个东西.
    我用一个简单的东西给大家做个解说.用万能字段调用类别为作为例子
    你不要告诉我,类别可以直接使用,不用万能字段也可以..我说,我只是举例,会不会转弯.那是你自己的事了!
    开始,


    第一步,文章模型中先把类别字段禁用,----(禁用后再用万能字段调用出来 , 像个白痴?)

    第二步,增加一个万能字段.字段名 就叫 mytype 字段别名,我的类别
    表单内容写上  {FUNC(my_cal_type~~{FIELD_VALUE})}  


    其它随意
    增加完成后,我们去内容里增加一个文章,你会发现报错!!!

    错了吗?真的错了?
    告诉你!没错,就是这样子的!因为我们还没有写对应的方法.!

    下面是第三步,
    打开自定义函数文件,
    不知道在哪?我告诉你 在这里,这里,打开这里的这个文件.
    哦,在这里 /phpcms/libs/functions/extention.func.php

    在里面增加一个方法~等一下,我写好直接贴上来

    加了类别之后,在自定义函数文件中写上下面的代码!

            //万能字段获取类别例
            function my_cal_type($typiid = 0){
                    $TYPE = getcache('type_content','commons');
                    $srt = "<select name="info[mytype]" id="mytype" >";
                            foreach ($TYPE as $value) {
                                    if ($typiid == $value['typeid']) {
                                       $srt.="<option value='{$value['typeid']}' selected = 'selected'>{$value['name']}</option>";
                                    }else {
                                            $srt.="<option value='{$value['typeid']}'>{$value['name']}</option>";
                                    }
                            }
                    $srt.="</select>";
                    return $srt;
            }

    然后,刷新一下增加文章内容页再看看!

    摘自:http://bbs.phpcms.cn/thread-868750-1-1.html

  • 相关阅读:
    js FormData 的使用
    js代码 注释 test
    JavaScript创建对象的几种 方式
    js prototype 原型
    C# 遍历对象下的 属性
    C#模拟按键
    C#获取硬盘序列号
    C#结束Explorer进程
    Java书籍推荐
    编程资料合集
  • 原文地址:https://www.cnblogs.com/MY0101/p/6617823.html
Copyright © 2011-2022 走看看