本解决方案是在DEDECMS5.7中测试过的,当文档设置为跳转并添加跳转网址后如何不经过中转页而直接可以用标签arcurl在底层模板中显示redirecturl跳转网址。

 

找到dedecms文件:/include/helpers/channelunit.helper.php中,第157行处开始修改:

修改前:

01 if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0)
02 {
03 //动态文章
04 if($cfg_rewrite == ‘Y’)
05 {
06 return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html';
07 }
08 else
09 {
10 return $GLOBALS[‘cfg_phpurl’].”/view.php?aid=$aid”;
11 }
12 }

修改后:

01 if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0)
02 {
03 //——–跳转网址不经过中间页直接显示—————-begin—by oicto
04 global $dsql;
05 $flag = $dsql->GetOne(“select * from dede_archives where id = $aid;”);
06 $flag = $flag[‘flag’];
07 if(preg_match(“/j/”,$flag)){
08  
09 $addontable = $dsql->GetOne(“select art.id,cht.addtable from dede_arctype art left join dede_channeltype cht on art.channeltype = cht.id where art.id = $typeid”);
10 $addtable = $addontable[‘addtable’];
11 $GoUrl = $dsql->GetOne(“select redirecturl from $addtable where aid = $aid”);
12 $redirecturl = $GoUrl[‘redirecturl’];
13 if($redirecturl != ”){
14 return $redirecturl;
15 }
16 }
17 //——–跳转网址不经过中间页直接显示—————-end—by oicto
18 //动态文章
19 if($cfg_rewrite == ‘Y’)
20 {
21 return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html';
22 }
23 else
24 {
25 return $GLOBALS[‘cfg_phpurl’].”/view.php?aid=$aid”;
26 }
27 }