使用织梦的小伙伴们,织梦复制内容模型,报错系统找不到您所指定的表,请手工创建这个表。织梦的通病,内容模型已经复制成功了,但数据库表却需要手动添加,说句实话,我都想一键复制了,哪里还有手动创建表的心情,把小白迷得根本找不到北,也不会手动创建这个表。所以,下面小千就教大家,改改代码就行了,哪里需要手动创建哦。
能用代码解决的事情,还要手动创建这个表,真的是考验小白的动手能力啊。有人说,啊...我没遇到过,我复制所有的内容模型,都是自带主角光环,没有遇到一次复制内容模型失败的。无论是PHP5、PHP7环境,你多复制几次,你就一直复制,总有一次遇到提示:系统找不到您所指定的表,请手工创建这个表。真的不是每次复制都自带主角气运的。
好了,废话就不多说了,直接上代码,这个补丁,无论是新版,还是旧版,无论是织梦CMS的,还是织梦BIZ的,都没有考虑到处理复制失败的,都是请手工创建这个表考验小白。莫慌,下面小千就上教程啦,当你改完这个以后,系统找不到您所指定的表,请手工创建这个表,压根就不会存在了,也不会再提示请手工创建这个表了,要么复制成功,要么复制失败,再重新复制就行啦。
打开 /dede/mychannel_edit.php 搜索
系统找不到您所指定的表
看到下面这个判断
if (!$dsql->IsTable($trueTable)) { ShowMsg("系统找不到您所指定的表 $trueTable ,请手工创建这个表", "-1"); exit(); }
把这整个判断改为
if (!$dsql->IsTable($trueTable)) { $dsql->ExecuteNoneQuery(" UPDATE `#@__channeltype` SET `issystem` = '0' WHERE `id` = '{$id}';"); require_once(DEDEINC."/typeunit.class.admin.php"); $myrow = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$id'"); if(!is_array($myrow)) { ShowMsg('你所指定的频道信息不存在!','-1'); exit(); } //检查频道的表是否独占数据表 $addtable = str_replace($cfg_dbprefix, '', str_replace('#@__', $cfg_dbprefix, $myrow['addtable'])); $row = $dsql->GetOne("SELECT COUNT(id) AS dd FROM `#@__channeltype` WHERE addtable like '{$cfg_dbprefix}{$addtable}' OR addtable LIKE CONCAT('#','@','__','$addtable') ; "); $isExclusive2 = ($row['dd'] > 1 ? 0 : 1); //获取与频道关连的所有栏目id $tids = ''; $dsql->Execute('qm', "SELECT id FROM `#@__arctype` WHERE channeltype='$id'"); while ($row = $dsql->GetArray('qm')) { $tids .= ($tids == '' ? $row['id'] : ','.$row['id']); } //删除相关信息 if ($tids != '') { $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE typeid IN($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['maintable']}` WHERE typeid IN($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id IN ($tids); "); } //删除附加表或附加表内的信息 if ($isExclusive2 == 1) { $dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `{$cfg_dbprefix}{$addtable}`;"); } else { if ($tids != '' && $myrow['addtable'] != '') { $dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['addtable']}` WHERE typeid IN ($tids); "); } } //删除频道配置信息 $dsql->ExecuteNoneQuery("DELETE FROM `#@__channeltype` WHERE id='$id' "); //更新栏目缓存 UpDateCatCache($dsql); ShowMsg("复制模型失败,请重新复制模型", "mychannel_main.php"); exit(); }
呃...这个意思大概就是,无论你复制的啥内容模型,先把系统模型不允许删除,改为可删除的系统内容模型,然后删除系统内容模型就行了,大概就是这个意思,再不懂的,直接复制修改就对路了,不要问那么多为什么,其实我也不知道为什么。我只知道,能用代码解决的事情,干嘛还要去手动修改呢。
本文结束
评论专区
发表评论
评论列表(无评论)