У меня есть файл 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.
Возможно ли то, что я пытаюсь?
Главный вопрос, который у меня есть, это откуда эти константы вытягиваются? Иногда люди устанавливают их на уровне хоста сервера и импортируют их (переменные среды). Другой вариант (вроде размывает то, что вы делаете), это разбирать 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);
Других решений пока нет …