Я использую динамическую систему шаблонов HTML (например, PHP), и мне интересно, есть ли у этой проблемы / решения имя или уже где-то достигнуто.
Проблема связана с динамическим управлением контентом, но после того, как контент и код взаимосвязаны. Подумайте о двух страницах, одна из которых использует множество причудливых стилей и фреймворков, а другая - нет, но использует один и тот же шаблон «внешней оболочки».
<!DOCTYPE html>
<html>
<head>
<title>Both pages share a static title</title>
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
</head>
<body>
<!-- only this part is dynamic, the top and bottom parts are shared among all pages -->
...
</body>
</html>
План состоял в том, чтобы оставить токен в том месте, где должен быть заголовок, изменить объект-заполнитель в теле, а затем заменить содержимое заполнителя там, где токен находился после рендеринга страницы (но перед отправкой клиенту).
<!DOCTYPE html>
<html>
<head>
__HEAD__
</head>
<body>
<?
$head->title('my very own title');
$head->script('jquery 1.5.2');
?>
...
</body>
</html>
Маркер __HEAD__
расширится до фактического HTML.
<!DOCTYPE html>
<html>
<head>
<title>my very own title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript">
</head>
<body>
...
</body>
</html>
Кто-нибудь видел это раньше?
Редактировать: Вот кто-то говорит о той же проблеме, но с немного другим решением.
http://iamcam.wordpress.com/2007/07/15/smarty-assigning-variables-to-the-header-from-the-body/
Редактировать ^ 2: Ниже был принят ответ, что это то, что шаблонизатор делает , что верно. Сложность в этом конкретном сценарии заключалась в том, что механизмы исполнения и шаблонирования переплетались (как в старой школе PHP), поэтому было трудно увидеть разграничение. Легко решается с правильными шаблонами.