标签归档:php

Ecshop 前台显示已售出的数量

 

category.php

下面的

category_get_goods

函数中foreach循环添加

$arr[$row[‘goods_id’]][‘count’]            = selled_count($row[‘goods_id’]);

文件的最后部分添加函数

  function selled_count($goods_id)
{
     $sql= “select sum(goods_number) as count from “.$GLOBALS[‘ecs’]->table(‘order_goods’).”where goods_id ='”.$goods_id.”‘”;
     $res = $GLOBALS[‘db’]->getOne($sql);
     if($res>0)
     {
     return $res;
     }
     else
     {
       return(‘0’);
     }
}

模板

goods_list.lbi

 

<a href=”javascript:;” id=”compareLink”html”}’,'{$goods.type}’)”>{$lang.compare}</a>

 下添加

  销售量:{$goods.count}

ecshop模板smarty foreach详解

{foreach},{foreachelse}

{foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个{foreach}标记必须与关闭标记{/foreach}成对出现。

属性

1、from    类型:array数组 必要性:Yes必要 默认值:n/a    描述:循环访问的数组
2、item     类型:string字符串     必要性:Yes必要     默认值:n/a     描述:当前元素的变量名
3、key      类型:string字符串     必要性:No可选     默认值:n/a     描述:当前键名的变量名
4、name   类型:string字符串     必要性:No可选     默认值:n/a     描述:用于访问foreach属性的foreach

循环的名称
from和item是必要属性
{foreach}循环的name可以是任何字母,数组,下划线的组合,参考PHP变量。
{foreach}循环可以嵌套,嵌套的{foreach}的名称应当互不相同。
from属性通常是值数组,被用于判断{foreach}的循环次数。
在from变量中没有值时,将执行{foreachelse}。
{foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中”name”是name属性。
注意:name属性仅在需要访问{foreach}属性时有效,与{section}不同。访问未定义name的{foreach}属性不会抛出一个错误,但将导致不可预知的结果。
{foreach}属性有index, iteration, first, last, show, total.
示例:
例一. item属性

<?php
$arr = array(1000, 1001, 1002);
$smarty->assign(‘myArray’, $arr);
?>

用模板以无序列表输出$myArray

<ul>
{foreach from=$myArray item=foo}
<li>{$foo}</li>
{/foreach}
</ul>

上例将输出:

<ul>
<li>1000</li>
<li>1001</li>
<li>1002</li>
</ul>

例二. 演示item和key属性

<?php
$arr = array(9 => ‘Tennis’, 3 => ‘Swimming’, 8 => ‘Coding’);
$smarty->assign(‘myArray’, $arr);
?>

用模板按键名/键值对的形式输出$myArray, 类似于PHP的foreach。

<ul>
{foreach from=$myArray key=k item=v}
<li>{$k}: {$v}</li>
{/foreach}
</ul>

上例将输出:

<ul>
<li>9: Tennis</li>
<li>3: Swimming</li>
<li>8: Coding</li>
</ul>

例三. {foreach}的item属性是关联数组

<?php
$items_list = array(23 => array(‘no’ => 2456, ‘label’ => ‘Salad’),
96 => array(‘no’ => 4889, ‘label’ => ‘Cream’)
);
$smarty->assign(‘items’, $items_list);
?>

模板中,url通过$myId输出$items

<ul>
{foreach from=$items key=myId item=i}
<li><a href=”item.php?id={$myId}”>{$i.no}: {$i.label}</li>
{/foreach}
</ul>

上例将输出:

<ul>
<li><a href=”item.php?id=23″>2456: Salad</li>
<li><a href=”item.php?id=96″>4889: Cream</li>
</ul>

例四. {foreach}使用嵌套的item和key
向Smarty设置一个数组,对于每个键名对应的每个循环值都包括键。

<?php
$smarty->assign(‘contacts’, array(
array(‘phone’ => ‘1’,
‘fax’ => ‘2’,
‘cell’ => ‘3’),
array(‘phone’ => ‘555-4444’,
‘fax’ => ‘555-3333’,
‘cell’ => ‘760-1234’)
));
?>

用于输出$contact的模板。

{foreach name=outer item=contact from=$contacts}
<hr />
{foreach key=key item=item from=$contact}
{$key}: {$item}<br />
{/foreach}
{/foreach}

上例将输出:

<hr />
phone: 1<br />
fax: 2<br />
cell: 3<br />
<hr />
phone: 555-4444<br />
fax: 555-3333<br />
cell: 760-1234<br />

例五. 使用{foreachelse}的数据库示例
一个数据库(例如PEAR或ADODB)的搜索脚本示例,

<?php
$search_condition = “where name like ‘$foo%’ “;
$sql = ‘select contact_id, name, nick from contacts ‘.$search_condition.’ order by name’;
$smarty->assign(‘results’, $db->getAssoc($sql) );
?>

借助{foreachelse}标记在没有结果时模板输出”None found”字样。

{foreach key=cid item=con from=$results}
<a href=”contact.php?contact_id={$cid}”>{$con.name} – {$con.nick}</a><br />
{foreachelse}
No items were found in the search
{/foreach}

.index包含当前数组索引,从零开始。
例六. index示例

{* 每五行输出一次头部区块 *}
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>

iteration包含当前循环次数,与index不同,从1开始,每次循环增长1。
例七. iteration和index示例

{* this will output 0|1, 1|2, 2|3, … etc *}
{* 该例将输出0|1, 1|2, 2|3, … 等等 *}
{foreach from=$myArray item=i name=foo}
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
{/foreach}

first在当前{foreach}循环处于初始位置时值为TRUE。
例八. first属性示例

{* 对于第一个条目显示LATEST而不是id *}
<table>
{foreach from=$items key=myId item=i name=foo}
<tr>
<td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td>
<td>{$i.label}</td>
</tr>
{/foreach}
</table>

last在当前{foreach}循环处于最终位置是值为TRUE。
例九. last属性示例

{* 在列表结束时增加一个水平标记 *})
{foreach from=$items key=part_id item=prod name=products}
<a href=”#{$part_id}”>{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if}
{foreachelse}
… content …
{/foreach}

show是{foreach}的参数. show是一个布尔值。如果值为FALSE,{foreach}将不被显示。如果有对应的{foreachelse},将被显示。
total包括{foreach}将循环的次数,既可以在{foreach}中使用,也可以在之后使用。
例十. total属性示例

{* 在结束位置显示行数 *}
{foreach from=$items key=part_id item=prod name=foo}
{$prod.name><hr/>
{if $smarty.foreach.foo.last}
<div id=”total”>{$smarty.foreach.foo.total} items</div>
{/if}
{foreachelse}
… something else …
{/foreach}

问题

{foreach from=$custid item=curr_id key=num}
{if num is odd}
干啥
{else}
干其他的
{/if}
{/foreach}

与以下的代码的区别,odd和enen的意义?

{foreach from=$custid item=curr_id key=num}
{if num%2==0}
干啥
{else}
干其他的
{/if}
{/foreach}

 

后台订单层—

function bind_order_event()
    {
        var order_seq = 0; //设置变量等于0
        //while 在进入循环时先检查条件,下面为true,那就直接进入循环
        while(true)   //整不明白
        {
            //先暂且不论Utils是什么东西, 可以肯定是一个对象
            //第一次进入循环 order_seq= 0
            //那么$(‘order_’+order_seq) = $(‘order_0’) 
            //这样看来可能是找页面上的某个元素对象
            //而这个$(‘order_0’) 又是Utils的一个属性
            
            var order_sn = Utils.$(‘order_’+order_seq); 整不明白

            //也就是说,如果这个存在,也就是找到了$(‘order_0’) 具体你点右键,查看源代码
            //看看是不是有order_0字样的东西
            if (order_sn)   //这里是判断什么的?判断order_sn存在呢,还是判断值呢?
            {
                //e 在函数参数列表内,那么当鼠标移动,会有个事件发生,就是event,
                order_sn.onmouseover = function(e) //设置函数e代表 鼠标移动? 
                {
                    //试图执行clearTimeout,如果失败,系统会转到catch
                    try         //没明白
                    {
                        window.clearTimeout(timer); //清除时间
                    }
                    catch(e)                           //没明白 ——–
                    {
                    }
                    //估计是调用ajax,返回一个什么值
                    var order_id = Utils.request(this.href, ‘order_id’); //没明白
                    //有了order_id,调用下面这个函数,估计是显示产品
                    show_order_goods(e, order_id, show_goods_layer);     //运行这个函数?
                }
                //
                order_sn.onmouseout = function(e)                //设置函数e代表 鼠标离开? 

                {
                    hide_order_goods(show_goods_layer)            //运行这个函数?

                }
                order_seq++;                                变量的值加1
            }
            else                                          //否则
            {
                break;                                     //终止运行
            }
        }

 
 
 
全文如下:
    onload = function()
    {
        // 开始检查订单
        startCheckOrder();
    }
    /**
     * 搜索订单
     */
    function searchOrder()
    {
        listTable.filter[‘order_sn’] = Utils.trim(document.forms[‘searchForm’].elements[‘order_sn’].value);
        listTable.filter[‘consignee’] = Utils.trim(document.forms[‘searchForm’].elements[‘consignee’].value);
        listTable.filter[‘composite_status’] = document.forms[‘searchForm’].elements[‘status’].value;
        listTable.filter[‘page’] = 1;
        listTable.loadList();
    }
    function check()
    {
      var snArray = new Array();
      var eles = document.forms[‘listForm’].elements;
      for (var i=0; i<eles.length; i++)
      {
        if (eles[i].tagName == ‘INPUT’ && eles[i].type == ‘checkbox’ && eles[i].checked && eles[i].value != ‘on’)
        {
          snArray.push(eles[i].value);
        }
      }
      if (snArray.length == 0)
      {
        return false;
      }
      else
      {
        eles[‘order_id’].value = snArray.toString();
        return true;
      }
    }
    /**
     * 显示订单商品及缩图
     */
    var show_goods_layer = ‘order_goods_layer’;
    var goods_hash_table = new Object;
    var timer = new Object;
    /**
     * 绑定订单号事件
     *
     * @return void
     */
    function bind_order_event()
    {
        var order_seq = 0;
        while(true)
        {
            var order_sn = Utils.$(‘order_’+order_seq);
            if (order_sn)
            {
                order_sn.onmouseover = function(e)
                {
                    try
                    {
                        window.clearTimeout(timer);
                    }
                    catch(e)
                    {
                    }
                    var order_id = Utils.request(this.href, ‘order_id’);
                    show_order_goods(e, order_id, show_goods_layer);
                }
                order_sn.onmouseout = function(e)
                {
                    hide_order_goods(show_goods_layer)
                }
                order_seq++;
            }
            else
            {
                break;
            }
        }
    }
    listTable.listCallback = function(result, txt)
    {
        if (result.error > 0)
        {
            alert(result.message);
        }
        else
        {
            try
            {
                document.getElementById(‘listDiv’).innerHTML = result.content;
                bind_order_event();
                if (typeof result.filter == “object”)
                {
                    listTable.filter = result.filter;
                }
                listTable.pageCount = result.page_count;
            }
            catch(e)
            {
                alert(e.message);
            }
        }
    }
    /**
     * 浏览器兼容式绑定Onload事件
     *
     */
    if (Browser.isIE)
    {
        window.attachEvent(“onload”, bind_order_event);
    }
    else
    {
        window.addEventListener(“load”, bind_order_event, false);
    }
    /**
     * 建立订单商品显示层
     *
     * @return void
     */
    function create_goods_layer(id)
    {
        if (!Utils.$(id))
        {
            var n_div = document.createElement(‘DIV’);
            n_div.id = id;
            n_div.className = ‘order-goods’;
            document.body.appendChild(n_div);
            Utils.$(id).onmouseover = function()
            {
                window.clearTimeout(window.timer);
            }
            Utils.$(id).onmouseout = function()
            {
                hide_order_goods(id);
            }
        }
        else
        {
            Utils.$(id).style.display = ”;
        }
    }
    /**
     * 显示订单商品数据
     *
     * @return void
     */
    function show_order_goods(e, order_id, layer_id)
    {
        create_goods_layer(layer_id);
        $layer_id = Utils.$(layer_id);
        $layer_id.style.top = (Utils.y(e) + 12) + ‘px’;
        $layer_id.style.left = (Utils.x(e) + 12) + ‘px’;
        if (typeof(goods_hash_table[order_id]) == ‘object’)
        {
            response_goods_info(goods_hash_table[order_id]);
        }
        else
        {
            $layer_id.innerHTML = loading;
            Ajax.call(‘order.php?is_ajax=1&act=get_goods_info&order_id=’+order_id, ”, response_goods_info , ‘POST’, ‘JSON’);
        }
    }
    /**
     * 隐藏订单商品
     *
     * @return void
     */
    function hide_order_goods(layer_id)
    {
        $layer_id = Utils.$(layer_id);
        window.timer = window.setTimeout(‘$layer_id.style.display = “none”‘, 500);
    }
    /**
     * 处理订单商品的Callback
     *
     * @return void
     */
    function response_goods_info(result)
    {
        if (result.error > 0)
        {
            alert(result.message);
            hide_order_goods(show_goods_layer);
            return;
        }
        if (typeof(goods_hash_table[result.content[0].order_id]) == ‘undefined’)
        {
            goods_hash_table[result.content[0].order_id] = result;
        }
        Utils.$(show_goods_layer).innerHTML = result.content[0].str;
    }

ecshop二次开发相关资料–ecshop函数列表大全

所有函数功能说明:

lib_time.php
gmtime()
P: 获得当前格林威治时间的时间戳 /$0
server_timezone()
P: 获得服务器的时区 /$0
local_mktime($hour = NULL , $minute= NULL, $second = NULL,  $month = NULL,  $day = NULL,  $year = NULL)
P: 生成一个用户自定义时区日期的GMT时间戳
local_date($format, $time = NULL)
P: 将GMT时间戳格式化为用户自定义时区日期
gmstr2time($str)
P: 转换字符串形式的时间表达式为GMT时间戳
local_strtotime($str)
P: 将一个用户自定义时区的日期转为GMT时间戳
local_gettime($timestamp = NULL)
P:  获得用户所在时区指定的时间戳
local_getdate($timestamp = NULL)
P: 获得用户所在时区指定的日期和时间信息

lib_base.php
sub_str($str, $length = 0, $append = true)
P: 截取UTF-8编码下字符串的函数
real_ip()
P: 获得用户的真实IP地址
str_len($str)
P: 计算字符串的长度(汉字按照两个字符计算)
get_crlf()
P: 获得用户操作系统的换行符
send_mail($name, $email, $subject, $content, $type = 0, $notification=false)
P: 邮件发送
gd_version()
P:  获得服务器上的 GD 版本
file_get_contents($file)
P: 如果系统不存在file_get_contents函数则声明该函数
file_put_contents($file, $data, $flags = ”)
P: 如果系统不存在file_put_contents函数则声明该函数
floatval($n)
P: 如果系统不存在 floatval 函数则声明该函数
file_mode_info($file_path)
P: 文件或目录权限检查函数
log_write($arg, $file = ”, $line = ”)
P: 写入日志内容
make_dir($folder)
P: 检查目标文件夹是否存在,如果不存在则自动创建该目录
gzip_enabled()
P: 获得系统是否启用了 gzip
addslashes_deep($value)
P: 递归方式的对变量中的特殊字符进行转义
addslashes_deep_obj($obj)
P: 将对象成员变量或者数组的特殊字符进行转义
stripslashes_deep($value)
P: 递归方式的对变量中的特殊字符去除转义
make_semiangle($str)
P: 将一个字串中含有全角的数字字符、字母、空格或’%+-()’字符转换为相应半角字符
check_file_type($filename, $realname = ”, $limit_ext_types = ”)
P: 检查文件类型 /文件名/真实文件名/允许的文件类型
mysql_like_quote($str)
P: 对 MYSQL LIKE 的内容进行转义 过滤掉_ %等字符.
real_server_ip()
P: 获取服务器的ip
ecs_header($string, $replace = true, $http_response_code = 0)
P: 自定义 header 函数,用于过滤可能出现的安全隐患
ecs_iconv($source_lang, $target_lang, $source_string = ”)
P: 自定义的编码转换
ecs_geoip($ip)
P: 取得IP的地址,采用IP库
trim_right($str)
P: 去除字符串右侧可能出现的乱码
move_upload_file($file_name, $target_name = ”)
P: 将上传文件转移到指定位置
json_str_iconv($str)
P: 将JSON传递的参数转码
get_file_suffix($file_name, $allow_type = array())
P: 获取文件后缀名,并判断是否合法
read_static_cache($cache_name)
P: 读结果缓存文件
write_static_cache($cache_name, $caches)
P: 写结果缓存文件

lib_common.php (公用函数库)
db_create_in($item_list, $field_name = ”)
P: 创建像这样的查询: “IN(‘a’,’b’)” $item_list为数组
is_email($user_email)
P: 验证输入的邮件地址是否合法
is_time($time)
P: 检查是否为一个合法的时间格式
assign_query_info()
P: 获得查询时间和次数,并赋值给smarty
region_result($parent, $sel_name, $type)
P: 创建地区的返回信息
get_regions($type = 0, $parent = 0)
P: 获得指定国家的所有省份, 函数需要数据库支持.
get_shipping_config($area_id)
P: 获得配送区域中指定的配送方式的配送费用的计算参数 比如快捷公司不同.
init_users()
P: 初始化会员数据整合类
cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)
P: 获得指定分类下的子分类的数组, $re_type控制返回类型
cat_options($spec_cat_id, $arr)
P: 过滤和排序所有分类,返回一个带有缩进级别的数组
load_config()
P: 载入配置信息
get_brand_list()
P: 取得品牌列表
get_brands($cat = 0, $app = ‘brand’)
P: 获得某个分类下的品牌列表
get_promotion_info($goods_id = ”)
P: 所有的促销活动信息
get_children($cat = 0)
P: 获得指定分类下所有底层分类的ID
get_article_children ($cat = 0)
P: 获得指定文章分类下所有底层分类的ID
get_mail_template($tpl_name)
P: 获取邮件模板
order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = ”, $username = null)
P: 记录订单操作记录
price_format($price, $change_price = true)
P: 格式化商品价格
get_virtual_goods($order_id, $shipping = false)
P: 返回订单中的虚拟商品 记录是否发货.
virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = ‘other’)
P:  虚拟商品发货
virtual_card_shipping ($goods, $order_sn, &$msg, $process = ‘other’)
P: 虚拟卡发货
virtual_card_result($order_sn, $goods)
P: 返回虚拟卡信息
get_snatch_result($id)
P: 获取指定 id snatch 活动的结果
clear_tpl_files($is_cache = true, $ext = ”)
P: 清除指定后缀的模板缓存或编译文件
clear_compiled_files($ext = ”)
P: 清除模版编译文件
clear_cache_files($ext = ”)
P: 清除缓存文件
clear_all_files($ext = ”)
P: 清除模版编译和缓存文件
smarty_insert_scripts($args)
P: 页面上调用的js文件,组合功能.
smarty_create_pages($params)
P: 创建分页的列表
build_uri($app, $params, $append = ”, $page = 0, $size = 0)
P: 重写 URL 地址
formated_weight($weight)
P: 格式化重量
log_account_change($user_id, $user_money = 0, $frozen_money = 0, $rank_points = 0, $pay_points = 0, $change_desc = ”, $change_type = ACT_OTHER)
P: 记录帐户变动
article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)
P: 获得指定分类下的子分类的数组/ 向下取数组.
article_cat_options($spec_cat_id, $arr)
P: 过滤和排序所有文章分类,返回一个带有缩进级别的数组
uc_call($func, $params=null)
P: 调用UCenter的函数
exception_handler($errno, $errstr, $errfile, $errline)
P: error_handle回调函数未启用.
get_image_path($goods_id, $image=”, $thumb=false, $call=’goods’, $del=false)
P: 重新获得商品图片与商品相册的地址
user_uc_call($func, $params = null)
P: 调用使用UCenter插件时的函数
get_volume_price_list($goods_id, $price_type = ‘1’)
P: 取得商品优惠价格列表
get_final_price($goods_id, $goods_num = ‘1’, $is_spec_price = false, $spec = array())
P: 取得商品最终使用价格
get_package_info($id)
P: 获取指定id package 的信息
get_package_goods($package_id)
P: 获得指定礼包的商品

lib_main.php (前台公用函数库)
update_user_info()
P: 更新用户SESSION,COOKIE及登录时间、登录次数。
get_user_info($id=0)
P:  获取用户信息数组
assign_ur_here($cat = 0, $str = ”)
P: 取得当前位置和页面标题
get_parent_cats($cat)
P: 获得指定分类的所有上级分类
build_pagetitle($arr, $type = ‘category’)
P: 根据提供的数组编译成页面标题
build_urhere($arr, $type = ‘category’)
P: 根据提供的数组编译成当前位置
assign_dynamic($tmp
P: 获得指定页面的动态内容
assign_articles($id, $num)
P: 分配文章列表给smarty
get_shop_help()
P: 分配帮助信息
assign_pager($app, $cat, $record_count, $size, $sort, $order, $page = 1,$keywords = ”, $brand = 0, $price_min = 0, $price_max = 0, $display_type = ‘list’, $filter_attr=”, $url_format=”, $sch_array=”)
P: 创建分页信息.分页函数.
get_pager($url, $param, $record_count, $page = 1, $size = 10)
P: 生成给pager.lbi赋值的数组
get_vote($id = ”)
P: 调用调查内容
get_user_browser()
P: 获得浏览器名称和版本
is_spider($record = true)
P: 判断是否为搜索引擎蜘蛛
get_os()
P: 获得客户端的操作系统
visit_stats()
P: 统计访问信息
save_searchengine_keyword($domain, $path)
P: 保存搜索引擎关键字
get_tags($goods_id = 0, $user_id = 0)
P: 获得指定用户、商品的所有标记
get_dyna_libs($theme, $tmp)
P:  获取指定主题某个模板的主题的动态模块
dyna_libs_replace($matches)
P: 换动态模块
upload_file($upload, $type)
P: 处理上传文件,并返回上传图片名(上传失败时返回图片名为空)
show_message($content, $links = ”, $hrefs = ”, $type = ‘info’, $auto_redirect = true)
P: 显示一个提示信息
parse_rate_value($str, &$operate)
P: 将一个形如+10, 10, -10, 10%的字串转换为相应数字,并返回操作符号
recalculate_price()
P: 重新计算购物车中的商品价格:目的是当用户登录时享受会员价格,当用户退出登录时不享受会员价格

assign_comment($id, $type, $page = 1)
P: 查询评论内容
assign_template($ctype = ”, $catlist = array())
P: 默认的smarty赋值
time2gmt($time)
P: 将一个本地时间戳转成GMT时间戳
get_user_bonus($user_id = 0)
P: 查询会员的红包金额
set_affiliate()
P: 保存推荐uid
get_affiliate()
P: 获取推荐uid
article_categories_tree($cat_id = 0)
P: 获得指定分类同级的所有分类以及该分类下的子分类
get_article_parent_cats($cat)
P: 获得指定文章分类的所有上级分类
get_library_number($library, $template = null)
P: 取得某模板某库设置的数量
get_navigator($ctype = ”, $catlist = array())
P: 取得自定义导航栏列表
license_info()
P: 授权信息内容

lib_insert.php (动态内容函数库)
insert_query_info()
P: 获得查询次数以及查询时间
insert_history()
P: 调用浏览历史
insert_cart_info()
P: 调用购物车信息
insert_ads($arr)
P: 调用指定的广告位的广告
insert_member_info()
P: 调用会员信息
insert_comments($arr)
P: 调用评论信息
insert_vote()
P: 调用在线调查信息

lib_goods.php (商品相关函数库)
goods_sort($goods_a, $goods_b)
P: 商品推荐usort用自定义排序行数
get_categories_tree($cat_id = 0)
P: 获得指定分类同级的所有分类以及该分类下的子分类
get_child_tree($tree_id = 0)
P: 取和指定分类ID下的分类树
get_top10($cats = ”)
P: 调用当前分类的销售排行榜
get_recommend_goods($type = ”, $cats = ”)
P: 获得推荐商品
get_promote_goods($cats = ”)
P: 获得促销商品
get_category_recommend_goods($type = ”, $cats = ”, $brand = 0, $min =0,  $max = 0, $ext=”)
P: 获得指定分类下的推荐商品
get_goods_info($goods_id)
P: 获得商品的详细信息
get_goods_properties($goods_id)
P: 获得商品的属性和规格
get_same_attribute_goods($attr)
P:  获得属性相同的商品
get_goods_gallery($goods_id)
P: 获得指定商品的相册
assign_cat_goods($cat_id, $num = 0, $from = ‘web’)
P: 获得指定分类下的商品
assign_brand_goods($brand_id, $num = 0, $cat_id = 0)
P: 获得指定的品牌下的商品
get_extension_goods($cats)
P: 获得所有扩展分类属于指定分类的所有商品ID
bargain_price($price, $start, $end)
P: 判断某个商品是否正在特价促销期
spec_price($spec)
P: 获得指定的规格的价格
group_buy_info($group_buy_id, $current_num = 0)
P: 取得团购活动信息
group_buy_stat($group_buy_id, $deposit)
P: 取得某团购活动统计信息
group_buy_status($group_buy)
P: 获得团购的状态
auction_info($act_id, $config = false)
P: 取得拍卖活动信息
auction_log($act_id)
P: 取得拍卖活动出价记录
auction_status($auction)
P: 计算拍卖活动状态(注意参数一定是原始信息)
goods_info($goods_id)
P: 取得商品信息
favourable_info($act_id)
P: 取得优惠活动信息
wholesale_info($act_id)
P: 批发信息
add_style($goods_name, $style)
P:  添加商品名样式
get_goods_attr($goods_id)
P: 取得商品属性
get_goods_fittings($goods_list = array())
P: 获得购物车中商品的配件

lib_article.php (文章及文章分类相关函数库)
get_cat_articles($cat_id, $page = 1, $size = 20 ,$requirement=”)
P: 获得文章分类下的文章列表
get_article_count($cat_id ,$requirement=”)
P: 获得指定分类下的文章总数

Php名片,什么是PHP

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。PHP的另一个含义是:菲律宾比索的标准符号。

 

功能
   PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
发展
   PHP 最初是1994年Rasmus Lerdorf创建的,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在1995年中,PHP2.0发布了。第二版定名为PHP/FI(Form Interpreter)。PHP/FI加入了对mySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI;时间到了1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。
  PHP 原本的简称为 Personal Home Page,是Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的 Perl 程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开释出,希望可以透过社群来加速程序开发与寻找错误。这个释出的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。
  在1997年,任职于 Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.[5]。经过几个月测试,开发团队在1997年11月释出了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式释出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 释出后开始改写 PHP 的核心,这个在1999年释出的剖析器称为 Zend Engine[7],他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。
  在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出,2004年7月13日则释出了PHP 5,PHP 5则使用了第二代的Zend Engine[5]。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。
  2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。
特性
   PHP的特性包括:
  开放的源代码:所有的PHP源代码事实上都可以得到。
  PHP是免费的。
  php的便捷性 : php十分便捷,学习简单
  基于服务器端:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。
  嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。
  简单的语言:PHP坚持脚本语言为主,与Java和C++不同。
  效率高:PHP消耗相当少的系统资源。
  图像处理:用PHP动态创建图像
  面向对像:在php4,php5 中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序。
  PHP 相对于其他语言,编辑简单,实用性强,更适合初学者。
技术应用
   1,伪静态
  2,静态页面生成
  3,数据库缓存
  4,过程缓存
  5,div+css w3c标准
  6,大负荷
  7,分布式
  8,jquery框架集成
  9,flex
  10,桌面程序应用