2013年8月4日 星期日

Drupal 7.22 線上播放 Scratch 檔案的可能改法

在 Drupal 7 下我先依照 臺北市自由軟體桌面應用推動及發展小組 2012 年的 Drupal 研習講義資料 第 P57~62 的資步驟,首先新增了 Content Template 模組,這個可以改變內定 Contant 顯示的方式,也正好可以增加 Scratch 線上播放的內容,但這個模組雖然有 7 的版本,但模組下載頁面一開始就不建議使用在 7 中 (NOTE: This module *may* be deprecated in Drupal 7 !) :Q

說明我的系統是安裝在 Ubuntu 12.04.2 Server版,非 Desktop 版!

作法上一開始增加新模組後,依照 P62 頁增加高慧君老師所寫的 Scratch 線上播放的語法如下:
<div class="container">

<!--­­ Scratch project START --­­>

<applet id="ProjectApplet"

style="display:block"

code="ScratchApplet" codebase="./"

archive="ScratchApplet.jar" height="400" width="482">

<param name="project" value="<?php print $node­>field_work[0]['filepath'] ?>">

</applet>

<!--­­ Scratch project END --­­>

</div>

可惜試了很久,一直都無法成功,最多會出現像下列的畫面,

dr-02看了一下內容,應該是找不到 ScratchApplet.jar,這個我也上傳了,在 default/files/ 資料夾下也有放(這裡我將上傳的 sb 檔案置於此),錯誤訊息的內容那個 jar似乎是要放置在 C:\USERS\xxx 下(目前使用者的資料夾),所以也放了一份,

dr-03

 

 

 

 

 

 

 

 

 

此時雖然會出現 Scratch 播放畫面,但一直 Loading 中,就是找不到檔案啦,

dr-04

 

 

 

 

 

 

 

 

 

 

連直接指定 IP 位置資料夾都沒用,此時只好請教高老師有無改法,高老師也立刻回復改法(感謝),但也說明網站會有錯誤訊息,不影響播放,高老師的改法如下:

======= 高老師原始改法起始 =============

◎ 設定Content Template

在導覽「架構」─「內容類型」選取右上方的「Content Template」,選取「Scratch作品」的「edit template」。

修改contemplate.module的文字第818行

原來的程式碼:
<?php

$language_to_display = (

isset($node->body[$display_language]) ?

$display_language :

(

isset($node->body[$default_language]) ?

$default_language :

$node_language

)

);

?>

修改為以下程式碼:
<?php

// choose the language

$language_to_display = 'und';

$languages = array($display_language, $default_language, $node_language);

foreach ($languages as $language) {

if (isset($node->body[$language])) {

$language_to_display = $language;

break;

}

}

?>

在Drupal提供的Body variables中,將「$node->language」改為「und」。

修改網頁內文為以下內容:
<div class="field field-type-text-textarea field-field-memo">

<h3 class="field-label">說明</h3>

<div class="field-items">

<div class="field-item"><?php print $node->field_memo[und][0]['value']; ?></div>

</div>

</div>

<div class="container">

<!-- Scratch project START-->

<applet id="ProjectApplet"

style="display:block"

code="ScratchApplet" codebase="./"

archive="ScratchApplet.jar" height="400" width="482">

<param name="project" value="<?php print "/sites/localhost.drupal.scratch/files/".substr($node->field_file[und][0]['uri'],9); ?>">

</applet>

<!-- Scratch project END-->

</div>


<div class="field field-type-file-generic field-field-file">

<h3 class="field-label">檔案</h3>

<div class="field-items">

<div class="field-item"><a href=<?php print "sites/localhost.drupal.scratch/files/".substr($node->field_file[und][0]['uri'],9); ?>><?php print $node->field_file[und][0]['filename']; ?></a></div>

</div>

</div>

======= 高老師原始改法結束 =============

也就是同時要修改 Contant Template 模組的內容及 Sractch 線上播放的語法,我也照改了,一開始還是會找不到 jar 程式,也放置到本機使用者資料夾了,接著就是一開始的錯誤訊息圖,後來就更改了
codebase=”./” - codebase=”sites/default/files/”

或者是把 jar 放入本機登入使用者資料夾,就變成 Loading 中,想想大概是找不到檔案(其實一直都是如此),看了 Contant Template BODY下面顯示的BODY VARIABLES 中直接秀出檔名的語法
$node->field_file[$node->language][0]['filename']

於是就把高老師原本呼叫檔案的語法從
<?php print "/sites/localhost.drupal.scratch/files/".substr($node->field_file[und][0]['uri'],9); ?>

改為
<?php print $node->field_file[und][0]['filename'] ?>

之後,嘿嘿,就出現正常的 Scratch 線上播放畫面啦!

dr-05

 

 

 

 

 

 

 

 

 

 

下面是我修改過的語法,紅色粗體是我更改的部分,提供參考:
<div class="field field-type-text-textarea field-field-memo">

<h3 class="field-label">說明</h3>

<div class="field-items">

<div class="field-item"><?php print $node->field_memo[und][0]['safe_value']; ?></div>

</div>

</div>


<div class="container">

<!-- Scratch project START-->

<applet id="ProjectApplet"

style="display:block"

code="ScratchApplet" codebase="sites/default/files/"

archive="ScratchApplet.jar" height="400" width="482">

<param name="project" value="<?php print $node->field_file[und][0]['filename'] ?>">

</applet>

<!-- Scratch project END-->

</div>

<div class="field field-type-file-generic field-field-file">

<h3 class="field-label">上傳檔案</h3>

<div class="field-items">

<div class="field-item"><a href=<?php print "sites/default/files/".substr($node->field_file[und][0]['uri'],9); ?>><?php print $node->field_file[und][0]['filename']; ?></a></div>

</div>

</div>

至於網頁會出現的錯誤訊息如下,看看有無人能解開,哈,我無法啦!

dr-06

 

 

 

沒有留言:

張貼留言