DEDE织梦cms常用的参数标签汇总、以及操作过程中的一些bug问题解决方法,dede网站二开,以下龙腾飞网络科技-小吴在建站实操中笔记记录,织梦dede建站教程保存使用非常方便:
【DEDE建站教程】
织梦dede如何添加“自定义表单”实现反馈信息、在线留言、在线订购、在线报名系统及标签怎么调用
做一些提交信息到后台或发送到邮箱的功能,以便于收集、统计、分析及处理更多的数据。比如:在线订单、在线报名、在线留言、反馈信息、在线订购等一些常见的互动应用。
问题:织梦dede如何添加“自定义表单”实现反馈信息、在线留言、在线订购、在线报名系统及标签怎么调用?
解决方法:使用织梦自带的织梦自定义表单即可实现
1、自定义表单管理
后台管理 - 核心 - 频道模型 - 自定义表单 - 增加新的自定义表单
1)填写这个表单的名称——添加名称——公开审核过的——确认——建立了表单;
2)选择管理——修改——添加新字段——添加名称,代码;
这个待会会调用前台别人要填的项目(数据字段可用首拼,数据类型一般写单行文本或多行文本,可以选下拉)——确定——因为刚刚点了“选择公开审核过的”所以能够点该表单的管理——前台预览——新页面打开——发布信息——右键源代码;
以下代码就是表单的代码调用的单页面
把内容
代码语言:javascript代码运行次数:0运行复制{dede:field.content/}改成或加上以下代码,调用好样式即可。
代码语言:javascript代码运行次数:0运行复制
如果已有表单,提取以下“value”编号即可代码语言:javascript代码运行次数:0运行复制修改后,可以选择屏蔽掉“公开审核过的”,选择[不公开],即使选错审核了也不会在前台公开。
还有就怎样把留言的信息调用出来,上面明白搞出来,下面就简单了。
代码语言:javascript代码运行次数:0运行复制{dede:loop table='dede_diyform1' sort='' row='10' if=''}
{/dede:loop}代码语言:javascript代码运行次数:0运行复制'dede_diyform1' 是要调用的表的名称
[field:dosxp/] 是你添加的表的字段名称要想无需审核,提交之后立刻显示,在增加新表单的“前台列表和内容页公开——”选项——完全公开”
【后续问题一】dedecms自定义表单提交成功如何返回当前页面
解决方法一:
自定义表单的数据,是提交到dedecms自带的plug下的diy.php文件进行处理,
代码语言:javascript代码运行次数:0运行复制$bkmsg = '发布成功,请等待管理员处理…';这里修改提交成功的信息。
plus/diy.php自带的代码,需要在
代码语言:javascript代码运行次数:0运行复制$bkmsg = '发布成功,请等待管理员处理…';这后面添加一段代码让他返回到当前页面,代码是
代码语言:javascript代码运行次数:0运行复制echo "";这样添加过后就可以了。
然后替换掉网站原来的文件,就可以实现表单提交过后返回当前页面。
最后的代码如下:
代码语言:javascript代码运行次数:0运行复制if($dsql->executenonequery($query))
{
$id = $dsql->GetLastID();
if($diy->public == 2)
{
//diy.php?action=view&diyid={$diy->diyid}&id=$id
$goto = "diy.php?action=list&diyid={$diy->diyid}";
$bkmsg = '发布成功,现在转向表单列表页…';
}
else
{
$goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/';
$bkmsg = '发布成功,请等待管理员处理…';
echo "";
}
showmsg($bkmsg, $goto);
}解决方法二:
打开 plus/diy.php 文件
找到
代码语言:javascript代码运行次数:0运行复制$goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/';
$bkmsg = '发布成功,请等待管理员处理…';
showmsg($bkmsg, $goto);改成
代码语言:javascript代码运行次数:0运行复制$goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/';
$bkmsg = '发布成功,请等待管理员处理…';
showmsg($bkmsg, -1);【后续问题二】dede自定义表单防止多次提交
解决方法一:
代码语言:javascript代码运行次数:0运行复制if(!is_array($diyform))
{
showmsg('自定义表单不存在', '-1');
exit();
}再其下添加
代码语言:javascript代码运行次数:0运行复制//检测游客是否已经提交过表单
if(isset($_COOKIE['VOTE_MEMBER_IP']))
{
if($_COOKIE['VOTE_MEMBER_IP'] == $_SERVER['REMOTE_ADDR'])
{
echo "";
//*ShowMsg('您已经填写过表单啦','-1');//该项是直接跳到页面的,可能出现错误,可删除换成上面的代码*/
exit();
} else {
setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/');
}
} else {
setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/');
}此方法能够仿制初级用户重复提交,但是如果清除cookie的话还可以可以提交的。
解决方法二:测试后弹出已填过表单,同时也会再次弹出“提交成功”
根目录下的 /plus/diy.php 文件,大约在58行,
1、查找,修改成如下代码即可。
修改前:
代码语言:javascript代码运行次数:0运行复制 if(!empty($dede_fields))
{
$fieldarr = explode(';', $dede_fields);修改后:
代码语言:javascript代码运行次数:0运行复制 if(!empty($dede_fields))
{
session_start();
$cur_ip=GetIP();
if($cur_ip==$_SESSION['form_ip'])
{
echo "";
/*showmsg('Please do not repeat the submission','/',0,10000);exit;//会跳到另外一个页面,可删除*/
}
else
{
$_SESSION['form_ip']=$cur_ip;
}//防止表单重复提交
$fieldarr = explode(';', $dede_fields);修改完成后,可以防止dede自定义表单被重复提交。
【后续问题】织梦(dedecms)自定义表单,“必填项”设置方法
解决方法:
1、打开\plus\diy.php 文件,在40行左右
查找:
代码语言:javascript代码运行次数:0运行复制$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);在下面加入代码:
代码语言:javascript代码运行次数:0运行复制//增加必填字段判断
if($required!=''){
if(preg_match('/,/', $required))
{
$requireds = explode(',',$required);
foreach($requireds as $field){
if($$field==''){
echo "";
/*showMsg('带*号的为必填内容,请正确填写', '-1');//跳转到另外页面了,删掉这条代码*/
exit();
}
}
}else{
if($required==''){
echo "";
/*showMsg('带*号的为必填内容,请正确填写', '-1');//跳转到另外页面了,删掉这条代码*/
exit();
}
}
}
//end2、在表单页面找到这行代码
代码语言:javascript代码运行次数:0运行复制