第7章 Batch API(批处理)
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们做开发的时候,经常会遇到批量处理数据的情况,如果一次处理10条或者上百条数据,我们一次性的处理完成就可以了。当需要处理上千条、上万条的数据时,我们不可能把所有的数据,一股脑的都加载进来,逐一处理,这是行不通的,很容易就超出了PHP的各种限制,比如内存限制、执行时间的限制。这个时候,就需要批处理这种方式,Drupal提供了一套批处理API,方便我们做这件事情。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们做开发的时候,经常会遇到批量处理数据的情况,如果一次处理10条或者上百条数据,我们一次性的处理完成就可以了。当需要处理上千条、上万条的数据时,我们不可能把所有的数据,一股脑的都加载进来,逐一处理,这是行不通的,很容易就超出了PHP的各种限制,比如内存限制、执行时间的限制。这个时候,就需要批处理这种方式,Drupal提供了一套批处理API,方便我们做这件事情。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
很多人经常会问这样的问题,Drupal是怎么把这些模板文件转为HTML内容返回的呢?我们前面已经讲过了,预处理函书里面,可以为模板文件设置变量。现在的问题是怎么最终使用模板文件生成HTM?这个工作,是在下面的函数中实现的:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们以字段field_email为例,它的字段类型为text,把它添加到了用户实体上面:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
template_preprocess_field()
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
$items: 包含字段值的数组。使用render()输出。
默认的模板文件位于modules\field\theme下面:
<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
它的模板建议规则,首先按照它所在的module及delta来定义,然后按照它所在的区域来定义。我们还以主菜单区块为例,假定将它放到了navigation区域: