1

私は言語として php の経験がほとんどなく、Drupal テーマを作成する際に少し問題があります。必要なのは、ブール値を返す関数を 1 回実行し、そのブール値をテンプレート全体で使用することです。

これが私がこれまでに持っているものです:

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

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

drupal 出力で、これを取得します ->

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).

ここで何が間違っていますか?どうすれば最も簡単に目標を達成できますか?

4

2 に答える 2

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>';
   }
?>
于 2013-03-04T18:04:20.680 に答える
0

template.phpinで変数を定義してみてください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>';
   }
?>
于 2013-03-05T11:27:22.257 に答える