Шаблоны являются проблемой, если они не решение. Этим я имею в виду: если шаблон будет представлен для пользы шаблона а не решить реальную, существующую проблему проектирования в приложении, то это, вероятно, вызовет проблемы, а не решит или предотвратит их.
я продолжаю говорить людям здесь на работе, которую заказывает Банда Четыре (Шаблоны разработки: Элементы Допускающего повторное использование Объектно-ориентированного программного обеспечения), ссылка, не руководство для хорошего дизайна.
gnarf прибил его.
Я делаю:
<link rel="stylesheet" type="text/css" media="screen" href="<? echo TMPL ?>css/name-of-file.css.php">
, а затем в верхней части вашего файла .css.php:
<?
header('Content-Type: text/css');
// print out your php-driven css...
?>
Это будет работать, если Сценарий includeder не отправляет никаких выходных данных, иначе вы получите ошибку « Заголовки уже отправлены ».
Использование ob_start () в включающем устройстве может быть уловкой, позволяющей избежать этого и заставить все работать.
Html-фреймы не имеют ничего общего с php-include, поэтому в этом случае никакого конфликта нет.
Если у вас есть файл с именем css.php
, просто убедитесь, что в первых строках задан правильный заголовок типа содержимого. Вы также можете разделить настройки сеанса (если они есть) в bootstrap.php
, если вы еще этого не сделали. Быстрый пример загрузки некоторой информации о стилях из базы данных:
<?php
header("Content-Type: text/css");
include('bootstrap.php');
// fetch some information to print out our styles
$result = mysql_query("SELECT * FROM site_styles");
while ($row = mysql_fetch_assoc($result)) {
echo $row["selector"]." {\n".$row["css"]."\n}\n";
}
?>
Из другого вашего php файла просто выведите тег, чтобы включить css.php, вы не хотите использовать php include ()
для этой задачи!
<link rel="stylesheet" type="text/css" href="css.php"/>
Хотя, поскольку большинство браузеров довольно агрессивно кэшируют ваш файл css, вы можете обнаружить, что динамическое изменение содержимого этого файла не приносит особой пользы. Вы можете принудительно обновить это, добавив параметр get в href ссылки следующим образом:
<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/>
Хотя это приведет к полной перезагрузке вашего файла css при каждом изменении этого параметра. По этой причине, как правило, лучше обслуживать статические файлы css. Если у вас есть несколько стилей, которые необходимо загрузить из параметров конфигурации и т. Д., Которые не очень часто меняются, первый пример должен вам подойти.