2017-08-22 6 views
1

私はwesiteのルートディレクトリに置かれたときに正しく読み込まれるmanifest.jsonファイルを持っています。静的なファイルではなく、自分のサイト内のPHP変数を使用して、マニフェスト内の値を入力したいと考えています。phpを使用してmanifest.jsonファイルを設定するにはどうすればよいですか?

私はこのin the specに関する情報を見つけることができず、可能かどうかわかりません。

マニフェストの名前をmanifest.phpに変更して、header('Content-Type: application/json')を使用しました。私manifest.phpインサイド

<script src="<?php echo $SITE_URL;?>/main.js"></script> 
<script src="<?php echo $SITE_URL;?>/sw.js"></script> 
<link rel="manifest" href="<?php echo $SITE_URL;?>/manifest.php"> 

:私のインデックスファイルの頭の中

<?php header('Content-Type: application/json'); 
echo " 
{ 
    \"name\": \"$SiteName\", 
    \"gcm_user_visible_only\": true, 
    \"short_name\": \"$Name\", 
    \"description\": \"$PageDescription.\", 
    \"start_url\": \"/index.php\", 
    \"display\": \"standalone\", 
    \"orientation\": \"portrait\", 
    \"background_color\": \"$darkblue\", 
    \"theme_color\": \"#f0f0f0\", 
    \"icons\": [{ 
    \"src\": \"logo-load.png\", 
    \"sizes\": \"96x96 128x128 144x144\", 
    \"type\": \"image/png\" 
    },{ 
    \"src\": \"logo-icon.png\", 
    \"sizes\": \"48x48 72x72\", 
    \"type\": \"image/png\"  
    }] 
} 
"; 
?> 

manifest.phpがロードされる前に、すべての私の文書の頭の中に定義されてい$SiteName, $Name, $PageDescription, $darkblue, etc変数。

私は可能なのですか?

+1

これはうまく動作するはずです。 manifest.phpから有効なJSONを取得していますか?あなたは配列を構築し、 'json_encode'を使うことを見ることができます - 問題を捕まえるのが簡単かもしれません。あなたは何にこだわっていますか? – ficuscr

+0

私は有効なJSONを取得していますが、欠落している値(phpがあるはずの場所)があります。 json_encodeを使用して結果が異なるかどうかを調べよう –

+0

'$ SiteName'にはどこに値が割り当てられていますか?あなたのコードはそのまま "動作"します。 – ficuscr

答えて

1

私が持っている主な質問は、これらの定数がどこから引かれたかです。場合によっては、サーバーホストレベルでそれらを設定し、それらをインポートすることがあります(environment variables)。もう1つのオプション(あなたがやっているものとぼかしの種類)はparse an INI fileです。

私は次のような何かをするだろう:

<?php 

$siteName = 'foo'; 
$name = 'bar'; 
$pageDescription = 'baz'; 

$manifest = [ 
    "name" => $siteName, 
    "gcm_user_visible_only" => true, 
    "short_name" => $name, 
    "description" => $pageDescription, 
    "start_url" => "/index.php", 
    "display" => "standalone", 
    "orientation" => "portrait", 
    "background_color" => $darkblue, 
    "theme_color" => "#f0f0f0", 
    "icons" => [ 
     "src" => "logo-load.png", 
     "sizes"=> "96x96 128x128 144x144", 
     "type" => "image/png" 
    ], 
    "src" => "logo-icon.png", 
    "sizes" => "48x48 72x72", 
    "type" => "image/png" 
]; 

header('Content-Type: application/json'); 
echo json_encode($manifest); 
+0

変数は、manifest.phpが呼び出される前のindex.phpファイル内の単なる文字列です。ここで投稿した内容はうまく動作しますが、 '$ siteName'をインデックスファイルに移動すると' null 'として登録されます –

+1

スコープ。幸いなことに、[グローバル登録](http://php.net/manual/en/security.globals.php)は過去のことです...可変コリジョンの痛みを知ることはできません!どのように[定数を定義する](http://php.net/manual/en/function.define.php)を見てみるか、スコープの理解が深まるとオプションを調べます。 – ficuscr

関連する問題