织梦网站系统,更新系统后,出现点击一键更新,跳一个画面之后就显示空白什么也不提示(如下图),逐个生成排查,发现除了首页,栏目页无法生成,内容页也无法生成,下面全宝鑫技术就来分享下织梦系统生成文档,生成栏目及一键更新空白没反应,解决方法:
织梦dede点击一键更新之后空白的解决方法一共有2种,测试了两种方法都成功了,各位可以试试两个方法。
第一种:修改htm模板文件解决织梦无法生成问题
这种方法是我解决问题的方法,不知道是不是dede系统存在的bug。
1)打开模板文件/templets/你的模板文件夹/
2)查找(可以单个查找也可以批量查找)
{dede:field name='typeid' function="GetTopTypename(@me)" /}
改为
{dede:field name="typename"/}
含有这两个字段的模板,将上面的调用改了,网上说的方法是整句删除,但是{dede:field name='typeid' function="GetTopTypename(@me)" /} //这个标签是获取当前顶级栏目名称,我将他替换为{dede:field name="typename"/}同样都是调用当前栏目的,保存之后再更新后台完美解决。
第二种:添加支持代码解决织梦无法更新问题
1)打开织梦include/common.func.php这个文件;在该文件最底部加上下面这段代码;
//获取顶级栏目名
// Diy自定在栏目页调用顶级栏目 function GetTopTypename($id) { global $dsql; $row = $dsql->GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id"); if ($row['topid'] == '0') { return $row['typename']; } else { $row1 = $dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]"); return $row1['typename']; } } function GetTopTypenameen($id) { global $dsql; $row = $dsql->GetOne("SELECT typenameen,topid FROM dede_arctype WHERE id= $id"); if ($row['topid'] == '0') { return $row['typenameen']; } else { $row1 = $dsql->GetOne("SELECT typenameen FROM dede_arctype WHERE id= $row[topid]"); return $row1['typenameen']; } }
2)这就可以在需要的地方使用标签{dede:field name='typeid' function="GetTopTypename(@me)" /}来获取当前顶级栏目名称;
以上的原因,一般是低版本升级系统为加固版后造成的。
下面的原因,一般是低版本升级系统为2018以后的版本造成的。
造成的因为是,模板文件里含这串代码: function="gettoptype(@me,id)"/}.jpg);
织梦顶级栏目链接,名称及id调用代码
{dede:field.typeid function="gettoptype(@me,id)"/} //id
{dede:field.typeid function="gettoptype(@me,name)"/} //名称
{dede:field.typeid function="gettoptype(@me,link)"/} //链接
解决方法就是:
修改 include/helpers/extend.helper.php
结尾增加 :
/** * 获取一个类目的顶级栏目 * @param string $tid 栏目ID * @return string */ if ( ! function_exists('gettoptype')) { function gettoptype($tid,$action) { global $dsql,$cfg_Cs; if(!is_array($cfg_Cs)) { require_once(DEDEDATA."/cache/inc_catalog_base.inc"); } if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0) { $topid = $tid; } else { $topid = GetTopid($cfg_Cs[$tid][0]); } $row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid"); $toptypename = $row['typename']; $toptypeurl = $topid; if($action=='id') return $topid; if($action=='name') return $toptypename; if($action=='link') return GetOneTypeUrlA($row); } }