前端优化考虑:该专题栏目的页面几乎绝大部分都是跳转地址,不利于页面优化,因此需要直接在页面写出专题的真实静态URL。redirecturl保存的就是专题的真实静态URL,因此只要调用出redirecturl即可。
1.如果不是列表栏目页面:
让arclist标签支持跳转字段redirecturl:
redirecturl是存放在附加表中,和自定义的字段一样,需要使用只需要指定channelid:
{dede:arclist typeid='1’ row=’1’ addfields=’redirecturl’ channelid=’1’ orderby=’pubdate’}
<a href="[field:redirecturl/]" target="_blank">[field:title/]</a>
{/dede:arclist}
让list标签支持跳转字段redirecturl:
list不支持像自定义字段那样调用redirecturl,需要修改文件include/arc.listview.class.php
//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
if(preg_match(’/hot|click|lastpost/’, $orderby))
{
$query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,
tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
$addField
FROM `chj_archives` arc
LEFT JOIN `chj_arctype` tp ON arc.typeid=tp.id
$addJoin
WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row";
}在这段代码前面增加:
$addField .= ’,’.$addtable.’.redirecturl’;
需求更深一层,当前专题栏目有些是单独制作的专题,有些是模板生成的,如果全部使用redirecturl必然有些URL是无法输出的。所以需要判断,当redirecturl为空的时候还是默认输出文档URL arcurl:{dede:list row=’1’ addfields=’redirecturl’ orderby=’pubdate’}
<a href="[field:redirecturl/]" target="_blank">[field:title/]</a>
{/dede:list}
{dede:arclist typeid=’1’ row=’1’ flag=’j’ addfields=’redirecturl’ channelid=’1’ orderby=’pubdate’}<a href="[field:array runphp=’yes’] if(@me[’redirecturl’]==’’) @me=@me[’arcurl’];else @me=@me[’redirecturl’];[/field:array]" target="_blank"> [field:title/]</a>{/dede:arclist}
{dede:list row=’1’ addfields=’redirecturl’ orderby=’pubdate’}<a href="[field:array runphp=’yes’] if(@me[’redirecturl’]==’’) @me=@me[’arcurl’];else @me=@me[’redirecturl’];[/field:array]" target="_blank"> [field:title/]</a>{/dede:list}