Drupal 自己定义主题实体 Theming Custom Entities

在自己定义主题中输出结果时,有三个部分或很多其它特殊的函数。如 hook_menu,Page Callback。MODULE_theme 钩子

1、hook_menu

为了使用自己定义的实体。像创建、编辑、删除、查看实体的功能,就必须要创建一些 Menu path。这里创建、编辑、删除是与Drupal's Form API相关的,通过hook_menu,能够定义我们须要的路径来訪问这个新创建的实体内容

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

在上面的样例中。我们在訪问这个路径时,定义了 page callback 相应的 my_entity_page_view 函数,因此,接下来就须要创建这个函数,例如以下

/*** 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

到眼下为止,为了这个实体我们已经定义了菜单项还有CALL BACK返回值,接下来。剩下的就须要创建一个指向模板的文件。看上面部分内容,能够看到内容为:

$entity->content += array('#theme' => 'my_entity');
意思是说。指向 my_entity ,那么,应该怎样定义呢?
function my_module_theme($existing, $type, $theme, $path) {return array('my_entity' => array('variables' => array('element' => null),'template' => 'my_entity_template'),);}

4、依据第三部分的内容。我们则须要创建名为 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

转载于:https://www.cnblogs.com/blfbuaa/p/7080092.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑暗之魂3正在从服务器获取信息,黑暗之魂3如何解决入侵服务器问题 | 手游网游页游攻略大全...

发布时间&#xff1a;2016-01-04今天为大家带来的是黑暗之魂3法兰守卫入侵方法,一起来看看吧! 黑暗之魂3 法兰守卫入侵方法 法兰守卫怎么入侵 今天为大家带来的是黑暗之魂3法兰守卫入侵方法,一起来看看吧! 你的游戏可能被防火墙禁止了——解决方法:找到你的 ...标签&#xff1a…

Linux用户与用户组

Linux目录详解&#xff1a; 目录名说明/bin重要的二进制 (binary) 应用程序&#xff1a;包含二进制文件&#xff0c;系统的所有用户使用的命令都在这个目录下/boot启动 (boot) 配置文件&#xff1a;包含引导加载程序相关的文件&#xff0c;开机时用到的引导文件/data数据存储区…

数据库增添

条件查询用where 比如&#xff1a;查询Score表中成绩在60到80之间的所有记录。 select DEGREE from score where degree>60 and degree<80 模糊查询用% 比如查询与三相关的数据&#xff1a; where cno like 3% 3%是已三开头 %3%是中间带3 %3是末尾带3 排序查询 orde…

小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信

Django服务器 解析小程序发送的json二进制字符串https://blog.csdn.net/qq_25068917/article/details/81041048http://www.cnblogs.com/Liang-jc/p/9326680.html小程序 解析Django服务器返回的json二进制字符串(字典)https://blog.csdn.net/qiushi_1990/article/details/759129…

Linux时间date与timedatectl

date&#xff1a; date是Linux里日期管理命令 UTC 协调世界时&#xff0c;又称世界统一时间、世界标准时间、国际协调时间。由于英文&#xff08;CUT&#xff09;和法文&#xff08;TUC&#xff09;的缩写不同&#xff0c;作为妥协&#xff0c;简称UTC GMT 即格林尼治 平太阳时…

2.apache模块mod_rpaf ,让nginx代理后端的apache获取访客真是IP

安装mod_rpaf这个模块 #wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz(下载不了就在百度上找相应的软件包下载) #tar xvfz mod_rpaf-0.6.tar.gz #cd mod_rpaf-0.6检查有没有httpd-devel这个工具包(如果没有就安装一下&#xff0c;有就直接执行…

Linux切换用户

显示目前用户的名称 logname切换用户 su 用户名当在权限不够的时候可以使用下面的命令执行&#xff0c;执行完会再自动切换到执行前的用户 su -c 要执行的命令 要切换的用户名 su -c ls root提高普通用户的操作权限,权限提升到了root sudo <参数> sudo ls sudo其它参…

oracle 之 基础操作

//删除存在的表空间及数据 drop tablespace TS_YYGL including contents and datafiles若是出现了提示 错误 导致无法全部删除&#xff0c;那么就执行以下语句可以得到那些表有主键相关&#xff0c;再执行就可以 select alter table ||owner||.||table_name|| drop constraint …

object类型转换为Array类型

var obj {a: 1, b: 2, c: 3}; // .... var arr []; for(var key in obj){ if(!obj.hasOwnProperty(key)){continue;}var item {}; item[key] obj[key]; arr.push(item); } console.log(arr); // [{a: 1}, {b: 2}, {c: 3}] // 将Object的属性输出成Array function objOf…

关机重启与who

关机&#xff1a; shutdown命令可以用来进行关闭系统&#xff0c;并且在关机以前传送讯息给所有使用者正在执行的程序&#xff0c;shutdown 也可以用来重开机使用者权限&#xff1a;管理员用户 关机语法 shutdown [-t seconds] [-rkhncfF] time [message]参数说明&#xff1a;…

webpack之font-awesome

1、安装font-awesome和font-awesome-loader及依赖 git&#xff1a;https://github.com/shakacode/font-awesome-loader npm install font-awesome-loader less less-loader css-loader style-loader file-loader font-awesome -save 2、配置webpack 官方给出的webpack2.0配置如…

目录命令及权限

目录命令及权限&#xff1a; 命令说明ls列出目录cd切换目录pwd显示目前的目录mkdir创建新目录rmdir删除一个空的目录cp复制文件或目录rm移除文件或目录mv移动文件与目录或修改文件与目录的名称 ls列出目录&#xff1a; ls # 显示不隐藏的文件和文件夹 ls -l # 显示不隐藏的…

【树莓派】【网摘】树莓派与XBMC及Kodi、LibreELEC插件(三)

之前的相关文章参考&#xff1a; 【树莓派】树莓派与XBMC及Kodi、LibreELEC插件&#xff08;一&#xff09; 【树莓派】树莓派与XBMC及Kodi、LibreELEC插件&#xff08;二&#xff09; 【树莓派】树莓派与XBMC及Kodi、LibreELEC插件&#xff08;三&#xff09; ---------------…

前端通信:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码(改迭代已作废,移步迭代10)...

该迭代已作废&#xff0c;最新的请移步这里&#xff1a;https://www.cnblogs.com/GerryOfZhong/p/10726306.html 距离上一篇博客书写&#xff0c;又过去了大概几个月了&#xff0c;这段时间暂时离开了这个行业&#xff0c;让大脑休息一下。一个人旅行&#xff0c;一个人休息&am…

awk怎么用

AWK是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法如下 awk [选项参数] script varvalue file(s) 或 awk [选项参数] -f…

转盘抽奖

<!DOCTYPE html><html>  <head>   <meta charset"UTF-8">     <title></title>   <style>     .dialWrap { position:absolute; left:50%; top:24px; width:460px; height:460px; margin-left:-246px; } …

Linux软连接

软链接就理解为Windows的快捷方式&#xff0c;因为某些文件和目录的路径很深, 所以需要增加软链接(快捷方式)使用者权限&#xff1a;所有用户 语法&#xff1a; ln -s 目标文件绝对路径 快捷方式路径# 把b.txt的软连接生成到桌面 ln -s aaa/bb/c/b.txt b.txt

设计模式之 - 代理模式(Proxy Pattern)

代理模式&#xff1a;代理是一种常用的设计模式&#xff0c;其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息&#xff0c;过滤消息并转发消息&#xff0c;以及进行消息被委托类执行后的后续处理。很多可以框架中都有用到&#xff0c;比…

Linux压缩命令

gizp&#xff1a; gizp用来压缩/解压缩文件&#xff0c;不能压缩目录&#xff0c;gzip是个使用广泛的压缩程序&#xff0c;文件经它压缩过后&#xff0c;其名称后面会多出".gz"的扩展名windows下接触的压缩文件大多是.rar&#xff0c;.7z格式&#xff0c;Linux下&…

1-3、nav元素

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>nav</title> </head> <body><h1>技术资料</h1><nav><ul><li><a href"#">主页</a></li>&…