因工作需要近日用織夢做了一個小站。 其中有一個js展示學校作品的頁面需要從該欄目的圖片集中讀取每個圖片集的第一張圖片到該頁面,也就是從列表頁獲取內容頁的圖片。
百度和谷歌中搜索了一下只找到了從列表頁獲取文章內容第一張圖片的解決方法。最后自己也解決了列表頁獲取圖片集第一張圖片。今日和大家一并分享一下:
1:在列表頁獲取文章內容頁第一張圖片
在通常情況下圖片的縮放圖是有文章第一張圖片生成的。縮放圖和文章第一張圖片直接存在一定的關系。我們先看一下縮放圖和第一張圖片的路徑:
縮放圖:
第一圖片:
我們觀察可以發現:兩張圖片的后七位是不同的:
我們可以通過函數刪除縮略圖字符串最后七位,然后再補上后綴.jpg
函數如下:
//將縮放圖轉變為文章第一張圖片
function firstimg($str_pic){$str_sub=substr($str_pic,0,-7).".jpg";//刪除縮略圖字符串最后七位,然后再補上后綴.jpgreturn $str_sub;}
將該函數添加到../ include/ common.func.php
調用的方法是:[field:litpic function='firstimg(@me)'/]
2:在列表頁獲取圖片集中第一張圖片
圖片集中的圖片獲取到圖片有一點麻煩,分析圖片集的數據庫表結構后發現,織夢將圖片集的描述、標題、圖片地址都存放到了字段(addonimages)中。
我們來看一下addonimages字段內的內容:
{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='2'/}
{dede:img ddimg='/uploads/allimg/100830/1-100S0140H8.jpg' text='美甲師 何玲' width='270' height='403'} /uploads/allimg/100830/1-100S0140H8.jpg {/dede:img}
【/uploads/allimg/100830/1-100S0140H8.jpg】
這個就是我們需要的網址。只有想辦法將其過濾出來就可以了。
看一下我們的功能函數:
//取圖片集中的第一張圖片
function imgurlsfirstimg($imgurls){$start=strpos($imgurls,'ddimg=')+6;//尋找開始標記if ($start) $imgurls=substr($imgurls,$start);//刪除前面$end=strpos($imgurls,'text=');//尋找結束標記if ($end) $imgurls=substr($imgurls,0,$end);//刪除后面return $imgurls;}
其中標記為藍色的部分是截取的標記。
將該函數添加到../ include/ common.func.php
使用的辦法如下:
{dede:sql sql='select * from dede_archives, dede _addonimages where aid=id and dede _addonimages.typeid=16'}
<Atitle="[field:title/]"href="/zuopin/"rel=[field:imgurlsfunction='imgurlsfirstimg(@me)'/]>[field:title/]</A>
{/dede:sql}
我使用的辦法是用sql語句直接讀取,大家可以修改為符合自己的。
新聞熱點
疑難解答