织梦二次开发

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

[其它] 织梦二次开发:动态增加下载按扭颜色

[复制链接]

40

主题

42

帖子

685

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
38
贡献
605
发表于 2018-11-7 15:13:14 | 显示全部楼层 |阅读模式
  如果只看标题好象不好理解,我们在淘宝等商城上面买东西时,会有一个“立即购买”和“加入到购物车”两个按扭,如下图所示:

下载按扭

下载按扭


  大家看看这两个按扭的颜色是不一样的,而织梦默认的下载功能可以实现动态的生成两个按扭,但是,颜色是完全一样的,如下图所示:

2.jpg

开发要求:

  下载按扭要像淘宝上面的两个按扭一样,颜色要不一样,并且,在织梦后台增加下载按扭后,生成的颜色都要不一样,至少要保持三个不同颜色的按扭。

  可能有人觉得直接用css实现不就行了,其实这个用css3也可以实现,只要给生产的按扭定义一个background不就行了,这样也可以实现,例如,先定义好每个生产的按扭颜色是可以实现的。

  但是,我做这个教程主要是想学习一下织梦这个动态增加下载按扭的功能。

  在教程“织梦二次开发实现动态生成页面锚点定位跳转 ”中,这个功能已经研究过,本教程研究的侧重点不一样。

  这里再次研究是因为我在接单的过程中发现,这个功能非常有用,有很多的地方都用到这个功能,做这个织梦二次开发教程也是为了让我自己好好再熟悉一下,因为,这个下载功能已经接了五单,也来总结一下。

分析:

  当我们在后台软件地址后,在前台就会生成一个下载按扭,那们要实现上面的要求,只需要对处理这个“软件地址”的文件进行织梦二次开发就行了。

  处理这个代码的文件是:/include/taglib/channel/softlinks.lib.php

  生产按扭用到的模板是:templets/system/channel_downlinks.htm

  要做这个功能开发,就要明白后台添加“软件地址”后为什么会生成一个按扭,这是如何生成的,这些必须理解。
3.jpg

下载按扭生成原理:

  织梦在softlinks.lib.php文件里面,把我们在后台添加的链接生成这样一个链接:
  1. $link = $phppath."/download.php?open=2&id={$refObj->ArcID}&uhash={$uhash}";
复制代码

  至于如何生成的,为什么会是download.php来处理下载的,这些织梦基地都有相关的教程,这里不再多解释了。

  然后,通过这个链接替换模板文件channel_downlinks.htm里面的~link~,这段重要的代码如下所示:

  1.     $tempStr = GetSysTemplets('channel_downlinks.htm');
  2.     $downlinks = '';
  3.     foreach($dtp->CTags as $ctag)
  4.     {
  5.         if($ctag->GetName()=='link')
  6.         {
  7.             $link = trim($ctag->GetInnerText());
  8.             $serverName = trim($ctag->GetAtt('text'));
  9.             $islocal = trim($ctag->GetAtt('islocal'));
  10.             if (isset($sertype_arr[$serverName]) && $islinktype && $sertype_arr[$serverName] != $link_type) continue;
  11.             
  12.             //分析本地链接 www.dedebase.com
  13.             if(!isset($firstLink) && $islocal==1) $firstLink = $link;
  14.             if($islocal==1 && $row['islocal'] != 1) continue;
  15.    
  16.             //支持http,迅雷下载,ftp,flashget
  17.             if(!preg_match("#^http:\/\/|^thunder:\/\/|^ftp:\/\/|^flashget:\/\/#i", $link))
  18.             {
  19.                 $link = $GLOBALS['cfg_mainsite'].$link;
  20.             }
  21.             $downloads = getDownloads($link);
  22.             $uhash = substr(md5($link), 0, 24);
  23.             if($row['gotojump']==1)
  24.             {
  25.                 $link = $phppath."/download.php?open=2&id={$refObj->ArcID}&uhash={$uhash}";
  26.             }
  27.             $temp = str_replace("~link~",$link,$tempStr);
  28.             $temp = str_replace("~server~",$serverName,$temp);
  29.             $temp = str_replace("~downloads~",$downloads,$temp);
  30.             $downlinks .= $temp;
  31.         }
  32.     }
复制代码

  那么,我们要实现上面的功能,也可以在模板文件里面加上一个css类,然后,通过增加一个“参数”~class~(这个参数随便起名的),来实现动态的生活不同的风格的按扭。

  也就是在上面增加:
  1. $temp = str_replace("~class~",$link,$tempStr);
复制代码

  在模板文件里面增加类:
  1. <li><a href="~link~" target="_blank" class="class">~server~</a></li>
复制代码
然后,再定义css就可以了,比如,定义成红色跟绿色,这个就可以动态的生成不同颜色的下载按扭代码了。

  因为,这个功能是给一个客户开发的,不把所有的代码都发上来了,其实,只要是你懂得织梦二次开发,一看就明白了。
回复

使用道具 举报

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

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-8-24 07:32 , Processed in 0.230432 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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