WordPress中的幻燈效果一般用于首頁廣告展示,我想不少一部分人應該有這樣的需求,我也曾經嘗試很多的插件,但總覺得不夠滿意,包括HelloFlash插件,他們最致命的缺點是什么?我列舉兩條:
1、一般幻燈效果插件都會去搜索文章中的第一張圖片,發現有圖片就放入到幻燈中。這似乎有點過份,因為我并不需要每一篇文章都需要放到幻燈廣告里去。那么做的稍微好一點的呢,就要求你指定一個目錄,但仍然不能指定哪一篇文章放到幻燈,所以完全不符合我的需求。
2、HelloFlash插件應該說是非常滿足我需求的一個插件,可以自定義將文章放入到幻燈中去,使用自定義模式就可以,但唯一要做的是:發表文章的時候需要添加一個自定義字段flash_image,值就是圖片的鏈接地址了。但是,我不能接受如此繁瑣的操作,特別不能接受的是自定義一個字段。
以上都是我所遇到的問題,后來我在使用Simplybiz模板(下次和大家分享這個模板,非常適合企業站,并且我有意向將它的幻燈給改良一下)的時候,竟然可以添加獨立的幻燈鏈接,很讓我欣喜,想把它改造一下以滿足我的需求,不過老外寫的主題還是挺復雜的,而且不是插件,讓我把主題的一個功能改成一個插件,我放棄了,我相信憑借我的三腳貓功夫我肯定做不到。不過,至少這個主題給了我一個思路,主題中引用了一個叫“特色圖像”的功能,英文稱之為Featured image,雖然在WP2.9的版本中就開始支持這個功能,但真正的開放算是在3.0的版本中,現在WP都已經到3.1.2版本了這個功能自然是成熟了。
為了得到自動將文章添加到幻燈的效果,我要求操作簡單,即:發表文章的時候,指定一個“特色圖像”,這樣發表的文章就自動加入到幻燈中了。
根據我的猜測,既然HelloFlash插件使用了自定義字段flash_image,那么,我只需要將這個字段改成特色圖像的字段就可以實現。查看HelloFlash的code果真如此,兩個模式寫了兩個SQL語句。然后我去找特色圖像這個字段,轉了一大圈終于知道,特色圖像字段在postmeta表中,其中meta_key字段的值為“_thumbnail_id”的即為特色圖像,這一條記錄的post_id表示文章在post表中的ID號,meta_value的值為圖像附件在post表中的ID號。但在這個的過程中,遇到難題了,一個表中查詢出兩條記錄并且他們的Where關鍵都是在另一個表中,不過最后還是解決了,將同一個表重復了一下,看上去是在三個表中查詢,最后就可以得到結果了。這個SQL查詢難了我好一會,不過看了上面的SQL語句得到的靈感,還不錯。需要將插件的flash.php文件中的如下code:
SELECT a.post_title AS title, a.guid AS link, b.meta_value AS img
FROM wp_posts AS a, wp_postmeta AS b
WHERE meta_key = ‘flash_image’
AND a.post_type = ‘post’
AND b.post_id = a.id
ORDER BY `a`.`id` DESC
LIMIT 6
更改為如下code:
SELECT a.post_title AS title, a.guid AS link, c.guid AS img
FROM wp_posts AS a, wp_postmeta AS b, wp_posts AS c
WHERE b.meta_key = ‘_thumbnail_id’
AND a.ID = b.post_id
AND c.ID = b.meta_value
ORDER BY `a`.`id` DESC
LIMIT 6
需要稍稍注意一下的是:作者偷懶將表的名字直接寫死了,所以若不是“wp_”表頭的則需要你自己將上面的改成與你對應的頭。
這樣以后,事情還沒有完,將插件上傳,然后激活,并進入HelloFlash的設置,需要設置為自定義模式,長寬由你自己確定,如下圖示意:
再說一次:長寬設置成你自己的哦。
好了,接下來就需要更改模板的代碼了。一般是在首頁顯示幻燈,所以在首頁模板中你需要幻燈的位置插入如下代碼:
if(function_exists(flash)) { flash(); }
經過以上折騰,雖然算是一切完畢了,但也許你的模板還不支持“特色圖像”功能,如何打開這個功能呢?方法:打開模板中的functions.php文件,添加如下code,這樣你在發表文章的時候就可以看到設定特色像的功能了。
if ( function_exists( ‘add_theme_support’ ) ) {
add_theme_support( ‘post-thumbnails’ );
}
好了,這才算是真正折騰完。至于前臺表現的部分,你可以再繼續自行優化。順便說一下這個插件的問題:
1、每次調用,都是查詢數據庫,如果做成緩存,是否更佳?不過我暫時沒有想法去折騰了。
2、有些模板本身支持特色圖像功能,一般是放在首頁文章的前邊,這是最常規的做法,但這樣的話就會導致:你幻燈里的圖片大小和文章期望的圖片大小不一致,這樣的就肯定算是沖突了,兩者只能二選一,除非你用回原版的HelloFlash,或者讓模板不使用特色圖像,小有痛苦,不過我想這樣的需求應該在少數。
好了,可以去我的實驗室下載我改良版的HelloFlash插件。
Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網站地圖 百度網站地圖 網站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明