织梦二次开发教程:织梦实现多集视频播放

基于《织梦内容管理系统 DedeCMS V5.7 UTF8 SP2 春哥精简版下载》开发,织梦二次开发实战教程,织梦开发实现多集视频播放,用织梦系统做的小视频网站。废话少续,直接上织梦教程,文章末尾附懒人包。

一、添加字段

用文章模型做视频,一定要添加字段,先给附加表加数据库字段。添加字段 (后台-系统-SQL命令行工具-执行)

Source Code
  1. ALTER TABLE `#@__addonarticle` ADD `softlinks` text;

二、发布文件

①、打开 /dede/article_add.php 搜索

Source Code
  1. $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";

改为

PHP
  1.     //软件链接列表
  2.     $urls = '';
  3.     //本地链接处理
  4.     $softurl = stripslashes($softurl);
  5.     if($softurl != '')
  6.     {
  7.         $urls .= "{dede:link islocal='1' text='{$servermsg}'} {$softurl} {/dede:link}\r\n";
  8.     }
  9.     //其它链接处理
  10.     for($i=0; $i<=300; $i++)
  11.     {
  12.         if(!empty(${'softurl'.$i}))
  13.         {
  14.             $forconfig = empty(${'forconfig'.$i}) ? FALSE : TRUE;
  15.             if($forconfig)
  16.             {
  17.                 if(empty(${'need'.$i})) continue;
  18.                 $serverUrl = stripslashes(${'softurlfirst'.$i});
  19.                 $serverUrl = preg_replace("#\/$#", "", $serverUrl);
  20.                 $softurl = stripslashes(${'softurl'.$i});
  21.                 if( cn_substr($softurl, 1) != '/' ) $softurl = '/'.$softurl;
  22.                 $softurl = $serverUrl.$softurl;
  23.             }
  24.             else
  25.             {
  26.                 $softurl = stripslashes(${'softurl'.$i});
  27.             }
  28.             $servermsg = str_replace("'", "", stripslashes(${'servermsg'.$i}));
  29. $ii = $i+2;
  30.             if($servermsg=='') $servermsg = '第'.$ii.'集';
  31.             if($softurl != '')
  32.             {
  33.                 $urls .= "{dede:link text='{$servermsg}'} {$softurl} {/dede:link}\r\n";
  34.             }
  35.         }
  36.     }
  37.     $urls = addslashes($urls);
  38.     $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,softlinks,body{$inadd_f}) Values('{$arcID}','{$typeid}','{$redirecturl}','{$templet}','{$useip}','{$urls}','{$body}'{$inadd_v})";

②、打开 /dede/article_edit.php 搜索

Source Code
  1. $channelid = $arcRow['channel'];

在它上面加入

PHP
  1.     $newRowStart = 1;
  2.     $nForm = '';
  3.     $daccess = $addRow['daccess'];
  4.     $needmoney = $addRow['needmoney'];
  5.     if($addRow['softlinks'] != '')
  6.     {
  7.         $dtp = new DedeTagParse();
  8.         $dtp->LoadSource($addRow['softlinks']);
  9.         if(is_array($dtp->CTags))
  10.         {
  11.             foreach($dtp->CTags as $ctag)
  12.             {
  13.                 if($ctag->GetName()=='link')
  14.                 {
  15.                     $islocal = $ctag->GetAtt('islocal');
  16.                     if($islocal != 1) $needmsg = "<input type='checkbox' name='del{$newRowStart}' value='1' />删除";
  17.                     else $needmsg = '<input name="sel1" type="button" id="sel1" value="选取" onClick="SelectSoft(\'form1.softurl'.$newRowStart.'\')" />';
  18.                     $nForm .= "<div style='line-height:36px'>视频地址{$newRowStart}:<input type='text' name='softurl{$newRowStart}' style='width:280px' value='".trim($ctag->GetInnerText())."' />
  19.             选集名称:<input type='text' name='servermsg{$newRowStart}' value='".$ctag->GetAtt("text")."' style='width:150px' />
  20.             <input type='hidden' name='islocal{$newRowStart}' value='{$islocal}' />
  21. {$needmsg}
  22.             </div>\r\n";
  23.                     $newRowStart++;
  24.                 }
  25.             }
  26.         }
  27.         $dtp->Clear();
  28.     }

继续搜索

Source Code
  1. $iquery = "UPDATE `$addtable` SET typeid='$typeid',body='$body'{$inadd_f},redirecturl='$redirecturl',templet='$templet',userip='$useip' WHERE aid='$id'";

改为

PHP
  1.     //软件链接列表
  2.     $urls = '';
  3.     for($i=1; $i<=300; $i++)
  4.     {
  5.         if(!empty(${'softurl'.$i}))
  6.         {
  7.             $islocal = empty(${'islocal'.$i}) ? '' : 1;
  8.             $isneed = empty(${'del'.$i}) ? true : false;
  9.             $servermsg = str_replace("'",'',stripslashes(${'servermsg'.$i}));
  10.             $softurl = stripslashes(${'softurl'.$i});
  11.             
  12.             if($servermsg=='')
  13.             {
  14.                 $servermsg = '第'.$i.'集';
  15.             }
  16.             if($softurl != '')
  17.             {
  18. if($islocal==1) $urls .= "{dede:link islocal='{$islocal}' text='{$servermsg}'} {$softurl} {/dede:link}\r\n" ;
  19.                 else if($isneed) $urls .= "{dede:link text='{$servermsg}'} {$softurl} {/dede:link}\r\n";
  20.                 else continue;
  21.             }
  22.         }
  23.     }
  24.     $urls = addslashes($urls);
  25. $iquery = "UPDATE `{$addtable}` SET typeid='{$typeid}',body='{$body}'{$inadd_f},redirecturl='{$redirecturl}',templet='{$templet}',softlinks ='{$urls}',userip='{$useip}' WHERE aid='{$id}'";

③、打开 /dede/templets/article_add.htm 搜索

Source Code
  1. -->
  2. </script>
  3. </head>

改为

Source Code
  1. var startNum = 0;
  2. function MakeUpload()
  3. {
  4. var upfield = document.getElementById("uploadfield");
  5. var endNum =  parseInt(document.form1.picnum.value) + startNum-1;
  6. if(endNum > 300) endNum = 300;
  7. for(startNum; startNum<=endNum; startNum++){
  8. upfield.innerHTML += "<div style='line-height:36px'>视频地址"+startNum+":<input type='text' name='softurl"+startNum+"' style='width:280px' value='' />  选集名称:<input type='text' name='servermsg"+startNum+"' style='width:150px' /></div>\r\n";
  9. }
  10. }
  11. function ShowHideAddr()
  12. {
  13. document.getElementById('morelink').style.display = (document.getElementById('morelink').style.display=='block' ? 'none' : 'block');
  14. //document.getElementById('morelink').style.height = '100%';
  15. document.getElementById('btsh3').value = (document.getElementById('morelink').style.display=='block' ? '隐藏地址' : '显示地址');
  16. }
  17. -->
  18. </script>
  19. </head>

继续搜索

Source Code
  1. 文章内容

在它所在的 tr 上面加

Source Code
  1. <tr>
  2.   <td height="24" bgcolor="#F9FCEF" class="bline2"><strong>&nbsp;视频选集列表:</strong></td>
  3. </tr>
  4. <tr>
  5.   <td height="24"  class="bline"><table width="800" border="0" cellspacing="0" cellpadding="0">
  6.       <tr>
  7.         <td width="90" height="30">&nbsp;视频地址:</td>
  8.         <td><input name="softurl" type="text" id="softurl" size="35" />
  9.           <input name="sel1" type="button" id="sel1" value="选取" onClick="SelectSoft('form1.softurl')" />
  10.           选集名称:
  11.           <input name="servermsg" type="text" id="servermsg" value="第1集" style="width:150px" />
  12.         </td>
  13.       </tr>
  14.     </table></td>
  15. </tr>
  16. <tr>
  17.   <td height="24"  class="bline" style="padding-left:8px"><table width="800" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:5px;" class="bline">
  18.       <tr>
  19.         <td width="90">增加选集:</td>
  20.         <td><input name="picnum" type="text" id="picnum" size="8" value="5" />
  21.           <input name='kkkup' type='button' id='kkkup2' value='增加地址' onClick="MakeUpload();" />
  22.           &nbsp;
  23.           <input type="button" name="Submit3" id="btsh3" value="隐藏地址" onClick="ShowHideAddr();" />
  24.           (最多为300个链接) </td>
  25.       </tr>
  26.     </table>
  27.     <div id="morelink" style="display:block">
  28.       <div id='uploadfield' style="width:790px"></div>
  29.     </div></td>
  30. </tr>

④、打开 /dede/templets/article_edit.htm 搜索

Source Code
  1. -->
  2. </script>
  3. </head>

改为

Source Code
  1. var startNum = <?php echo $newRowStart?>;
  2. function MakeUpload()
  3. {
  4. var upfield = document.getElementById('uploadfield');
  5. var endNum =  parseInt(document.form1.picnum.value) + startNum;
  6. if(endNum > 300) endNum = 300;
  7. for(startNum; startNum < endNum; startNum++)
  8. {
  9. upfield.innerHTML += "<div style='line-height:36px'>视频地址"+startNum+":<input type='text' name='softurl"+startNum+"' style='width:280px' value='' />  选集名称:<input type='text' name='servermsg"+startNum+"' style='width:150px' /></div>\r\n";
  10. }
  11. }
  12. function ShowHideAddr()
  13. {
  14. document.getElementById('morelink').style.display = (document.getElementById('morelink').style.display=='block' ? 'none' : 'block');
  15. document.getElementById('btsh3').value = (document.getElementById('morelink').style.display=='block' ? '隐藏地址' : '显示地址');
  16. }
  17. -->
  18. </script>
  19. </head>

继续搜索

Source Code
  1. 文章内容

在它所在的 tr 上面加

Source Code
  1. <tr>
  2.   <td height="24" colspan="4" bgcolor="#F9FCEF"class="bline2"><strong>&nbsp;视频选集列表:</strong></td>
  3. </tr>
  4. <tr>
  5.   <td height="24" colspan="4" class="bline"><table width="800" border="0" cellspacing="0" cellpadding="0">
  6.       <tr>
  7.         <td width="72">&nbsp;增加选集:</td>
  8.         <td><input name="picnum" type="text" id="picnum" size="8" value="5" />
  9.           <input name='kkkup' type='button' id='kkkup2' value='增加数量' onClick="MakeUpload();" />
  10.           &nbsp;
  11.           <input type="button" name="Submit3" id="btsh3" value="隐藏地址" onClick="ShowHideAddr();" />
  12.           (最多为300个链接) </td>
  13.       </tr>
  14.     </table></td>
  15. </tr>
  16. <tr>
  17.   <td height="24" colspan="4" class="bline" style="padding-left:8px">
  18.   <?php echo $nForm; ?>
  19.     <div id='morelink' style='display:block'>
  20.       <div id='uploadfield' style='width:800px'></div>
  21.     </div></td>
  22. </tr>

三、添加方法

打开 /include/extend.func.php 在它底部加

PHP
  1. function bodyvideo($id) {
  2. global $dsql,$cfg_basedir;
  3. $imgurls = '';
  4. $row = $dsql->GetOne("SELECT a.id,c.addtable FROM `#@__archives` AS a LEFT JOIN `#@__channeltype` AS c ON a.channel=c.id where a.id='{$id}'");
  5. $result = GetOneArchive($id);
  6. $addtable = trim($row['addtable']);
  7. $row = $dsql->GetOne("SELECT softlinks FROM `{$addtable}` WHERE aid={$id}");
  8. $dtp = new DedeTagParse();
  9.     $dtp->LoadSource($row['softlinks']);
  10.          if(is_array($dtp->CTags))
  11.          {
  12.            foreach($dtp->CTags as $ctag)
  13.            {
  14.              if($ctag->GetName()=="link")
  15.              {
  16.                      $bigimg .= $ctag->GetAtt('text').'|'.trim($ctag->GetInnerText()).',';
  17.              }
  18.            }
  19.          }
  20.     $dtp->Clear();
  21. $imgurls = $bigimg;
  22. $imgurls = rtrim($imgurls,',');
  23. $keywords = explode(',', $imgurls);
  24. foreach ($keywords as $key => $keyword) {
  25. $i = $key + 1;
  26. $link = explode('|',$keyword);
  27. if ($i == 1){
  28. $aaabbb .= '<a id="video1" href="'.$result['arcurl'].'">'.$link[0].'</a>'."\n";
  29. } else {
  30. $aaabbb .= '<a id="video'.$i.'" href="'.$result['arcurl'].'?aid='.$id.'&mus='.$i.'">'.$link[0].'</a>'."\n";
  31. }
  32. }
  33. return rtrim($aaabbb);
  34. }

四、前端调用

在 plus 目录内新建 video.php 文件,代码如下

PHP
  1. <?php
  2. error_reporting(0);
  3. header('Content-type:text/html;charset=utf-8');
  4. //禁止蜘蛛抓取
  5. $userAgent = $_SERVER['HTTP_USER_AGENT'];
  6. $searchEngines = array('python','@','curl','compatible','bot','spider','Baiduspider','bingbot','Sogou','Bytespider','YisouSpider','360Spider','Googlebot');
  7. foreach ($searchEngines as $searchEngine) {
  8.     if (stripos($userAgent, $searchEngine) !== false) {
  9. exit();
  10.     }
  11. }
  12. //禁止蜘蛛抓取
  13. require_once(dirname(__FILE__)."/../include/common.inc.php");
  14.  
  15. $aid = isset($_GET['amid']) ? $_GET['amid'] : '';
  16. $mus = isset($_GET['amus']) ? $_GET['amus'] : '';
  17.  
  18. if(empty($aid))
  19. {
  20.     showMsg('非法操作!', 'javascript:;');
  21.     exit();
  22. }
  23.  
  24. if (!empty($aid)){
  25. require_once(DEDEINC.'/arc.archives.class.php');
  26. global $dsql,$cfg_basedir;
  27. $imgurls = '';
  28. $row = $dsql->GetOne("SELECT a.id,c.addtable FROM `#@__archives` AS a LEFT JOIN `#@__channeltype` AS c ON a.channel=c.id where a.id='{$aid}'");
  29. $result = GetOneArchive($aid);
  30. $addtable = trim($row['addtable']);
  31. $row = $dsql->GetOne("SELECT softlinks FROM `{$addtable}` WHERE aid={$aid}");
  32. $dtp = new DedeTagParse();
  33.     $dtp->LoadSource($row['softlinks']);
  34.          if(is_array($dtp->CTags))
  35.          {
  36.            foreach($dtp->CTags as $ctag)
  37.            {
  38.              if($ctag->GetName()=="link")
  39.              {
  40.                      $bigimg .= trim($ctag->GetInnerText()).',';
  41.              }
  42.            }
  43.          }
  44.     $dtp->Clear();
  45. $imgurls = $bigimg;
  46. $imgurls = rtrim($imgurls,',');
  47. $keywords = explode(',', $imgurls);
  48. $urls = array();
  49. foreach ($keywords as $key => $keyword) {
  50. $i = $key + 1;
  51. $urls[] .= $keyword;
  52. }
  53. }
  54.  
  55. $amusukg = ($mus =='') ? 0 : $mus;
  56. if($amusukg == 0 || $amusukg == ''){
  57. $mp4url = $urls[0];
  58. }else{
  59. $mp4url = $urls[($amusukg-1)];
  60. }
  61.  
  62. if(empty($mp4url))
  63. {
  64.     showMsg('非法操作!', 'javascript:;');
  65.     exit();
  66. }
  67.  
  68. $ulli .= '$("#video").html(\'<iframe frameborder="0" src="/video?url='.$mp4url.'" allowFullScreen="true"></iframe>\');';
  69.  
  70. $ahtmll = <<<TPL
  71. {$ulli}
  72. TPL;
  73. echo $ahtmll;
  74.  
  75. exit();
  76. ?>

五、调用标签

在 /templets/default/article_article.htm 模板里面加

PHP
  1. <!-- 样式 -->
  2. <style type="text/css">
  3. @media (max-width: 670px) {#video iframe{width:100%!important;height:250px!important;}}
  4. @media (min-width: 670px) {#video iframe{width:100%!important;height:500px!important;}}
  5. </style>
  6. <!-- 样式 -->
  7.  
  8. <!-- 播放器 -->
  9. <div id="video"></div>
  10. <!-- 播放器 -->
  11.  
  12. <!-- 播放列表 -->
  13. {dede:field.id function=bodyvideo(@me)/}
  14. <!-- 播放列表 -->
  15.  
  16. <!-- jQuery插件库 已调用的可以删掉-->
  17. <script type="text/javascript" src="https://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  18. <!-- jQuery插件库 已调用的可以删掉-->
  19.  
  20. <!-- 获取播放链接 -->
  21. <script type="text/javascript">
  22. var urllink = new URL(document.location.toString());
  23. var aid = "{dede:field.id/}";
  24. var mus = urllink.searchParams.get("mus");
  25. var amus = (mus == '' || mus == null) ? '?amid='+aid+'' : '?amus='+mus+'&amid='+aid+'';
  26. document.writeln('<script type="text\/javascript" src="/plus/video.php'+amus+'"><\/script>');
  27. var gaov = (mus == '' || mus == null) ? 1 : mus;
  28. $("#video"+gaov+"").css({color:'#ff6428'});//高亮代码
  29. </script>
  30. <!-- 获取播放链接 -->

根据需求修改。

六、加播放器

video 目录是播放器目录,在懒人包内,下载播放器就可以使用了。比如:DPlayer、Ckplayer、哔哩哔哩等均支持。

懒人包下载

该部分是下载区

本地下载

关于加密

视频地址加密的方法,利用blob加密视频地址》教程,视频链接加密,小站长是玩不转的。说实话,mp4格式的视频,没有加密的必要。而blob加密,我试了,小宽带服务器确实是带不动的。

本文结束

评论专区

发表评论

评论列表(无评论)