登录 注册

登录

问题 视频播放 原先是用youtube和vimeo的请问下怎么改成国内的比如优酷之类的视频

更多
2013年12月05日 22:14 - 2013年12月06日 08:17 #1 作者: zwy2001
<?php
/**
 * @package      ITPrism Library
 * @subpackage   Video
 * @copyright    Copyright (C) 2013 Todor Iliev <todor@itprism.com>. All rights reserved.
 * @license      http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * ITPrism Library is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
 
// no direct access
defined('_JEXEC') or die;
 
/**
 * This class provides functionality for parsing video URLs 
 * and generating HTML code that can be used for embedding into websites.
 *
 * @package 	 ITPrism Library
 * @subpackage   Video
 */
class ITPrismVideoEmbed {
 
    protected $url;
    protected $code;
    protected $service;
 
    protected $patternYouTube = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
    protected $patternVimeo   = '#^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)#';
 
    public function __construct($url = null){
 
        if(!empty($url)) {
            $this->url = $url;
            $this->parse();
        }
    }
 
    /**
     * Parse the URL of video service
     * 
     * @param string $url
     */
    public function parse($url = null) {
 
        if(!empty($url)) {
            $this->url = $url;
        }
 
        $uri  = new JURI($this->url);
        $host = $uri->getHost();
 
        // Youtube
        if(false !== strpos($host, "youtu")) {
            if(preg_match($this->patternYouTube, $this->url, $matches)) {
                $this->code = $matches[0];
                $this->service = "youtube";
                return;
            }
        }
 
        // Vimeo
        if(false !== strpos($host, "vimeo")) {
            if( preg_match($this->patternVimeo, $this->url, $matches) ) {
                $this->code    = $matches[5];
                $this->service = "vimeo";
                return;
            }
        }
 
    }
 
    /**
     * Return the ID of the video.
     */
    public function getCode() {
        return $this->code;
    }
 
    /**
     * Return an HTML code that can be used for embedding.
     */
    public function getHtmlCode() {
 
        $html = "";
 
        switch($this->service) {
 
            case "youtube":
                $html = '<iframe width="560" height="315" src="http://www.youtube.com/embed/'.$this->code.'" frameborder="0" allowfullscreen></iframe>';
                break;
 
            case "vimeo":
                $html = '<iframe src="http://player.vimeo.com/video/'.$this->code.'" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
                break;
 
            default:
                $html = "Invalid video service.";
                break;
        }
 
        return $html;
    }
 
}

这个是原来的代码
最后修改: 2013年12月06日 08:17 由 Joomla之门.

登录 或者   注册一个会员帐号 来参与讨论

更多
2013年12月06日 08:19 #2 作者: Joomla之门
最简单的办法就是要求扩展作者增加对 Youku.com (优酷视频)的支持。

你这是什么插件?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2013年12月06日 10:07 - 2013年12月06日 10:08 #3 作者: zwy2001
就是那个Crowdfunding的插件,我看了下他的代码,是不是加一加不会很复杂?
最后修改: 2013年12月06日 10:08 由 zwy2001.

登录 或者   注册一个会员帐号 来参与讨论

更多
2013年12月06日 10:20 #4 作者: Joomla之门
自己修改源文件来添加 Youku 支持当然不复杂。懂一点 PHP 的人都能做到。但是,从长远来看,你这种自己修改的结果,很容易被 CrowdFunding 组件的升级过程所覆盖。因此,还是从根本上解决比较好:让作者直接添加到源文件里面,以后怎么升级都不会丢失。

官方网站有专门的会员论坛,地址是 members.itprism.com/support/forum ,你既然是付费会员,就可以访问该论坛,提交这个功能要求。对作者来说,仅仅是 10 分钟不到的代码修改工作而已。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论