2012-02-07 1 views
0

ブログや記事のビュー/レイアウトで動画を表示するためのプラグインにVideoJSを統合しようとしています。これはPHPかJoomla!問題? (または、おそらく私は出力バッファリングについて何か不足しています)

のYouTubeビデオソース:{ユーチューブ} y0u7u83v1de0 {まず、Iは、YouTube動画IDまたはビデオファイルへのパスとすることができる正規表現とビデオのソースを使用して、プラグイン・タグを見つけます/ユーチューブ}ビデオ ソースファイル:これらの値を見つける{}ビデオパス/に/ video.mp4 {/ビデオ}

をビデオソースをエコーし​​ようとするときに問題が来る、問題ではありません。私はonContentBeforeDisplay機能で値を保持するためにはstdClassオブジェクトを使用しています:

<video id="<?= $video->id ?>" class="video-js vjs-default-skin" controls width="<?= $video->width ?>" height="<?= $video->height ?>" poster="<?= $video->images['preview'] ?>" data-setup="{techOrder: ['youtube', 'html5']}"> 
    <source src="<?= $video->source ?>" type="<?= $video->format ?>" /> 
</video> 

すべての値の表示:

$width = 636; 
$height = 333; 
$youtubeCode = '/{youtube}(.*?){\/youtube}/'; 
$videoCode = '/{video}(.*?){\/video}/'; 
preg_match($youtubeCode, $article->introtext, $match); 
preg_match($videoCode, $article->introtext, $match); 
$video = new stdClass(); 
$video->source = $match[1]; 
$video->width = $width; 
$video->height = $height; 
$layout = JPATH_SITE . DS . 'plugins' . DS . $this->plugin->type . 
DS . $this->plugin->name . DS . 'tmpl' . DS . 'default.php'; 

if ($layout) { 
    ob_start(); 
    require $layout; 
    $contents = ob_get_contents(); 
    ob_end_clean(); 
    $article->introtext = $contents . $article->introtext; 
} 

は今、レイアウトファイルは、ちょうど それぞれの値をHTMLビデオタグを出力します正しく、出力バッファリングを開始する前に正しい値を持っている$ video-> sourceプロパティを除いて、出力を開始するような特定の値は無効になります。

その動作の原因は何ですか?私は行方不明の出力バッファリングについて何か?

ありがとうございます!

+1

Joomlaのは、あなたが知っているPHP ... –

+0

に基づいており、私は実際には「問題」になっています。私はPHPやJoomla!とは関係ありません!どうすれば質問を閉じることができますか? –

+2

@SaulMartínez:自分で質問に答え、答えを記入してください。 –

答えて

0

VideoJSは分かりません。正確にはですが、私は$ video-> sourceを$ match [1]に設定していますが、最初に正規表現をテストします{youtube}タグを検索してから{video}タグを検索しますが、同じ$ match変数を使用すると、最終的に見つかるものがYouTube動画か "通常"動画かどうかをテストしません。 。

レイアウトファイルで$ video-> formatにアクセスしましたが、設定していません。

たぶん、あなたは

このような
[...] 
if (preg_match($youtubeCode, $article->introtext, $match)) { 
    // found a {youtube} tag 
    $video->format = "youtube"; 
    $video->source = $match[1]; 
} else if (preg_match($videoCode, $article->introtext, $match)) { 
    // found a {video} tag 
    $video->format = "video"; 
    $video->source = $match[1]; 
} 

// Prepend the <video> element if {youtube} or {video} tag found 
if ($layout && !is_null($video->format) && !is_null($video->format)) { 
    ob_start(); 
    require $layout; 
    $contents = ob_get_contents(); 
    ob_end_clean(); 
    $article->introtext = $contents . $article->introtext; 
} 

何かを書くしかし、あなたはいくつかの{ユーチューブ}/{ビデオ}タグそれに記事を持っている場合、それは、見つかっただけで最初のタグを置き換える必要がありますので注意してください必要がありますすべきではない。私は何をしようとする十分に理解しました

希望:P

関連する問題