织梦导航外链新建后为何无法打开?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 织梦建站 正文

通过后台“导航栏”设置(最常用、最推荐)

这种方法的核心是利用织梦后台的“导航栏”功能,它直观且无需修改代码。

织梦导航外链新建打开
(图片来源网络,侵删)

第1步:登录织梦后台

使用您的管理员账号登录织梦网站的后台管理系统。

第2步:进入“导航栏”管理

在左侧菜单栏中,找到并点击 【核心】 -> 【频道管理】 -> 【导航栏管理】

第3步:添加新的导航链接

在导航栏管理页面,点击右上角的 【增加一个导航】 按钮。

在弹出的表单中填写以下信息:

织梦导航外链新建打开
(图片来源网络,侵删)
  1. 导航名称:您希望在网站上显示的文字,访问官网”或“联系我们”。
  2. 导航网址:您要跳转的外部链接地址,https://www.dedecms.comhttps://www.baidu.com请务必填写完整的URL,包括 http://https://
  3. 导航类型选择“外部链接”,这是最关键的一步,它告诉织梦这个链接不是站内的栏目。
  4. 新窗口打开勾选此项,勾选后,织梦会自动为这个链接添加 target="_blank" 属性,实现新窗口打开。

填写完毕后,点击 【确定】 保存。

第4步:更新网站缓存

保存成功后,系统会提示“成功增加一个导航条目”,新的导航可能不会立刻显示在网站上,您需要:

  • 方法A(推荐):在后台首页点击右上角的 【更新系统缓存】 按钮。
  • 方法B:进入【系统】->【系统基本参数】->【性能选项】,点击“更新系统缓存”。

更新缓存后,刷新您的网站首页,新的导航链接就会出现在您指定的位置,并且点击时会在新标签页中打开。


修改模板文件(适用于更复杂的需求)

如果您对模板文件有更精细的控制需求,或者想通过代码直接实现,可以修改模板文件。

织梦导航外链新建打开
(图片来源网络,侵删)

第1步:找到并打开模板文件

织梦的导航菜单通常由一个模板文件控制,这个文件一般位于您的模板目录下,路径通常是: /templets/您的模板名称/

请找到名为 head.htmheader.htm 的文件(具体名称取决于您的模板),用代码编辑器(如 VS Code、Sublime Text 或 Dreamweaver)打开它。

第2步:定位导航菜单的代码块

head.htm 文件中,找到调用导航栏的代码,它通常是这样的:

{dede:channel type='top' row='8'}
    <li><a href='[field:typeurl/]'>[field:typename/]</a></li>
{/dede:channel}

或者更复杂的结构:

{dede:channelartlist typeid='top' row='1'}
    <div class="nav">
        {dede:channel type='top'}
            <li><a href='[field:typeurl/]'>[field:typename/]</a></li>
        {/dede:channel}
    </div>
{/dede:channelartlist}

第3步:修改代码以支持外链和新窗口打开

默认的 {dede:channel} 标签无法直接判断是否为外部链接,我们需要进行一些修改。

方案A:使用 runphp='yes' 进行判断(推荐)

这是最灵活的方法,可以自动判断链接是否为外部链接,如果是则自动添加 target="_blank"

将原来的 {dede:channel} 标签块修改为以下代码:

{dede:channel type='top' row='8' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
    <li>
        <a href="[field:typeurl/]" [field:isaddtarget/]>[field:typename/]</a>
    </li>
{/dede:channel}

在您的模板文件 head.htm 的顶部({dede:config} 标签之后),添加以下PHP代码:

{dede:config}
    ...
{/dede:config}
{dede:php}
    function isAddTarget($typeid, $typelink, $typename)
    {
        // 获取当前栏目的信息
        $typeinfo = GetOneType($typeid);
        // 检查链接是否以 http:// 或 https:// 开头
        if (strpos($typelink, 'http://') === 0 || strpos($typelink, 'https://') === 0) {
            // 如果是外部链接,返回 target="_blank"
            return ' target="_blank"';
        } else {
            // 如果是内部链接,返回空
            return '';
        }
    }
    // 将函数注册到织梦标签
    $isaddtarget = 'isAddTarget';
{/dede:php}

代码解释:

  1. 我们修改了 {dede:channel} 标签,在 <a> 标签中增加了一个自定义属性 [field:isaddtarget/]
  2. 通过 {dede:php} 标签我们定义了一个 isAddTarget 函数。
  3. 这个函数会检查链接地址 ($typelink) 是否包含 http://https://
  4. 如果是,函数会返回 target="_blank",否则返回空字符串。
  5. 我们将这个函数注册给了织梦的标签系统,[field:isaddtarget/] 就会调用这个函数并返回结果。

这样,所有外部链接都会自动加上 target="_blank" 属性。

方案B:手动为特定链接添加(简单直接)

如果您只是想给某一个特定的链接添加新窗口打开,而不是所有外部链接,可以直接在模板文件中修改。

找到对应的 <a> 标签,直接在 href 属性后面添加 target="_blank" 即可。

<!-- 原始代码 -->
<a href='https://www.example.com'>访问官网</a>
<!-- 修改后 -->
<a href='https://www.example.com' target="_blank">访问官网</a>

注意:这种方法是硬编码,如果您需要在后台动态修改这个链接,就需要再次编辑模板文件,不如方法一灵活。


总结与建议

方法 优点 缺点 适用场景
后台设置 操作简单,无需代码,符合织梦后台管理逻辑 功能相对固定,灵活性稍差 绝大多数情况下的首选,特别是给客户使用时。
模板修改 功能强大,灵活,可自定义判断逻辑 需要修改代码,有一定门槛,升级模板时可能被覆盖 需要复杂逻辑(如自动识别所有外链)或对现有模板有深度定制需求时。

对于绝大多数用户,强烈推荐使用方法一,它是最简单、最安全、最符合织梦CMS使用习惯的方式。

-- 展开阅读全文 --
头像
dede微电影模板哪里下载?
« 上一篇 03-07
dede友情链接模块如何设置与调用?
下一篇 » 03-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]