博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用主题预处理函数处理逻辑
阅读量:7033 次
发布时间:2019-06-28

本文共 1194 字,大约阅读时间需要 3 分钟。

  hot3.png

昨天为大家介绍了怎样使用Drupal的主题预处理函数为模板添加变量,今天我来说说怎样使用主题预处理函数处理逻辑。同样的,例子都很简单,没什么实用价值,主要用于说明思路和方法。

首先,我要介绍一下Drupal主题开发中的一个重要原则:尽量不要在模板文件中处理复杂的逻辑,它们应该放在PHP函数中,而不是模板中。这样做的最大好处是:逻辑层与表示层的分离,有利于代码的组织与维护。
下面来看第一个例子:让我们的自定义变量在Drupal网站的首页和内页显示不同的内容。

function mytheme_preprocess_page(&variables) {  if ($variables['is_front']) {    $variables['custom_text'] = t(‘这儿是首页’);  }  else {    $variables['custom_text'] = t('这儿不是首页');  }}
下面我来解释一下这个函数:与昨天重复的地方我就不啰嗦了,没有看过昨天文章的朋友可以回头看一下,链接在本文最下方的文章列表里。这是一个很简单的if...else...逻辑,if的条件是$variables['is_front']这个变量,其中的数组键'is_front'表示page.tpl.php模板文件中的$is_front变量,该变量是一个布尔值,用于判断用户访问的当前页面是否为Drupal网站的首页。如果是首页,我们的自定义模板变量$custom_text的值为‘这儿是首页’,否则为’这儿不是首页‘。
然后,清理缓存,分别打开Drupal的首页和内页就能看到效果了。
再看看第二例子:让我们的自定义变量只显示给Drupal的网站管理员角色。
function mytheme_preprocess_page(&variables) {  if (isset($variables['user']->roles[3])) {    $variables['custom_text'] = t(‘我是网站管理员’);  }  else {    $variables['custom_text'] = t('我不是网站管理员');  }}
解释一下这个函数:与第一个函数的区别在于$user(在预处理函数中用$variables['user']表示)变量,它采用对象的形式表示当前访问的用户,而$user->roles[3](在预处理函数中用$variables['user']->roles[3]表示)则表示网站管理员这一用户角色。
好了,通过这两个简单的范例,大家应该可以理解Drupal的主题预处理函数是如何处理逻辑的了,希望大家能举一反三,写出更漂亮的代码^_^

转载于:https://my.oschina.net/haojay/blog/94925

你可能感兴趣的文章
从零开始写爬虫
查看>>
微信小程序,个人开发者创业新平台
查看>>
Chrome vim插件vimium快捷键学习
查看>>
【Redis】Redis常用命令
查看>>
node跨域方法
查看>>
JavaScript笔记——常见DOM知识
查看>>
Angular2、AngularJS、React、vue.js过去一年的Google趋势分析
查看>>
3D轮播图
查看>>
同源策略和跨域方法
查看>>
JavaScript中的delete操作符
查看>>
es7与es8其他知识
查看>>
使用 Hexo 创建项目文档网站
查看>>
typeof和instanceof的区别
查看>>
XAMPP Windows 安装中报错解决方法备忘
查看>>
sublime之利器使用篇
查看>>
每个类都应将所有能力以最小粒度提供给外部可配置,每个业务所需要的功能是这些能力的组合...
查看>>
使用cached的wrapper类读取请求响应内容
查看>>
[python][os]分离文件目录,文件名以及文件后缀
查看>>
解决Android Studio SDK无法下载问题
查看>>
雷军定AI+IoT为小米核心战略,牵手宜家推进生态布局
查看>>