2015-12-14 41 views
4

中顯示相同的視頻我爲客戶開發了一個Silverstripe(3.1)網站。今天,他試圖將第二個YouTube視頻嵌入到CMS中的內容區域(插入媒體>從網絡中粘貼youtube URL>添加URL>插入)。銀條紋。在內容區域嵌入2個YouTube視頻在

在CMS中的所見即所得視頻的縮略圖顯示正確,但是在前端的模板中,第一個視頻在第二個視頻的iFrame中重複。

我試着改變這些,刪除兩個視頻,並再次添加他們自己,以消除一些怪胎用戶錯誤,但我可以每次複製這一點。第一個視頻總是在第二個視頻的iFrame中克隆。

我也試着直接用他們嵌入的代碼從YouTube中嵌入視頻,但是這種情況也是一樣的。

檢查iFrames,第二個視頻的src和第一個視頻的src是一樣的,所以我認爲這是與嵌入方式替換文本到模板的方式有關的。

有沒有辦法解決這個問題?

+0

哪個SS版本您使用的每@wmk要求加入? – g4b0

+0

@ g4b0 3.1。乾杯 – Fraser

+0

一個可能的破解方法可能是在後端的編輯器(有一個HTML按鈕)中打開html源代碼,也許看看你是否可以在那裏更改YouTube的src。但是,如果這樣做,它只是一個臨時修復,並沒有解決真正的問題... – ifusion

回答

0

我不知道你是否想走這條路線,但我有多個YouTube視頻的網頁,使用的是擴展DataObject的YouTubeWidget。這會作爲$ has_many添加到頁面類中。看到這個gist-

https://gist.github.com/cmcramer/60b7ff41017b4a633894

從我要點

(修訂版)的代碼片段

class YouTubeEmbed extends DataObject { 

    private static $db = array(
     'YouTubeTitle'  => 'Varchar(255)', 
     'YouTubeId' => 'Varchar(100)', 
    ); 

    private static $has_one = array(
     'PageWithVideo' => 'Page', 
    ); 


    private static $summary_fields = array(
     'YouTubeTitle'      => 'YouTube Video', 
    ); 

    private static $default_sort = array(
     'YouTubeTitle', 
    ); 


    private static $display_fields = array(
     'Title'    => 'YouTube Video', 
     'YouTubeId'   => 'Video ID', 
    ); 



    public function WatchOnYouTubeUrl() { 
     $strUrl = "https://www.youtube.com/watch?v={$this->YouTubeId}"; 
     return $strUrl; 
    } 

    public function VideoIframe() { 

     $strHtml = '<iframe width="' . 
           $this->Width . '" 
          height="' . 
           $this->Height . '" 
          src="https://www.youtube.com/embed/'. 
           $this->YouTubeId . ' 
           ?rel=0&autoplay=1&showinfo=0" 
           frameborder="0"></iframe>' 

     return $strHtml; 
    } 


} 



class VideoPage extends Page { 
    ... 

    private static $has_many = array(
     'Webcams' => 'YouTubeEmbed', 
    );  
    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 

     $fields->addFieldsToTab('Root.Webcams', GridField::create(
      'Webcams', 
      'Webcams', 
      $this->Webcams(), 
      GridFieldConfig_RecordEditor::create() 
     )); 

     return $fields; 
    } 
} 



/* In the template */ 
<div id="webcams"> 
    <% loop $Webcams %> 
     <span class="webcam-block"> 
       $VideoIframe 
       <p>$YouTubeTitle</p> 
     </span><!-- .webcam-block --> 
    <% end_loop %> 
</div> 
+0

我已通知客戶,如果我找不到簡單的修復方法,我們將不得不離開。儘管如此,將是最後的手段。他是一位老式的設計師,因此喜歡靈活性,讓所有的頁面看起來完全不同,在所見即所得(WYSIWYG)中進行混亂(然後我將它們全部清理乾淨)。儘管它可能是一個簡單的黑客攻擊,但是不必爲了獲得這種排序而對它進行「破解」而不太高興。 – Fraser

+0

請在答案中包含相關代碼,因爲鏈接可能會在將來中斷,並且可能會在計算器上刪除僅鏈接的答案。 – wmk