在使用DedeCMS(织梦系统)时,自定义表单提交后通常会跳转到表单列表页。然而,有时我们希望提交后能够返回到上一页,这就需要对系统的默认行为进行调整。以下是一篇关于如何实现这一功能的SEO优化文章。

如果您正在寻找一种方法,让DedeCMS自定义表单提交后跳转至上一页,那么这篇文章将为您提供详细的解决方案。

首先,我们需要了解DedeCMS自定义表单的工作原理。默认情况下,当用户提交表单时,系统会执行/plus/diy.php脚本,并根据设置跳转到相应的页面。为了实现跳转至上一页的功能,我们需要对表单模板和PHP脚本进行一些修改。


<form method="post" enctype="multipart/form-data" action="/plus/diy.php" onsubmit="return checkpost();" name="myform" >
    <input type="hidden" name="action" value="post" />
    <input type="hidden" name="diyid" value="1" />
    <input type="hidden" name="do" value="2" />
    <input type="hidden" name="dede_fields" value="name,text;tel,textchar;message,multitext;yydate,textchar" />
    <input type="hidden" name="dede_fieldshash" value="ffb12dc337564ab8f0405b8147cf49b7" />
</form>

以上是DedeCMS自定义表单的基本HTML结构。您可以在路径/templets/.../plus/post_diyform.htm中找到并修改它。

接下来,我们需要修改/plus/diy.php文件,以支持跳转至上一页的功能。具体步骤如下:

打开/plus/diy.php文件,找到类似以下的代码段:


if($dsql->ExecuteNoneQuery($query)) {
    $id = $dsql->GetLastID();
    if($diy->public == 2) {
        $goto = "diy.php?action=list&diyid={$diy->diyid}";
        $bkmsg = '发布成功,现在转向表单列表页...';
    } else {
        $goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/plus/diy.php?action=post&diyid=1';
        $bkmsg = '发布成功,请等待管理员处理...';
    }
    showmsg($bkmsg, $goto);
}

在这个代码段中,变量$goto决定了提交成功后的跳转地址。我们可以将其修改为返回上一页的逻辑。例如:


$goto = $_SERVER['HTTP_REFERER'];

这样,当表单提交成功后,系统会自动跳转到用户提交表单之前的页面。

此外,如果您的表单是在首页或其他页面通过iframe调用的,也可以通过JavaScript实现类似的跳转效果。例如:


window.history.go(-1);

这种方法适用于某些特殊场景,但需要注意兼容性问题。

总结来说,通过修改/plus/diy.php中的$goto变量值为$_SERVER['HTTP_REFERER'],可以轻松实现DedeCMS自定义表单提交后跳转至上一页的功能。希望这篇文章能帮助您解决相关问题!

关键词:DedeCMS自定义表单、跳转至上一页、SEO优化、PHP脚本修改、HTML表单结构调整