轉:ecshop商品分類頁獲取相冊列表方法

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 這種形式,發現也是能夠把數組循環出來的,原來真的就是這麼簡單。數組

相關文章
相關標籤/搜索