昊天SEO

Drupal主题开发教程 – 使用主题预处理函数处理逻辑

logic

logic

昨天为大家介绍了怎样使用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的主题预处理函数是如何处理逻辑的了,希望大家能举一反三,写出更漂亮的代码^_^

本文地址官网    新乡网站建设,seo

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址