2首页
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们先来看首页,它主要包含以下内容:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们先来看首页,它主要包含以下内容:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们首先,来看这个企业站。这个网站,就是为我自己的公司做的,所以做好做坏都一样,没有特别大的压力。做网站,首先需要有个需求,你这个网站,有哪些页面组成,每个页面的结构,最好写个文档。然后由设计人员做出设计图,然后再由美工人员做出静态页面,最后将它们转到Drupal上来。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
企业网站建设,它的复杂程度,远小于网上书店这个例子,而且这里的很多配置,在前面我们也都讲过了。但是,我还是想较为详细的记录整个过程,这样方便那些水平比较低的Drupal学习者,学习Drupal。在读者对象方面,我会优先满足Drupal水平比较低的读者群,优先为他们服务,这是出于市场的考虑,水平比较低的,更愿意购买我的资料;水平高的,我写的再好,他们也不买。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
当Drupal执行完HTTP请求后,调用drupal_page_footer。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
现在,整个$page数组已经构建完成了,Drupal是怎么把它转为HTML页面的呢?注意这里的这个数组的类型是page,这个和表单元素数组,是一样的。Drupal6里面的表单数组,在Drupal7下,概念上做了进一步的扩充,除了表单元素以外,区块、节点、页面都是以呈现数组的形式出现。所有的呈现数组,经过drupal_render函数处理,就会转换成对应HTML形式。我们来看一下drupal_render的定义。
function drupal_render(&$elements) {
// Early-return nothing if user does not have access.
if (empty($elements) || (isset($elements['#access']) && !$elements['#access'])) {
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
让我们来试一下,打开block.module文件,搜索block_page_build,还真找到了。真聪明,你猜对了。我们来看一下block模块的具体实现。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
这是我们这里实际执行的语句。用来合成页面的是drupal_render_page函数。这个时候,传递过来的$page_callback_result,只是一个包含节点对象的呈现数组,节点外面的区域、区块是怎么加进来的呢?这是很多初学者的疑问。让我们来看这个函数的定义:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们在node_menu里面,并没有定义'delivery callback',所以这里的$default_delivery_callback将会使用Drupal的默认值。$page_callback_result就是刚才返回的包含节点对象的呈现数组。现在,让我们来看一下drupal_deliver_page,是怎么将这个数组转换成整个页面,并返回给浏览器的。