theme('item-list',array('items'=>array('aaa','bbb'))) 是如何运行的 ?

$items[‘items‘] = array(
    l(‘Configure‘, ‘admin/config‘),
    l(‘Structure‘, ‘admin/structure‘),
);
$theme =  theme(‘item_list‘, $items);

1,  判断是否所有的模块都加载了,

if (!module_load_all(NULL) && !defined(‘MAINTENANCE_MODE‘)) {
    throw new Exception(t(‘theme() may not be called until all modules are loaded.‘));
  }

2,  获得所有的ThemeRegistry信息, 这个信息就是所有模块定义的hook_theme的数组, 并合并了很多默认的信息, 比如process function, function, render array, variables,etc

 $hooks = theme_get_registry(FALSE);

3,  获得这次的ThemeHook所对应的ThemeRegistry信息

$info = $hooks[$hook];

4,  如果hook_theme定义了includes, 那就加载函数

if (!empty($info[‘includes‘])) {
    foreach ($info[‘includes‘] as $include_file) {
      include_once DRUPAL_ROOT . ‘/‘ . $include_file;
    }
  }

5,  吧$variable和ThemeRegistry对应这次hook的variable合并

  if (!empty($info[‘variables‘])) {
    $variables += $info[‘variables‘];
  }

6, $info里面process preprocess function被调用

$processor_function($variables, $hook_clone);

7, 如果在process preprocess function里改变了$variable[‘theme_hook_suggestion‘]的话, 会重新加载$hook

 $info = $hooks[$suggestion];

8, $info里面的function会被调用来处理$variable

 $output = $info[‘function‘]($variables);

theme('item-list',array('items'=>array('aaa','bbb'))) 是如何运行的 ?

时间: 2024-12-26 18:40:58

theme('item-list',array('items'=>array('aaa','bbb'))) 是如何运行的 ?的相关文章

[C++] the pointer array & the array's pointer

void main(){ // the pointer array char* arry[] = { "hello", "world", "haha" }; for (int i = 0; i < 3; i++){ printf("string:%s,address:%p\n", arry[i], arry[i]); } // the array's pointer int a[10] = { 0, 1, 2, 3, 4

SqlServer 字符截取 aaa bbb ccc

SqlServer 字符截取 aaa bbb ccc 现在有这样一个需求:省市区在一个字段里.需要拆分省市区到不同的字段.最后达到效果 这是我写的方法: 还有没有更好的办法?.感觉这样截取太麻烦.

JavaScript定义数组的三种方式(new Array(),new Array(&#39;x&#39;,&#39;y&#39;),[&#39;x&#39;,&#39;y&#39;])

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Linux Array & Associative Array

Ordinary Array: Assign1: arrayName=(value1 value2 ...) Assign2: arrayName[index]=value Length: ${#arrayName[*]} or ${#arrayName[@]} Indexes: ${!arrayName[*]} or ${#arrayName[@]} Example: #!/bin/bash group1=(rio amos) group2[0]=bill group2[1]=frank gr

2018-6-3_《ES7的include、ES6的Array.of(),Array.from()及扩展符》

一. ES7的include //ES7,include-查找数组是否包含某个元素 返回布尔 let a=['OB','Koro1',1,NaN]; // let b=a.includes(NaN); // true 识别NaN // let b=a.includes('Koro1',100); // false 超过数组长度 不搜索 // let b=a.includes('Koro1',-3); // true 从倒数第三个元素开始搜索 // let b=a.includes('Koro1'

There is no getter for property named &#39;XXX&#39; in class &#39;aaa.bbb.ccc&#39;(终极骚操作的解决方法)

使用SpringBoot整合Mybatis时,遇到了像标题的异常,博主当时是用Bean类对象作为参数的,所以百度了很久都没有建设性答案.贴一下报错的xxxDao文件和xxxMapper.xml文件: package com.cjs.dao; import com.cjs.bean.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.ut

LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] &lt;c++&gt;

LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++> 给出排序好的一维数组,如果一个元素重复出现的次数大于两次,删除多余的复制,返回删除后数组长度,要求不另开内存空间. C++ 献上自己丑陋无比的代码.相当于自己实现一个带计数器的unique函数 class Solution { public: int removeDuplicates(std::vector<int>& nums) {

Array.of() &amp;&amp; Array()

Array.of(7) 创建一个具有单个元素 7 的数组, Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined组成的数组). Array.of(7); // [7] Array.of(1, 2, 3); // [1, 2, 3] Array(7); // [ , , , , , , ] Array(1, 2, 3); // [1, 2, 3] Array.of(1); // [1] Array.of(1, 2, 3); //

81. Search in Rotated Sorted Array II (Array; Divide-and-Conquer)

Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the array. 思路:此时可能存在nums[start]=nums[end]或者nums[start]=n