ecshop商品分類頁獲取相冊列表方法
好久以前就看到過你好在商品列表頁有獲取到相冊列表,可是一直沒有實踐過,感受應該挺簡單的吧,可是最近手上的項目恰好就須要這個功能,而後就想到網上查下資料,至少找個思路就好辦了,但是百度谷歌,竟然沒有找到任何答案。只是在百度知道看到有人提過這個問題,竟然沒有答案!
搜索這個線索斷了,咱們還有B計劃,就是本身開發,哈哈。網上有人問過這個問題,可是回答的人就是說要二次開發啊什麼的,固然,你好默認的功能沒那麼完善,須要咱們進一步修改一下下,可是二次開發也不是說真的這麼難吧,反正我是不信這個的,我想我必定是能夠作出來的。
仔細分析了一下程序代碼,發現應該不難,只要根據列表裏的商品ID號,經過此ID號取得相冊列表裏的相應圖片,而後在商品列表裏再循環顯示出來便可,說來簡單,可是本身嘗試了不少種辦法,發現都很差使,到底是哪裏出問題了呢。結果通過幾個小時的努力,總算是實現出來了,請原諒小編我是個程序小白……
這是沒修改過的圖:php
這是修改事後的效果圖:sql
第1步:找到根目錄的category.php文件,查找約:486行左右(注意這不是準確位置,看實際的哦),找到這個函數:
/**
* 得到分類下的商品
*
* @access public
* @param string $children
* @return array
*/
function category_get_goods($children, $brand, $min, $max, $ext, $size, $page, $sort, $order)
……如下代碼省略。
而後在這個函數裏的:
if ($watermark_img != '')
{
$arr[$row['goods_id']]['watermark_img'] = $watermark_img;
}
$arr[$row['goods_id']]['goods_id'] = $row['goods_id'];
下面一行增長一段代碼:
//調用縮略圖 2014-05-26 11:24:12
$gid = $row['goods_id'];
$sqlg = "SELECT img_url,thumb_url FROM " . $GLOBALS['ecs']->table('goods_gallery') ." WHERE goods_id = ".$gid;
$ggres2 = $GLOBALS['db']->getAll($sqlg);
//print_r($ggres2);
大體的意思就是:經過列表的商品ID號,查找對應的商品相冊裏的縮略圖集,返回的應該是一個圖片地址數組!(就這段代碼花了幾小時?小編真心是笨啊……)
再往下找到這裏:
$arr[$row['goods_id']]['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']);
$arr[$row['goods_id']]['url'] = build_uri('goods', array('gid'=>$row['goods_id']), $row['goods_name']);
緊跟着加上一句代碼:
$arr[$row['goods_id']]['gpic'] = $ggres2;
OK,修改完成了一半,剩下的就是模板裏調用啦。
第2步:修改庫文件 library/goods_list.lbi。
在這個文件裏,找到須要調用商品相冊小圖片的位置,這樣調用便可:
<!-- {foreach from=$goods.gpic item=picture name=no}-->
<!-- {if $smarty.foreach.no.iteration < 5} -->
<img src="{if $picture.thumb_url}{$picture.thumb_url}{else}{$picture.img_url}{/if}" width="30" alt="{$goods.goods_name}" data-s="{if $picture.thumb_url}{$picture.thumb_url}{else}{$picture.img_url}{/if}" />
<!--{/if}-->
<!--{/foreach}-->
我這裏用「{if $smarty.foreach.no.iteration < 5}」來限定了調用數量最可能是4個,須要的朋友可修改這個數字便可。
在本文中,咱們用smarty來循環一個相冊地址數組,注意這裏的from = $goods.gpic,原來咱們見過的大多數from後面的參數都只是一個名稱,如 from = $goods_list 這樣的,可是今天筆者嘗試使用 from = $goods.gpic 這種形式,發現也是能夠把數組循環出來的,原來真的就是這麼簡單。數組