Есть некий текстовый темплейт файл tpl.html, который подгружается, обрабатывается и выводится посредством echo в тело документа: Код (PHP): <?php $tpl = file_get_contents('tpl.html'); //тут $tpl многократно изменяется, размножается и т.д. echo $tpl; Если в tpl.html будут вставки php кода, то они выведутся как текст в документ. Можно ли как-то вывести текст и исполнить php вставки? Например, содержимое tpl.html Код (PHP): Page name <h1><?=$h1?></h1>, page text <?php include "bar.php"; ?> ... PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Использовать include или require вместо file_get_content. Единственное, чтоб потом изменять что-то, то перед include используйте ob_start(), а после - ob_get_content() и ob_clean()
лучше так не делать, в html НЕ хранить РНР, а хранить только в РНР. Добавлено спустя 1 минуту 15 секунд: т.к. на одном сервере может быть включена обработка кода РНР в html файлах, а на другом сервере - нет. соответственно на разных серверах результаты могут быть разными.
Это справедливо только для случая, если подобные файлы хранятся открыто. В моём случае html выбран обосновано, так как это темплейты, коотрые периодически надо редактировать, но не исполнять.
разработчики популярных шаблонизаторов специально делают так, чтобы вставки php-кода в шаблоне НЕ работали. они считают это достоинством!
artoodetoo и VLK, вы просто придираетесь. Donald, сделай расширение phtml, как в Zend Framework, и от тебя отстанут )) Правда, по сути, конечно, если там есть исполняемый код, то эти файлы надо исполнять, независимо от того, там инструкции по выводу или по работе с БД. Вот решение более подробно Код (PHP): ob_start(); include 'tpl.html'; $tpl = ob_get_clean(); //тут $tpl многократно изменяется, размножается и т.д. echo $tpl;
Теперь скажите mkramer и Donald, почему бы этому файлу не присвоить расширение .php, раз мы хотим его использовать как .php ? Мы что, не хотим чтобы наш редактор подсвечивал нам синтаксис и указывал на ошибки? ))) Может быть потому, что к нему можно обратиться напрямую с адресной строки? Ну тогда это вдвойне плохо, т.к. содержимое php скрипта будет видно всем. Наоборот, есть такая практика давать расширение .php НЕ-пехапэшным файлам, чтобы его нельзя было подсмотреть. Типа конфиг в формате .ini, замаскированный под .php: Код (PHP): ;<? exit(); ?> db_server = "localhost" db_user = "john" db_password = "tiger" При попытке обратиться к http://example.com/config.php посетитель увидит только ";". А в теле приложения мы спокойно читаем его: $ini_config = parse_ini_file('config.php');
Темплейты лежат даже не в условной www директории сервера, а уровнем выше, куда сервер из http не смотрит. Короче, html расширение выбрано обосновано. Честно, пробовал и видел разные варианты расширений в данном контексте. Это мнголетний опыт использования шаблонов в данном месте. Точка. mkramer спасибо, понял.
Не плохая, а имеющая свою нишу. Позволяет снизить требования по деплою до 0. Не понадобится ни объяснять как закинуть скрипты выше document root, ни прав на конфиг сервера, и не полагается на .htaccess… Конечный вебадмин просто заливает дистрибутив на любой хостинг и начинает пользоваться. Просто и безопасно.