Как я могу использовать php для заполнения файла manifest.json?

У меня есть файл manifest.json, который загружается правильно, когда помещается в корневой каталог моего сайта. Вместо того, чтобы быть статическим файлом, я хотел бы использовать переменные php из моего сайта, чтобы заполнить значения внутри манифеста.

Я не могу найти какую-либо информацию об этом в спецификации, и я не уверен, если это возможно.

Я попытался изменить имя моего манифеста на manifest.php и использовал header('Content-Type: application/json') внутри.

В моей голове файла индекса:

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

Внутри моего 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\"     
  }]
}
";
?>

Переменные $SiteName, $Name, $PageDescription, $darkblue, etc все определены в моей голове документа до загрузки manifest.php.

Возможно ли то, что я пытаюсь?

1 ответ

Главный вопрос, который у меня есть, - откуда берутся эти константы? Иногда люди устанавливают их на уровне хоста сервера и импортируют их ( переменные среды). Другой вариант (вроде размытия того, что вы делаете) - это анализ файла INI.

Я хотел бы сделать что-то вроде следующего:

<?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);
Другие вопросы по тегам