phpbb,源码分析 模板引擎,工具书
$blocks = explode('.', $blockname);
$blockcount = sizeof($blocks) - 1;
$str = &$this->_tpldata;
for ($i = 0; $i < $blockcount; $i++)
{
$str = &$str[$blocks[$i]];
$str = &$str[sizeof($str) - 1];
}
unset($str[$blocks[$blockcount]]);
}
else
{
// Top-level block.
unset($this->_tpldata[$blockname]);
}
return true;
}
我们可以看到一个简单的逻辑,首先根据这个函数,可以看到在phpbb3的模板中有两种形式的块数据名字定义,它们是:
blockvar blockvar.subvar.subsubvar
可以看到在上面的两种形式的blockvar形式,中间有”.”的有嵌套的blockvar形式,而前面一种只是简单的单层的块数据。下面是我从phpbb3.0.5的代码中找到的例子,请看
在faq_body.html中有下面这段模板代码,可以看到这是一个双重的循环。
<!-- BEGIN faq_block -->
<!-- IF faq_block.S_ROW_COUNT == 4 -->
</div>
<div class="column2">
<!-- ENDIF -->
<dl class="faq">
<dt><strong>{faq_block.BLOCK_TITLE}</strong></dt>
<!-- BEGIN faq_row -->