добавлены user_header и user_footer для вставки линков на css или js файлов модулей
This commit is contained in:
47
index.php
47
index.php
@@ -167,6 +167,53 @@
|
||||
$GLOBALS['block_generate']['DOCUMENT']['CONTENT'] = Debug::endTime('CONTENT');
|
||||
$GLOBALS['block_generate']['INIT']['CODEEND'] = Debug::endTime('CODEEND');
|
||||
|
||||
// --- ИНЖЕКТОР АССЕТОВ ---
|
||||
$process_assets = function($asset_array) {
|
||||
if (empty($asset_array) || !is_array($asset_array)) return '';
|
||||
|
||||
$clean_assets = [];
|
||||
foreach (array_unique($asset_array) as $item) {
|
||||
$item = trim($item);
|
||||
|
||||
// Разрешаем только заголовочные теги
|
||||
if (!preg_match('/^<(script|link|style|meta|!--|title|base)/i', $item)) continue;
|
||||
|
||||
// Удаляем любые on* атрибуты (onload, onerror и т.д.)
|
||||
if (preg_match('/on[a-z]+\s*=/i', $item)) continue;
|
||||
|
||||
// DATA: Блокируем всё, кроме безопасных изображений
|
||||
if (stripos($item, 'data:') !== false && stripos($item, 'image/') === false) continue;
|
||||
|
||||
$clean_assets[] = $item;
|
||||
}
|
||||
return implode("\n", $clean_assets);
|
||||
};
|
||||
|
||||
// Собираем данные из PHP-кода модулей
|
||||
$module_header = $process_assets($GLOBALS['user_header'] ?? []);
|
||||
$module_footer = $process_assets($GLOBALS['user_footer'] ?? []);
|
||||
|
||||
// Вставка в HEADER
|
||||
if (!empty($module_header)) {
|
||||
if (strpos($render, '[tag:rubheader]') !== false) {
|
||||
$render = str_replace('[tag:rubheader]', $module_header . "\n[tag:rubheader]", $render);
|
||||
} else {
|
||||
$render = str_replace('</head>', $module_header . "\n</head>", $render);
|
||||
}
|
||||
}
|
||||
|
||||
// Вставка в FOOTER
|
||||
if (!empty($module_footer)) {
|
||||
if (strpos($render, '[tag:rubfooter]') !== false) {
|
||||
$render = str_replace('[tag:rubfooter]', $module_footer . "\n[tag:rubfooter]", $render);
|
||||
} else {
|
||||
$render = str_replace('</body>', $module_footer . "\n</body>", $render);
|
||||
}
|
||||
}
|
||||
|
||||
unset($module_header, $module_footer, $process_assets);
|
||||
// --- КОНЕЦ БЛОКА ИНЖЕКТОРА ---
|
||||
|
||||
//-- Вывод конечного результата
|
||||
output_compress($render);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user