服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > dedecms教程 >

dede织梦DEDECMS下载标签分析

时间:2018-01-18 09:26来源:未知 作者:最模板编辑 点击:
在怎样自定义织梦dedecms标签初探这篇文章中对织梦dedecms标签,作了初次探索,现在就举一个具体的例子,来学习一下织梦是标签是如何写的,这个例子比较综合,与一般简单的标签有很
在“怎样自定义织梦dedecms标签初探”这篇文章中对织梦dedecms标签,作了初次探索,现在就举一个具体的例子,来学习一下织梦是标签是如何写的,这个例子比较综合,与一般简单的标签有很大不同,而且,相当复杂,做好心理准备。今天给一个朋友开发一个在线下载并且在线支付功能的网站,所以,对这个作了一个系统的研究,就是标签{dede:field name='softlinks'/}

  虽然,感觉里面的还有些东西,现在不能理解,但是最后,还是开发完了,有很多东西看多了,写多了虽然,不知道具体的是什么意思,但是知道会用。今天就把我的开发成果,作一个总结,也把通过这个例子,加深一下对织梦标签的理解,相信以后,还会用到的。

  因为是下载站,{dede:field name='softlinks'/}是里面最难,最核心,少了它一切都是空谈,但也是最复杂的,我们分析这个标签如何从数据库调用出来的,在数据库里面又是以什么样的形式存在,又是如何插入到数据库的。

  我们倒着分析,即先分析,如何插入到数据库的,当我们发布软件的时候,如下图所示。

dede织梦DEDECMS下载标签分析
  我们要把从本地或手动指定软件下载地址,作完这一工作后,我们点击“确实”,此时,会通过soft_add.php把我们无论手工上传的,还是手工指定的都以类似{dede:link} $softurl {/dede:link}这种形式,插入到数据库表dede_addonsoft里面的字段softlinks里面了,我添加了一个,打开对应的表找到字段softlinks,这个字段的值,如下图所示。

dede织梦DEDECMS下载标签分析

  现在我们明白了,实际上标签{dede:softlinks/}要调用的是上图中的以{dede:link}开始以{/dede:link}结束的字符串,我们想一下,如果这样直接调用的话,是不是调出来的就是一个标签形式的字符串?是的,没有错,如果这样我们调用了来的就不是下载地址了,而是多了二个大括号,例如:上图中字段softlinks的值是:"{dede:link text='DedeCms3.1全新安装程序'} http://www.dedebase.com/upimg/soft/dedesoft/dedecmsv3.1.rar {/dede:link}",我们应当调用的是中间的http://www.dedebase.com/upimg/soft/dedesoft/dedecmsv3.1.rar,所以,我们就要对softlinks这个字段值,进行处理。

  处理方法,跟另一篇“怎样自定义织梦标签初探”这篇文章里的类似,但又有很大的不同。

  在内容模板即article_soft.htm里面,用标签{dede:field name='softlinks'/}来调用,这个标签调出来的是生成的静态页面,(例如 类似www.dedebase.com/a/downloads/80.html)里面的代码<a href='/plus/download.php?open=0&aid=80&cid=3'>进入下载地址列表</a>,标签源码是include/taglib/channel/softlinks.lib.php。

  这个标签源码文件softlinks.lib.php的功能,就是在生成静态网页时,把标签{dede:field name='softlinks'/}通过模板引擎,变成<a href='/plus/download.php?open=0&aid=80&cid=3'>进入下载地址列表</a>,他的作用就是这个作用,也就是这个标签源码功能到此为止。但是如果在后台设置的链接方式是跳转到另一个页面下载,那么,还会生成类似/download.php?open=2&id={$refObj->ArcID}&uhash={$uhash}代码,这个代码是我们点击“进入下载地址列表”后,显示的代码。

  真正下载的功能其实是plus/download.php这个文件,标签源码只是把下载连接解析出来,并生成对应的链接方式,而要真正去处理下载的是download.php,我们打开这个文件,找到else if($open==2)这句代码开始,前面几行就是做初始化准备,例如判断有没有下载软件资源等。

  我们看下面的代码。

dede织梦DEDECMS下载标签分析
 
  上面的代码是这个文件里面的核心代码,他的功能就是从数据库表里面,把字段softlinks的值即如下图所示。

dede织梦DEDECMS下载标签分析

  把上面的softlinks的字段值,即字符串,循环遍历出下载地址,现在我们详细分析一下这些代码。

  首先引入静态模板引擎文件dedetag.class.php,这是必须的,然后,实例化,把softlinks字段值载入,具体载入做了什么,可以去研究一下LoadSource()这个方法。实际上它的作用就是把字段softlinks的值,变成数组标记CTags,我们打印一下这个数组CTags,如下所示。
    
Array
(
    [0] => DedeTag Object
        (
            [IsReplace] =>
            [TagName] => link
            [InnerText] =>  http://www.dedebase.com/upimg/Server.zip
            [StartPos] => 0
            [EndPos] => 113
            [CAttribute] => DedeAttribute Object
                (
                    [Count] => 0
                    [Items] => Array
                        (
                            [text] => 服务器环境使用版
                        )

                )

            [TagValue] =>
            [TagID] => 0
        )

    [1] => DedeTag Object
        (
            [IsReplace] =>
            [TagName] => link
            [InnerText] =>  http://www.dedebase.com/upimg/Debug.zip
            [StartPos] => 115
            [EndPos] => 229
            [CAttribute] => DedeAttribute Object
                (
                    [Count] => 0
                    [Items] => Array
                        (
                            [text] => 本地测试专业完整版
                        )

                )

            [TagValue] =>
            [TagID] => 1
        )

)

  我们看到CTags是一个二维数组,数组里面是每个成员是一对象,对象里面又包括一个对象,这个对象里面又包括一个数组。通过foreach循环遍历后,我们就可以通过$ctag->GetInnerText()取出里面对应的下载地址,例如上面的

http://www.dedebase.com/upimg/Server.zip
http://www.dedebase.com/upimg/Debug.zip

  这二个就是通过$ctag->GetInnerText()取得的,这二个就是我们下载的真实的地址。

  回过头来看一下,下载标签源码softlinks.lib.php,它也通过跟download.php里面的几步。

  1.引入模板引擎dedetag.class.php,在include/taglib里面的文件无需引入,默认就包含了这个文件。

  2.实例化对象:new DedeTagParse()

  3.载入模板字符串,LoadSource($fvalue);这里面的$favlue类似,字段softlinks的值,或是含有标记的字符串。

  4.循环遍历标记数组CTag  foreach($dtp->CTags as $ctag),然后,通过$ctag->GetInnerText()来得到标记之间的文本,即类似上面的http://www.dedebase.com/upimg/Debug.zip。

  请注意,这与织梦dedecms其它标记,例如loop.lib.php有很大的不同,在loop等这样的织梦标签里面,是先把InnerText值载入到模板字符串,因为,这个值并不是像上面的下载一样,从表中某个字段获得的,而是标记之间的文本,这样理解起来有点难,多看一下织梦这些标签就能发现这点不同。

  在softlinks.lib.php里面,通过$row['downtype']即链接显示方式,分成二大部分代码,一部分是直接显示地址列表,另一部分是要求织梦dedecms进入下载地址列表页,然后,再判断“附件下载方式”,最后,在内容页生成下载链接页。(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
  • 上一篇: 织梦dedecms各模型文档发布异同点
  • 下一篇: 织梦dedecms添加文章生成静态网页概述
栏目列表
  • ecshop教程
  • zencart教程
  • magento教程
  • cms教程
  • php教程
  • 其他
  • OpenCart教程
  • shopex教程
  • wordpress教程
  • dedecms教程
  • prestashop教程
  • Joomla教程
热点内容
  • 删除织梦dedecms网站中所有广告的方

    使用dedecms织梦默认主题,如果装上测试数据,我们会发现网站出...

  • 浅析织梦dedecms系统三个最重要的安

    1、 改变dedecms织梦data目录位置。 data目录用于存放织梦dedecms系统...

  • Dedecms5.7列表显示TAG标签带链接的方

    已经是凌晨了,为解决像织梦Dedecms列表显示TAG标签的方法这类的...

  • 织梦dedecms添加搜索框里的提示消息

    在织梦dedecms做搜素框的时候,里面都会有一定的调试消息,就像...

  • dedecms自定义表单后台显示时间格式

    织梦dedecms自定义表单后台显示时间格式错误的解决方法 在制作...

随机内容
  • 使用Python增加Nagios微信报警通知的
  • php中json_encode中文字符乱码解决办法
  • 织梦dedecms用arclist和list调用附加表
  • PostgreSQL查看DB中trigger
  • centos下新建ftp权限
  • Magento的layout的装载顺序
  • PHP多线程类Socket方式范例
  • 织梦dede v5.7 后台采集BUG
随机模板
  • zencart鞋类模板 zencart鞋类模板 人气:2895
  • ecshop蓝色化妆品模板|化妆 ecshop蓝色化妆品模板|化妆 人气:507
  • Amass时尚潮流综合商城ma Amass时尚潮流综合商城ma 人气:102
  • Printshop 印刷业通用magent Printshop 印刷业通用magent 人气:104
  • Monica外贸综合电子商务P Monica外贸综合电子商务P 人气:717
  • Fashion Feast时尚盛宴magent Fashion Feast时尚盛宴magent 人气:641

深圳SEO优化公司和田网站优化按天扣费多少钱坪地网站建设价格滨州关键词排名包年推广推荐辽阳关键词按天收费报价恩施网站推广方案哪家好洛阳营销网站多少钱张掖营销型网站建设塘坑百度爱采购价格呼和浩特网站推广推荐漯河网站制作设计价格韶关网站定制推荐木棉湾关键词按天收费价格塔城百度网站优化排名报价丽江网络营销公司广东网站优化推广多少钱吴忠网站设计推荐诸城百度标王推荐阳江优化报价布吉高端网站设计多少钱鹰潭SEO按效果付费郑州百姓网标王报价吕梁关键词排名哪家好坪山SEO按效果付费推荐甘孜关键词按天收费推荐铜仁优化多少钱襄阳百度爱采购价格阳泉营销网站哪家好大芬网站关键词优化多少钱贵港百姓网标王推广价格池州网络营销价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化