discuz模块更新使用流程解析

discuz模块更新使用流程解析

  1. 模板文件中的模块调用<!--{block/977}-->
  2. 控制文件调用模板文件,解析模板文件,取出页面上调用的模块,在模板解析文件头部添加

<?php block_get(‘977’),模板文件模块所在处替换为:<?php block_display('977');?>

处理函数说明:

function_core.php --- function_block.php
block_get -> block_get_batch

block_display->block_display_batch

block_get_batch 取得模块数据items

block_display_batch  数据+模板=数据的html代码(重新获取模块数据,如果有推送数据,则优先选择模块推送数据)

 

/**
 * 获取模块配置信息,模块数据
 */
function block_get_batch($parameter) {
    global $_G;
    $bids = $parameter && is_array($parameter) ? $parameter : ($parameter ? explode(',', $parameter) : array());
    $bids = array_map('intval', $bids);
    $bids = array_unique($bids);
    $styleids = array();

    if($bids) {
        if(C::t('common_block')->allowmem) {
            if(($cachedata = memory('get', $bids, 'blockcache_')) !== false) {
                foreach ($cachedata as $bid => $block) {
                    $_G['block'][$bid] = $block;
                    if($block['styleid']) {
                        $styleids[$block['styleid']] = $block['styleid'];
                    }
                }
                if($styleids) {
                    block_getstyle($styleids);
                }
                if(!($bids = array_diff($bids, array_keys($cachedata)))) {
                    return true;
                }
            }
        }

        $items = $prelist = array();
                //获取模块数据,去除过期数据,取出固定当前可用数据,全部可用数据(除过期的
        foreach(C::t('common_block_item')->fetch_all_by_bid($bids) as $item) {
                    //数据过期
            if($item['itemtype'] == '1' && $item['enddate'] && $item['enddate'] < TIMESTAMP) {
                continue;
                                //数据固定,在可用范围内
            } elseif($item['itemtype'] == '1' && (!$item['startdate'] || $item['startdate'] <= TIMESTAMP)) {
                            //如果指定位置处已经存在,则覆盖
                if (!empty($items[$item['bid']][$item['displayorder']])) {
                    $prelist[$item['bid']] = array();
                }
                $prelist[$item['bid']][$item['displayorder']] = $item;
            }
            $items[$item['bid']][$item['displayorder']] = $item;
        }
        foreach(C::t('common_block')->fetch_all($bids) as $b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值