Drupal 自己定义主题实体 Theming Custom Entities
在自己定義主題中輸出結(jié)果時(shí),有三個(gè)部分或很多其它特殊的函數(shù)。如 hook_menu,Page Callback。MODULE_theme 鉤子
1、hook_menu
為了使用自己定義的實(shí)體。像創(chuàng)建、編輯、刪除、查看實(shí)體的功能,就必須要?jiǎng)?chuàng)建一些 Menu path。這里創(chuàng)建、編輯、刪除是與Drupal's Form API相關(guān)的,通過hook_menu,能夠定義我們須要的路徑來訪問這個(gè)新創(chuàng)建的實(shí)體內(nèi)容
function my_module_menu() {$items['my_entity/%my_entity'] = array('title callback' ? => 'my_entity_page_title','title arguments' ?=> array(1),'page callback' ? ?=> 'my_entity_page_view','page arguments' ? => array(1),'access arguments' => array('view entities'),'type' ? ? ? ? ? ? => MENU_CALLBACK,);return $items;}2、Page Callback
在上面的樣例中。我們?cè)谠L問這個(gè)路徑時(shí),定義了 page callback 相應(yīng)的?my_entity_page_view 函數(shù),因此,接下來就須要?jiǎng)?chuàng)建這個(gè)函數(shù),例如以下
/*** This is the callback we defined to be executed when a user* requests http://mysite.com/my_entity/1 (1 is just an example ID,* it could be anything). This function will set up the data and* prepare the render array(s). You will specify the template to* use in this callback. The critical thing to note below is the* order in which field_attach_prepare_view, entity_prepare_view* and field_attach_view are called. These functions must be called* in this order and they must be called before you specify which* theme to use.*/function my_entity_page_view($entity, $view_mode='full') {$entity_type = $entity->entityType();$entity_id = entity_id($entity_type, $entity);//// Remove previously built content, if exists//$entity->content = array();$entity->title = filter_xss($entity->title);//// Build the fields content//field_attach_prepare_view($entity_type, array($entity_id => $entity), $view_mode);entity_prepare_view($entity_type, array($entity_id => $entity));$entity->content += field_attach_view($entity_type, $entity, $view_mode);// Specify the theme to use and set the #element. Note that the key// you use to pass the entity object must match the key you set in the// variables in my_module_theme(). So in the case below, we use the key// named #element because in my_module_theme() we set the following code://// array(// ? 'my_entity' => array(// ? ? 'variables' => array('element' => null),// ? ? 'template' => 'my_entity'// ? ),// );//$entity->content += array('#theme' ? ? => $entity_type,'#element' ? => $entity,'#view_mode' => $view_mode,'#language' ?=> LANGUAGE_NONE,);return $entity->content;}3、MODULE_theme() Hook
到眼下為止,為了這個(gè)實(shí)體我們已經(jīng)定義了菜單項(xiàng)還有CALL BACK返回值,接下來。剩下的就須要?jiǎng)?chuàng)建一個(gè)指向模板的文件。看上面部分內(nèi)容,能夠看到內(nèi)容為:
$entity->content += array('#theme' => 'my_entity'); 意思是說。指向?my_entity?,那么,應(yīng)該怎樣定義呢? function my_module_theme($existing, $type, $theme, $path) {return array('my_entity' => array('variables' => array('element' => null),'template' => 'my_entity_template'),);}4、依據(jù)第三部分的內(nèi)容。我們則須要?jiǎng)?chuàng)建名為?my_entity_template.tpl.php 的模板文件
[php// In a real module variables should be manipulated in a preprocess function.$content = $element->content;] <div class="[php print $classes; ]"> [php print render($content['title']); ] [php print render($content['field_date']); ][php print render($content['field_author']);][php print render($content['field_image']);] [php print render($content['field_description']);]原文鏈接:https://drupal.org/node/1238606
轉(zhuǎn)載于:https://www.cnblogs.com/blfbuaa/p/7080092.html
總結(jié)
以上是生活随笔為你收集整理的Drupal 自己定义主题实体 Theming Custom Entities的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jmeter连接Mysql
- 下一篇: HDFS概述(2)————Block块大