我接下来没有使用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).
我在这里做错了什么?我怎样才能最轻松地实现目标?
答案 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>';
}
?>