• 好爸爸开讲:这是我的童年 我的大指挥官 2019-10-15
  • 美元短线拉升 随后回吐涨幅 2019-10-15
  • 【打好精准脱贫攻坚战】那曲农牧业特色产业精准脱贫初见成效 2019-10-12
  • [大笑]是谁在炒呢?你们不参与,能炒得起来么? 2019-10-12
  • 海淀区公布第四批77处区级文物保护单位 2019-08-18
  • 互助献血成有偿兼职 揭秘新型“血头”的“生财术” 2019-08-02
  • 淘票票实施全链路营销策略,推动电影宣发进入“共振”时代 2019-08-02
  • 调查:约四成台湾幼儿园孩童每天使用手机逾30分钟 2019-07-17
  • 2019-07-17
  • 第二届加强创新和社会管理案例理论论坛暨社会管理创新案例颁奖典礼 2019-07-14
  • 光明网招聘时事新闻分析编辑 2019-07-14
  • Premiê chinês reúne-se com a imprensa 2019-07-11
  • 习近平:真抓实干埋头苦干万众一心 夺取脱贫攻坚战全面胜利 2019-07-11
  • 紫光阁中共中央国家机关工作委员会 2019-07-05
  • 北京公示东城区委常委、副区长陈之常拟为区长人选(图简历) 2019-07-05
  • 拜仁慕尼黑球员列表:dedecms自定义字段删除

    拜仁慕尼黑vs法兰克福 www.mvcxr.com dedecms织梦系统自定义字段删除方法如下:由于dedecms后台没有提供删除自定义字段的方法,我们只能自己手动操作删除,下面的内容是删除的方法和原理。

    一、增加一个自定义字段,用于下面的示例中讲解删除。

    “核心-频道模型-内容模型管理”,选择”普通文章-字段管理-添加新字段“

    dedecms织梦系统自定义字段删除

    注意红色框选的地方,后面的讲解会说到。

    二、 删除方法:

    1、第一步,“核心-频道模型-内容模型管理”,选择”普通文章-字段管理“,删除”模型字段配置“中新增加的内容,即下图中红色框选部分。

     

    这一步实际上是更改表dede_channeltype中的fieldset字段的值。

    2、第二步,若在添加自字义字段时,勾选了”使字段可以在列表的底层模板中。。。。“,则执行这一步,否则跳过即可。

    第二步,“核心-频道模型-内容模型管理”,选择”普通文章-基本设置“,修改”列表附加字段“,删除其中新增加的部分。如下图,将”body,qq“改为"body"

    这一步实际上是更改表dede_channeltype中的listfields字段的值。

    3、第三步,删除表dede_addonarticle中我们新增加的字段。

    alter table dede_addonarticle drop qq;

    完成这三步后,就将我们增加的自定义字段彻底删除了。

    三、原理

    我们采用逆向思维分析我们这样做的原理,我们查看dedecms源程序,看它在增加自定义字段时都干了什么事情,我们在删除时,把它干的事情撤消掉,就达到了我们的目的。

    添加自字义字段时涉及到的主要文件:mychannel_field_add.php、inc_admin_channel.php

    一、mychannel_field_add.php中的save方法,下面代码中我用/************    *********/注释的部分,是执行的主要内容

     

    [php] view plain copy
     
     
    1. if($action=='save')  
    2. {  
    3.     //修改字段配置信息  
    4.     $dfvalue = trim($vdefault);  
    5.     $isnull = ($isnull==1 ? "true" : "false");  
    6.     $mxlen = $maxlength;  
    7.       
    8.     if(preg_match("#^(select|radio|checkbox)$#i"$dtype))  
    9.     {  
    10.         if(!preg_match("#,#"$dfvalue))  
    11.         {  
    12.             ShowMsg("你设定了字段为 {$dtype} 类型,必须在默认值中指定元素列表,如:'a,b,c' ","-1");  
    13.             exit();  
    14.         }  
    15.     }  
    16.       
    17.     if($dtype=='stepselect')  
    18.     {  
    19.         $arr = $dsql->GetOne("SELECT * FROM `ja02opLN2St_stepselect` WHERE egroup='$fieldname' ");  
    20.         if(!is_array($arr))  
    21.         {  
    22.             ShowMsg("你设定了字段为联动类型,但系统中没找到与你定义的字段名相同的联动组名!","-1");  
    23.             exit();  
    24.         }  
    25.     }  
    26.   
    27.     //模型信息  
    28.     $row = $dsql->GetOne("SELECT fieldset,addtable,issystem FROM `ja02opLN2St_channeltype` WHERE id='$id'");  
    29.     $fieldset = $row['fieldset'];  
    30.     $dtp = new DedeTagParse();  
    31.     $dtp->SetNameSpace("field""<"">");  
    32.     $dtp->LoadSource($fieldset);  
    33.     $trueTable = $row['addtable'];  
    34.   
    35.     //检测被修改的字段类型  
    36.     $fieldinfos = GetFieldMake($dtype$fieldname$dfvalue$mxlen);  
    37.     $ntabsql = $fieldinfos[0];  
    38.     $buideType = $fieldinfos[1];  
    39.     /***********给dede_addonarticle表增加字段***********/  
    40.     $rs = $dsql->ExecuteNoneQuery(" ALTER TABLE `$trueTable` ADD  $ntabsql ");  
    41.     if(!$rs)  
    42.     {  
    43.         $gerr = $dsql->GetError();  
    44.         ShowMsg("增加字段失败,错误提示为:".$gerr,"javascript:;");  
    45.         exit();  
    46.     }  
    47.   
    48.     //检测旧配置信息,并替换为新配置  
    49.     $ok = FALSE;  
    50.     $fieldname = strtolower($fieldname);  
    51.     if(is_array($dtp->CTags))  
    52.     {  
    53.         foreach($dtp->CTags as $tagid=>$ctag)  
    54.         {  
    55.             if($fieldname == strtolower($ctag->GetName()))  
    56.             {  
    57.                 $dtp->Assign($tagidstripslashes($fieldstring), FALSE);  
    58.                 $ok = true;  
    59.                 break;  
    60.             }  
    61.         }  
    62.         $oksetting = $ok ? $dtp->GetResultNP() : $fieldset."\n".stripslashes($fieldstring);  
    63.     }  
    64.     else  
    65.     {  
    66.         $oksetting = $fieldset."\r\n".stripslashes($fieldstring);  
    67.     }  
    68.       
    69.     $addlist = GetAddFieldList($dtp,$oksetting);  
    70.     $oksetting = addslashes($oksetting);  
    71.     /***********修改表dede_channeltype中的fieldset和listfields字段**********/  
    72.     $rs = $dsql->ExecuteNoneQuery("UPDATE `ja02opLN2St_channeltype` SET fieldset='$oksetting',listfields='$addlist' WHERE id='$id' ");  
    73.     if(!$rs)  
    74.     {  
    75.         $grr = $dsql->GetError();  
    76.         ShowMsg("保存节点配置出错!".$grr"javascript:;");  
    77.         exit();  
    78.     }  
    79.       
    80.     ShowMsg("成功增加一个字段!""mychannel_edit.php?id={$id}&dopost=edit&openfield=1");  
    81.     exit();  
    82. }  

    二、在inc_admin_channel中的GetAddFieldList方法中判断是否勾选了"使字段可以在列表的底层模板中。。。。"

     

    [php] view plain copy
     
     
    1. function GetAddFieldList(&$dtp,&$oksetting)  
    2. {  
    3.     $oklist = '';  
    4.     $dtp->SetNameSpace("field","<",">");  
    5.     $dtp->LoadSource($oksetting);  
    6.     if(is_array($dtp->CTags))  
    7.     {  
    8.         foreach($dtp->CTags as $tagid=>$ctag)  
    9.         {  
    10.             /***********在这里判断是否勾选了"使字段可以在列表的底层模板中。。。。"************/  
    11.             if($ctag->GetAtt('islist')==1)  
    12.             {  
    13.                 $oklist .= ($oklist=='' ? strtolower($ctag->GetName()) : ','.strtolower($ctag->GetName()) );  
    14.             }  
    15.         }  
    16.     }  
    17.     return $oklist;  
    18. }  

    原理只是参考,只要按前面3步骤操作删除dedecms自定义字段删除即可。

    原文转载自:https://blog.csdn.net/dustin_php/article/details/41143807
     

  • 好爸爸开讲:这是我的童年 我的大指挥官 2019-10-15
  • 美元短线拉升 随后回吐涨幅 2019-10-15
  • 【打好精准脱贫攻坚战】那曲农牧业特色产业精准脱贫初见成效 2019-10-12
  • [大笑]是谁在炒呢?你们不参与,能炒得起来么? 2019-10-12
  • 海淀区公布第四批77处区级文物保护单位 2019-08-18
  • 互助献血成有偿兼职 揭秘新型“血头”的“生财术” 2019-08-02
  • 淘票票实施全链路营销策略,推动电影宣发进入“共振”时代 2019-08-02
  • 调查:约四成台湾幼儿园孩童每天使用手机逾30分钟 2019-07-17
  • 2019-07-17
  • 第二届加强创新和社会管理案例理论论坛暨社会管理创新案例颁奖典礼 2019-07-14
  • 光明网招聘时事新闻分析编辑 2019-07-14
  • Premiê chinês reúne-se com a imprensa 2019-07-11
  • 习近平:真抓实干埋头苦干万众一心 夺取脱贫攻坚战全面胜利 2019-07-11
  • 紫光阁中共中央国家机关工作委员会 2019-07-05
  • 北京公示东城区委常委、副区长陈之常拟为区长人选(图简历) 2019-07-05
  • 310v大赢家即时比分 北京pk10彩票官网 重庆时时彩有可能赢吗 只赚不赔的投资 中国体彩网手机版 澳门线上足球娱乐 上海时时开奖情况 麻将规则视频 万博manbetⅹ官网 彩票软件定制和开发 二十一点赢钱策略 ag平台作弊截图 精准杀号 大地网投官网app 大唐炸金花技巧规律 不改料最准的网站