HTML — PHP Добавление таблиц стилей в заголовок

Есть ли способ добавить таблицы стилей в заголовок после включения файла заголовка? Скажем, у нас есть этот код:

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'));

Может кто-нибудь дать мне пример того, как это сделать?

3

Решение

Окончательный 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...
0

Другие решения

Как и грустно @szapio, имеет смысл создавать HTML в самом конце.

В любом случае, «грязным» решением было бы взломать ваш DOM с помощью jQuery, поставив
следуя до </body>-tag (включив jQuery в <head>):

<script>
$(document).ready(function() {
$('head').append('<link rel="stylesheet" href="test.css" />');
});
</script>

Вы действительно не должны думать об этом, потому что файл CSS будет загружен после всего остального, то есть вы увидите элементы без стилей, пока файл CSS еще не загружен …

0

По вопросам рекламы [email protected]