ECShop默認的的Flash輪播圖片(首頁主廣告)樣式有如下幾種, 那麼怎麼樣自定義個性化的flash輪播呢?javascript
以上幾個flash播放器對應的位置分別是/data/flashdata下的:default、dynfocus、prinkfocus、redfocusphp
隨便打開其中一個文件夾能夠看到有四個文件:cycle_p_w_picpath.js、data.js、preview.jpg、*.swfhtml
如今開始定製本身的播放器。複製其中一個文件夾,好比說redfocus,重命名爲:zbirdjava
而後開始修改zbird文件夾下的文件。ajax
1,修改cycle_p_w_picpath.jsjson
文件開頭的註釋修改成:app
/*
Flash Name: zbird
Description: 模仿鑽石小鳥圖片輪播
*/ide
$importjs不用修改。函數
將function show_flash()中出現redfocus的地方替換爲zbird:ui
document.getElementById('flash_cycle_p_w_picpath').innerHTML = '
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ focus_width +'" height="'+ total_height +'">'+'<param name="allowScriptAccess" value="sameDomain"><param name="movie" value="data/flashdata/redfocus/redfocus.swf"><param name="quality" value="high"><param name="bgcolor" value="#F0F0F0">'+'<param name="menu" value="false"><param name=wmode value="opaque">'+'<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'">'+'<embed src="data/flashdata/redfocus/redfocus.swf" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'&stop_time=6000" quality="high" width="'+ focus_width +'" height="'+ total_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent"/>'+'</object>
';
2,data.js不用修改,在ecshop後臺切換播放器樣式的時候,程序會把上傳的圖片信息寫入到data.js中供播放器調用。
3,preview.jpg是播放器的預覽圖,在後臺供用戶點擊以選擇播放器樣式,可用本文開頭那張圖。
4,zbird.swf:刪除複製來的redfocus.swf,你須要更酷的,我用這是這個(zbird),固然你不必定非要用這個。
來到後臺,系統設置->首頁廣告管理,能夠看到新增長的播放器樣式已經出來了:
選中zbird樣式爲當前樣式,這時到首頁刷新頁面,falsh並不顯示。
這時要修改模板裏面library/下的index_ad.lbi文件,它是控制flash slide顯示的庫文件,只保留以下內容便可:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
var swf_width=550;
var swf_height=265;
</script>
<script type="text/javascript" src="data/flashdata/{$flash_theme}/cycle_p_w_picpath.js"></script>
如今刷新首頁就能夠看到新的flash slide樣式了。
還沒完。修改輪播圖片地址和連接後再刷新首頁發現flash slide裏的內容並無改變。由於flash slide讀取的是data.js裏的內容,說明data.js裏的內容並無改變。通過分析能夠知道,在切換樣式時(即在點擊要切換的flash slide樣式的時候)程序會把新的數據寫入到data.js中。顯然,在切換成zbird樣式時,新建目錄zbird下的data.js並無被寫入新的數據。那麼,如今跟蹤程序看切換樣式時發生了什麼。「首頁主廣告管理」的連接是:/admin/flashplay.php?act=list,打開flashplay.php發現list動做display的是flashplay_list.htm模板文件。打開/admin/templates下的flashplay_list.htm找到47行:
<td>{if $flashtpl.screenshot}<img src="{$flashtpl.screenshot}" border="0" style="cursor:pointer" onclick="setupFlashTpl('{$flashtpl.code}', this)" />{/if}</td>
可見當樣式快照被點擊時觸發了setupFlashTpl()函數。在flashplay_list.htm的82行,能夠看到function setupFlashTpl的實現,核心語句以下:
Ajax.call('flashplay.php?is_ajax=1&act=install', 'flashtpl=' + tpl, setupFlashTplResponse, 'GET', 'JSON');
那再到flashplay.php中insall的實現過程。284-314行是install動做的實現過程,點擊樣式快照時執行的操做。注意第296行:
if (set_flash_data($flash_theme, $error_msg))
{
make_json_error($error_msg);
}
else
{
make_json_result($flash_theme, $_LANG['install_success']);
}
set_flash_data()函數功能顧名思義就是設置flash的數據。再跟蹤到set_flash_data()的實現,flashplay.php的860行開始,檢查如下代碼:
switch($tplname)
{
case 'uproll':
$msg = set_flash_uproll($tplname, $flashdata);
break;
case 'redfocus':
case 'pinkfocus':
case 'dynfocus':
$msg = set_flash_focus($tplname, $flashdata);
break;
case 'default':
default:
$msg = set_flash_default($tplname, $flashdata);
break;
}
能夠發現若是切換到系統自工帶的幾個樣式:redfocus、pinkfocus、dynfocus時都執行了set_flash_focus()函數,那麼咱們新建的zbird也是一樣道理。修改set_flash_data()以下 :
switch($tplname)
{
case 'uproll':
$msg = set_flash_uproll($tplname, $flashdata);
break;
case 'redfocus':
case 'pinkfocus':
// add here for zbird
case 'zbird':
case 'dynfocus':
$msg = set_flash_focus($tplname, $flashdata);
break;
case 'default':
default:
$msg = set_flash_default($tplname, $flashdata);
break;
}
其實就是讓程序實現切換到zbird樣式時也執行set_flash_focus()函數。
再到刷新首頁就能夠看到flash slide已經和後臺修改的數據對應了。
總結:
1,在/data/flashdata/下新建目錄(或直接複製自 redfocus文件夾),如名爲zbird,裏面包含四個文件:cycle_p_w_picpath.js、data.js、preview.jpg、zbird.swf。
2,修改新建的樣式目錄下的文件:修改cycle_p_w_picpath.js(如:把cycle_p_w_picpath.js中的出現的redfocus替換爲zbird)、替換preview.jpg爲相應樣式的快照、找來自定義flash樣式的swf文件(如:zbird.swf)。
3,修改庫文件/themes/模板名/library/index_ad.lbi,去掉全部if判斷。
4,修改flashplay.php文件,找到set_flash_data()函數,在大概878行加上:「 case 'zbird': 」。