手机版

phpbb源码分析-模板引擎(2)(4)

发布时间:2021-06-08   来源:未知    
字号:

phpbb,源码分析 模板引擎,工具书

<dd><a

href="#f{faq_block.S_ROW_COUNT}r{faq_block.faq_row.S_ROW_COUNT}">{faq_block.faq_row.FAQ_QUESTION}</a></dd>

<!-- END faq_row -->

</dl>

<!-- END faq_block -->

我们再来看php代码中是如何实现赋值到模板的,请看下面的代码

// Pull the array data from the lang pack

$help_blocks = array();

foreach ($user->help as $help_ary)

{

if ($help_ary[0] == '--')

{

$template->assign_block_vars('faq_block',

array(

'BLOCK_TITLE'=>

$help_ary[1])

);

continue;

}

$template->assign_block_vars('faq_block.faq_row', array(

'FAQ_QUESTION'=> $help_ary[0],

'FAQ_ANSWER'=> $help_ary[1])

);

}

可以看到对’faq_block.faq_row’的block赋值和对’faq_block’,前者赋值后的模板代码就会有两层嵌套的循环,而前面只有一层。所以{faq_block.BLOCK_TITLE}是在第一层循环里面,第二层循环里面存取的是’FAQ_QUESTION’和’FAQ_ANSWER’的值。需要用{faq_block.faq_row.FAQ_QUESTION}的形式将其取出。通过以上一个简单的例子的讲解,其实我相信应该已经很明了了讲明了phpbb3模板引擎中一个很重要的功能,就是数组(嵌套数组)的赋值功能。代码中也示例如何使用assign_block_vars赋值的数组值。

再回到destroy_block_vars函数,首先函数先判断传入参数(需要被销毁的block变量名字)是否含有”.”,如果没有”.”那么意味着只要简单的去掉$this->_tpldata[$blockname]就够了。如果找到了”.”,那么需要麻烦一点,需要递归销毁。phpbb3是用下面的代码实现的

// Nested block.

$blocks = explode('.', $blockname);

$blockcount = sizeof($blocks) - 1;

phpbb源码分析-模板引擎(2)(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)