织梦自定义模型如何实现跳转功能?

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

这是一个非常常见的需求,尤其是在制作企业官网、产品展示、小说站等需要将用户引导到外部链接或站内其他页面的场景。

织梦 自定义模型 跳转
(图片来源网络,侵删)

核心思路是:在自定义模型中添加一个用于存储跳转地址的字段,然后在内容页模板中通过判断这个字段是否存在,来决定是显示正常内容还是执行跳转。

下面我将分步进行详细说明,包括两种主要跳转方式:JS跳转Meta Refresh跳转


第一步:创建自定义模型并添加跳转字段

你需要确保你已经创建好了你的自定义模型(产品、小说、外部链接等)。

  1. 进入模型管理

    织梦 自定义模型 跳转
    (图片来源网络,侵删)
    • 登录织梦后台。
    • 在左侧菜单栏找到 核心 -> 内容模型管理
    • 点击 增加一个新模型
  2. 填写模型基本信息

    • 模型名称:给你的模型起个名字,产品”。
    • 表前缀:系统会自动生成,如 dede_ 后面加你的模型名缩写,如 dede_archives_product,一般无需修改。
    • 内容目录:存放此模型内容HTML文件的目录,/product/
    • 模型表前缀:同上,无需修改。
    • 其他选项根据需要填写,然后点击 确定
  3. 添加跳转字段(最关键的一步)

    • 在模型列表中,找到你刚刚创建的模型,点击右侧的 字段管理
    • 点击 增加新字段
    • 字段名:建议用英文,jumpurl(注意:字段名不能使用数据库关键字,如 url, link 等,jumpurl 是一个安全的选择)
    • 字段类型:选择 单行文本
    • 字段提示:在后台添加内容时,这个提示会显示在输入框上方,请输入外部链接地址(留空则不跳转)”。
    • 默认值:留空即可。
    • 其他选项:如是否允许为空、是否在列表页显示等,根据你的需求设置,通常这里允许为空。
    • 点击 保存

你的自定义模型已经有了存储跳转地址的字段 jumpurl


第二步:修改内容页模板(article_article.htm

这是实现跳转逻辑的核心,你需要编辑你的内容页模板文件,它通常位于 /templets/default/ 目录下,或者你当前使用的模板目录中。

织梦 自定义模型 跳转
(图片来源网络,侵删)

请务必在修改前备份原始的 article_article.htm 文件!

打开 article_article.htm 文件,找到 {dede:field.body/} 这个标签,它负责显示文章的正文内容,我们将在这里加入跳转逻辑。

以下是两种跳转方式的代码实现,你可以根据喜好选择一种。

使用 JavaScript (JS) 跳转 (推荐)

这种方式用户体验更好,可以先将页面内容加载出来,然后再跳转,或者提供一个“点击访问”的按钮。

代码示例:

{dede:field name='body'/}
<script type="text/javascript">
    // 获取你在第一步中创建的字段值
    var jumpUrl = "{dede:field.jumpurl/}";
    // 判断 jumpUrl 是否为空
    if (jumpUrl != '') {
        // --- 这里提供两种跳转方式,任选其一 ---
        // 方式A: 直接延迟跳转 (例如3秒后)
        // setTimeout("window.location.href='" + jumpUrl + "'", 3000);
        // 方式B: 提示并等待用户点击 (推荐,用户体验更好)
        if(confirm("您即将离开本站,前往外部链接:" + jumpUrl + "\n\n是否继续?")) {
            window.location.href = jumpUrl;
        } else {
            // 如果用户点击“取消”,可以什么都不做,或者返回首页等
            // window.location.href = '/'; 
        }
    }
</script>

代码解释:

  1. {dede:field name='body'/}:首先正常显示文章内容。
  2. <script type="text/javascript">:嵌入JavaScript代码。
  3. var jumpUrl = "{dede:field.jumpurl/}";:通过 dede:field 标签获取当前文章的 jumpurl 字段值,并赋值给 JavaScript 变量 jumpUrl
  4. if (jumpUrl != '') { ... }:判断 jumpurl 是否不为空,如果为空,说明不需要跳转,JavaScript代码块就不会执行。
  5. 方式A (延迟跳转):使用 setTimeout 函数,在页面加载3秒后自动跳转到 jumpUrl 指定的地址。
  6. 方式B (确认跳转):使用 confirm 弹出一个确认对话框,如果用户点击“确定”,则执行跳转;如果点击“取消”,则什么都不做(或执行你设定的其他操作,如返回首页),这种方式更友好,让用户有选择权。

使用 HTML Meta Refresh 跳转

这种方式更简单,直接在HTML的<head>部分添加一个刷新指令。

代码示例:

<head>
    <meta charset="utf-8">
    ...其他head标签...
    {dede:field.jumpurl runphp='yes'}
        if(@me != ''){
            @me = "<meta http-equiv='refresh' content='3;url=".@me."'>";
        } else {
            @me = "";
        }
    {/dede:field.jumpurl}
</head>
<body>
    ...页面其他内容...
    {dede:field.name/}
    {dede:field.body/}
    ...页面其他内容...
</body>

代码解释:

  1. 这段代码放在 <head></head> 之间。
  2. {dede:field.jumpurl runphp='yes'}:对 jumpurl 字段进行PHP处理。
    • runphp='yes' 表示开启PHP执行。
    • if(@me != ''):判断 jumpurl 的值是否为空。
    • 如果不为空,就生成一个 <meta http-equiv='refresh' content='3;url=...'> 标签。content='3' 表示3秒后跳转。
    • 如果为空,则不生成任何东西。
  3. 这种方式的缺点是,如果字段为空,也会在head里留一个空的PHP判断,虽然不影响功能,但不够优雅。

第三步:使用与测试

  1. 更新缓存:在后台点击 系统 -> 一键更新网站 -> 更新缓存,确保模板修改生效。
    • 进入后台 ,选择你刚刚创建的自定义模型(如“产品”)。
    • 、内容等基本信息。
    • 在你新添加的“跳转地址”字段中,输入一个完整的URL,https://www.example.com
  2. 访问测试
    • 前台访问你刚刚发布的这篇内容的页面。
    • 如果使用JS跳转(方案一):页面会显示正文,然后弹出确认框或等待几秒后跳转。
    • 如果使用Meta跳转(方案二):页面会短暂显示正文,然后自动跳转到你设置的URL。
  3. 测试不跳转的情况
    • 再次进入编辑这篇内容,将“跳转地址”字段清空,然后更新。
    • 再次访问前台页面,这次页面应该会正常显示所有内容,并且没有任何跳转行为

总结与注意事项

  • 推荐使用JS跳转(方案一):因为它更灵活,用户体验更好,可以通过confirm对话框让用户自己决定是否跳转。
  • 字段命名:确保你使用的字段名(如jumpurl)在模板中与后台添加的字段名完全一致。
  • URL格式:在后台填写跳转地址时,请务必填写完整的URL,包括 http://https://
  • SEO考虑:如果大量页面被设置为无意义的外部跳转,可能会对网站SEO产生一定影响,请合理使用此功能。
  • 备用方案:如果你只想对某些特定文章进行跳转,而不是整个模型,那么这个方法依然适用,只需在需要跳转的文章中填写地址,不需要跳转的文章留空即可。

通过以上步骤,你就可以成功地为织梦自定义模型实现内容页的跳转功能了。

-- 展开阅读全文 --
头像
Dede PC与手机如何同步?教程步骤详解
« 上一篇 今天
蓝色政府协会类织梦网站,如何高效搭建与运营?
下一篇 » 今天

相关文章

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

目录[+]