最近给客户弄一个dede的站,客户要求我们把导航栏目里的外链接用新窗口打开。结果网上找了很多方法能行的不多。自己实践可行的这个方法分享出来。
在使用织梦dedecms模板的时候,我们有时需要将某个栏目做成一个外部链接。但在dede模板网站后台里面设置好链接后,页面会全部在当前窗口打开,不方便使用。
织梦模板dedecms默认情况下导航里面的外部链接点击了是直接在当前窗口打开的,这样不利于SEO优化,我们需要修改成在新窗口中打开,但是如果直接在导航标签里面添加target属性的话所有的栏目导航都是在新窗口中打开了,同样不是我们需要的效果,下面就教大家如何实现只让外部链接导航在新窗口打开,而普通导航栏目在当前窗口打开!下面将自己实验成功的方法说明如下:
主要步骤如下:
找到并打开/include/taglib/channel.lib.php文件,在里面找到如下代码:126行左右
|
在其下面添加如下代码:
$row['target'] = ($row['ispart']==2) ? "target=_blank" : "";
添加完成后保存,然后在模板-标签源码管理-找导航栏目的标签,比如我的是channel.lib.php,找到里面的<a>标签里面添加一个[field:target/],演示代码如下:
{dede:channel type='top' row='9' currentstyle="<li class='on'><a href='~typelink~' ~rel~><span>~typename~</span></a></li>"}
<li><a href='[field:typeurl/]' [field:rel/] [field:target/]><span>[field:typename/]</span></a></li>
{/dede:channel}
这样就可以自动判断并给外部链接导航添加target=_blank属性了,点击就是新窗口打开,而正常的导航则不会在新窗口打开。
下面是{dede:channelArtlist}调用方式
{dede:channelArtlist typeid=top}
<li>
<a {dede:field.ispart runphp=yes}(@me==2)? @me=' target="_blank"':@me='';{/dede:field.ispart} href="{dede:field name='typeurl'/}" >{dede:field name='typename'/}</a>
<ul style="visibility: hidden;">
{dede:channel type=son}
<li><a href="[field:typelink/]" [field:target/]>[field:typename/]</a></li>
{/dede:channel}
</ul>
</li>
{/dede:channelArtlist}