У меня есть файл manifest.json, который загружается правильно, когда помещается в корневой каталог моего wesite. Вместо того, чтобы быть статическим файлом, я хотел бы использовать 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);