简单的PHP在drupal模板中定义

时间:2013-03-04 17:49:49

标签: php drupal drupal-7

我接下来没有使用php作为一种语言的经验,并且在生成Drupal主题时运行它有点问题。我需要的是执行一次函数,它将返回一个布尔值,然后在整个模板中使用该布尔值。

这是我到目前为止所做的:

html.tpl.php - >

<?php 

   function testMobile(){
       return false;
   }

   define('isMobile', testMobile());

?>

...

<?php 
    if(!isMobile){
        echo '<h1>NOT MOBILE</h1>';
    }else{
        echo '<h1>IS MOBILE</h1>';
    }
?>

page.tpl.php - &GT;

<?php 
   if(!isMobile){
       echo '<h1>IS DESKTOP</h1>';
   }else{
       echo '<h1>NOT DESKTOP</h1>';
   }
?>

在drupal输出中我得到了这个 - &gt;

NOT MOBILE

NOT DESKTOP

以及此错误消息:

Notice: Use of undefined constant isMobile - assumed 'isMobile' in include() (line 77 of /Users/#/#/#/sites/all/themes/#/templates/page.tpl.php).

我在这里做错了什么?我怎样才能最轻松地实现目标?

2 个答案:

答案 0 :(得分:3)

似乎定义的变量超出了模板文件的范围。您可以通过使用会话变量来解决此问题。

以下是代码示例......

session_start(); // not necessary with drupal
$_SESSION['isMobile'] = testMobile();

function testMobile(){
   return false;
}

在您的模板中,您可以添加以下内容......

<?php 
   if(!$_SESSION['isMobile']){
       echo '<h1>IS DESKTOP</h1>';
   }else{
       echo '<h1>NOT DESKTOP</h1>';
   }
?>

答案 1 :(得分:0)

尝试在template.php中的hook_theme_preprocess_page(&$vars, $hook)中定义变量。

所以template.php可以看起来如下:

function testMobile(){
  return false;
}

function YOURTHEME_theme_preprocess_page(&$vars, $hook) {
  $vars['isMobile'] = testMobile();
}

page.tpl.php

<?php 
   if(!$isMobile){
       echo '<h1>IS DESKTOP</h1>';
   }else{
       echo '<h1>NOT DESKTOP</h1>';
   }
?>