织梦二次开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 688|回复: 0

[共用功能] 织梦“自由列表更改”功能分析教程

[复制链接]

1046

主题

1109

帖子

5334

积分

超级版主

Rank: 8Rank: 8

金币
256
贡献
3959
发表于 2015-11-7 20:23:09 | 显示全部楼层 |阅读模式
  自由列表的更改指的是如下图所示:

更改功能

更改功能


  在研究这个自由列表更改以前,我们先来研究一下一个更改功能都要做哪些“工作”:要更改自由列表内容,首先得查询出要更改的自由列表的内容这是第一步,第二步就是修改内容,然后,提交数据,更新修改的自由列表的数据库表内容。其实,任何一个织梦系统dedecms后台的功能几乎都有“更改”功能,也几乎都是处理这两步,到目前为止,还没有发现哪一个“更改”功能没有经过这两步的。

代码分析开始:

第一步:查询数据并显示,在这一步里面我们要查询数据库表#@__freelist,这个表的结构如下所示:

2.jpg

  这一步就是把表里面的内容查询出来,然后,通过模板文件freelist_edit.htm把查询出来的内容显示出来。在上面的数据库表截图我们可以看到有一个特殊的字段listtag,这里面存储的是一个标签,所以,要把这个标签直接查询出来放到如下更改界面区域里面,如下图所示:

字段listtag

字段listtag


  如果直接放到这地方是不可以的,因为,从这个字段查询出来的值是一个织梦标签,而这里要显示的是标签中间的内容,也就是我们平常所说的底层模板,所以,到这里我们按平常字段处理是不行的,这时就要用到织梦模板引擎了,如果你能想到这个的话,说明你已经掌握了织梦模板引擎了,否则,你没有掌握。

  这一步的处理代码是在文件freelist_edit.php里面如下代码:

显示功能代码

显示功能代码


  这段代码其实已经分析了很多次了,这里再简单分析一下,查询自由列表表,主要是为了获取$row['listtag']也就是字段listtag的值,然后,获取当前的tag标记:
  1. $ctag = $dtp->GetTag('list');
复制代码


  然后,引入模板文件:
  1. include DedeInclude('templets/freelist_edit.htm');
复制代码


  最后,退出程序。

  进入到模板文件freelist_edit.htm,找到这个模板里面的这一行代码:
  1. <textarea name="innertext" cols="80" rows="6" id="myinnertext" style="width:80%;height:120px"><?php echo $ctag->GetInnerText()?></textarea>
复制代码


  在这行代码里面<?php echo $ctag->GetInnerText()?>这行代码就是获取字段listtag里面的中间内容,也就是上我们选择样式后的单行记录样式。

  在这个模板文件里面也就这一行不好理解,如果你有php基础,或一直看织梦基地教程的话,其它的模板里面的代码一看就会懂的,不多解释了。

第二步:处理提交的数据,进行更新自由列表表#@__freelist。

  当我们修改好内容后,点击“保存一个列表”后,就进入到了freelist_edit.php里面的else if( $dopost=='save' )条件里面。

  在这段代码里面我们也可以分为两部分,一部分是处理提交过来的已经修改了的数据,另一部分是通过sql里面的update 表名 set 把数据更新到表#@__freelist里面,完成“更改”功能。

  在数据处理这一部分有这么一行代码如下图所示:

组装字段listtag值

组装字段listtag值


  也就是
  1. $listTag = "{dede:list $atts}$innertext{/dede:list}";
复制代码

  
  这行代码就是组装成listtag字段的值的,本教程主要介绍listtag的值的处理,既是本教程难点,也是整个织梦系统里面重点,因为,要用到织梦模板引擎类。

  然后,更新数据:

  1.     $inquery = "
  2.      UPDATE `#@__freelist` set
  3.      title='$title', namerule='$namerule',
  4.      listdir='$listdir', defaultpage='$defaultpage',
  5.      nodefault='$nodefault', templet='$templet',
  6.      edtime='$edtime', `maxpage`='$maxpage', listtag='$listTag', keywords='$keywords',
  7.      description='$description' WHERE aid='$aid';
  8.    ";
  9.     $dsql->ExecuteNoneQuery($inquery);
复制代码


  成功提示,退出程序:

  1.       ShowMsg("成功更改一个自由列表!","freelist_main.php");
  2.     exit();
复制代码


  这个更改功能就这么简单,可以概括一句话:显示数据,更新表,就是更改功能。做织梦二次开发研究到这种程度就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-9-17 20:48 , Processed in 0.245310 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表