ECSHOP 多種方式自定義焦點圖

ECSHOP <wbr>多種方式自定義焦點圖

一、第一種更換FLASH

ECShop默認的的Flash輪播圖片(首頁主廣告)樣式有以下幾種, 那麼怎麼樣自定義個性化的flash輪播呢?

以上幾個flash播放器對應的位置分別是/data/flashdata下的:default、dynfocus、prinkfocus、redfocus

隨便打開其中一個文件夾可以看到有四個文件:cycle_image.js、data.js、preview.jpg、*.swf

現在開始定製自己的播放器。複製其中一個文件夾,比如說redfocus,重命名爲:zbird

然後開始修改zbird文件夾下的文件。

1,修改cycle_image.js

文件開頭的註釋修改爲:

------------------------------------------------------------------------------------

$importjs不用修改。

將function show_flash()中出現redfocus的地方替換爲zbird:

document.getElementByIdx_x('flash_cycle_image').innerHTML = ' '+' '+' '+' '+''+'

';

------------------------------------------------------------------------------------

2,data.js不用修改,在ecshop後臺切換播放器樣式的時候,程序會把上傳的圖片信息寫入到data.js中供播放器調用。

3,preview.jpg是播放器的預覽圖,在後臺供用戶點擊以選擇播放器樣式,可用本文開頭那張圖。

4,zbird.swf:刪除複製來的redfocus.swf,你需要更酷的,我用這是這個(zbird),當然你不一定非要用這個。

來到後臺,系統設置->首頁廣告管理,可以看到新增加的播放器樣式已經出來了:

選中zbird樣式爲當前樣式,這時到首頁刷新頁面,falsh並不顯示。

這時要修改模板裏面library/下的index_ad.lbi文件,它是控制flash slide顯示的庫文件,只保留如下內容即可:

現在刷新首頁就可以看到新的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行:

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

可見當樣式快照被點擊時觸發了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_image.js、data.js、preview.jpg、zbird.swf。

2,修改新建的樣式目錄下的文件:修改cycle_image.js(如:把cycle_image.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': ”。

第二種:直接在首頁模板中調取

這裏有個更簡單點的函數,把這個函數插入到index.php中最下面即可,

------------------------------------------------------------------------------------

function get_index_ad(){

$sql = 'SELECT ad_type, content,ad_name,url FROM ' . $GLOBALS['ecs']->table("ad_custom") ;

$res = $GLOBALS['db']->getAll($sql);

$ads = array();

foreach ($res AS $adx => $row)

{

$ads[$adx]['ad_type'] = $row['ad_type'];

$ads[$adx]['content'] = $row['content'];

$ads[$adx]['url'] = $row['url'];

$ads[$adx]['ad_name'] = $row['ad_name'];

}

return $ads;

}

------------------------------------------------------------------------------------

然後在那一堆smarty中定義一個標籤即可(不過到時候後臺添加圖片是在首頁主廣告那裏自定義添加)

$smarty->assign('index_adlist', get_index_ad());

然後在DWT文件中引用即可

如:

------------------------------------------------------------------------------------

       

------------------------------------------------------------------------------------

循環來自標籤'index_adlist' 其中url爲圖片鏈接地址 content爲圖片 ad_name爲圖片名稱

{if $flashtpl.screenshot}{/if}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章