Есть ли способ добавить таблицы стилей в заголовок после включения файла заголовка? Скажем, у нас есть этот код:
class content {
public $stylesheets = array();
public function addStylesheets($stylesheets)
{
if(!empty($stylesheets))
{
if(!is_array($stylesheets))
$stylesheets = array($stylesheets);
$this->stylesheets = array_merge($this->stylesheets, $stylesheets);
}
}
public function getStylesheets()
{
$response = '';
foreach($this->stylesheets as $stylesheet)
$response .= '<link rel="stylesheet" type="text/css" href="' . $stylesheet . '" />' . Chr(13);
return $response;
}
}
И этот заголовок:
<html>
<head>
<title>Title</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<?php
print($content->getStylesheets());
?>
</head>
<bod...
А потом позже в файл я хочу добавить таблицы стилей, как это:
$content->addStylesheets(array('home.css', 'slider.css'));
Может кто-нибудь дать мне пример того, как это сделать?
Окончательный HTML-код всегда генерируется в конце. Вот пример, как продолжить работу с чистым php / html. Ваш index.php может выглядеть примерно так:
<?php
// ...
// Define the stylesheets to use
$content = new content();
$content->addStylesheets(array('home.css', 'slider.css'));
// ...
// Print template at the end
ob_start();
include 'your_html_template.php';
print ob_get_clean();
your_html_template.php
ваш файл шаблона, как показано в вопросе.
Вы можете определить переменные перед выполнением шаблона, чтобы иметь более четкую разделение PHP-кода и HTML. Тогда index.php может выглядеть так:
<?php
// ...
// Define the stylesheets to use
$content = new content();
$content->addStylesheets(array('home.css', 'slider.css'));
$htmlStyleHeaderTags = $content->getStylesheets(); // Define variable with html header tags
// ...
// Print template at the end
ob_start();
include 'your_html_template.php';
print ob_get_clean();
И тогда вы можете использовать переменную $htmlStyleHeaderTags
в вашем шаблоне:
<html>
<head>
<title>Title</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<?php print $htmlStyleHeaderTags; ?>
</head>
<bod...
Как и грустно @szapio, имеет смысл создавать HTML в самом конце.
В любом случае, «грязным» решением было бы взломать ваш DOM с помощью jQuery, поставив
следуя до </body>
-tag (включив jQuery в <head>
):
<script>
$(document).ready(function() {
$('head').append('<link rel="stylesheet" href="test.css" />');
});
</script>
Вы действительно не должны думать об этом, потому что файл CSS будет загружен после всего остального, то есть вы увидите элементы без стилей, пока файл CSS еще не загружен …