Как для каждого ресурса вывести текст/код из соотв-го уже имеющегося файла в чанк?

Необходимо выводить critical path в чанке header. Critical path — это CSS, который должен быть встроен в head (не external, а inline), но он находится в готовых файлах criticalID.css. Для каждой страницы — свой файл.
Как?
В php/MODx API не рублю)(

7 комментариев

avatar
Если я правильно понял задачу и ID в имени файла соответствует ID ресурса, то получается просто:

<link href="/css/critical[*id*].css" rel="stylesheet" type="text/css" />


Если же вывести содержимое файла со стилями прямо в тело документа, то PHP Вам в помощь. Простая задача.
Комментарий отредактирован 2017-08-13 15:02:22 пользователем 3fir
  • 3fir
  • 0
avatar
Сниппет getfiledata

[[getfiledata? &id=`1`]]


<?php
$filename = 'critical'.$id.'.css';
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
echo $contents;
?>
  • 3fir
  • 0
avatar
раз без проверок, тогда уж проще:

Сниппет getfiledata
[[getfiledata? &id=`1`]]

<?php
readfile('critical'.$id.'.css');
?>
avatar
Согласен.
Автор топика всё равно должен хоть что-то сделать :)
avatar
тогда уж лучше сразу [[getfiledata? &id=`[*id*]`]]
avatar
Ну разумеется.
Мы же удочку даём, а не рыбку :)
avatar
<?php
include_once(MODX_BASE_PATH . 'assets/lib/Helpers/FS.php');
if (!isset($modx->documentIdentifier)) return;
$path = isset($path) ? $path : 'assets/templates/thesite/css/critical/';
$name = isset($name) ? $name : 'critical[+id+].css';
$FS = \Helpers\FS::getInstance();
$name = str_replace('[+id+]', $modx->documentIdentifier, $name);
$filename = $FS->relativePath($path . $name);
$out = '';
if ($FS->checkFile($filename)) {
	$out = file_get_contents(MODX_BASE_PATH . $filename);
}
if ($out) {
	return "<style>{$out}</style>";
}

Thnx to pathologic.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.