![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
Здравствуйте. Сейчас пытаюсь понять "А как же правильно отделить программную часть сайта от html шаблона?"
У меня пока на ум приходит вот что: Есть index.php, который инклудит файлы header.html, index.html и footer.html. Все эти три html файла - как бы шаблон, который, по мере необходимости, будет вставляться в разные участки скрипта. Вопрос номер один: Правильна ли данная структура? Второй вопрос: А если человек, вместо того чтобы зайти на index.php, наберет в адресной строке, преположим, footer.html, то ему покажется соответствующий участок кода - как тогда это избежать? Чтобы при наборе аналогичного адреса был редирект на index.php или вообще чтобы ничего не показывалось? P.s. перейти на smarty - не предлагать За ранее огромное спасибо. --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
Довольно интересная задачка.
На самом деле желательно чтобы все ХТМЛ файлы содержащие в себе дизайн хранились в какой-то одной папке. При этом запретить доступ можно при помощи .htaccess файла, если прописать в него "deny from all". И в нужный момент их нужно не инклдить, а читать (например функцией file_get_contents) и заменять (при помощи фукнции preg_replace & preg_replace) определенные, заранее обозначеные, участки на код, который генерирует твой index.php. Иными словами в файлах шаблонов у тебя не должно быть PHP кода - там должен быть только шаблон. И тогда вся задача будет сводиться к сгенерировал-прочитал-заменил-показал. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2Sunvas, а только такой вариант есть? А то как то все сложно получается, через file_get_contents читаем и выводим. Инклудить просто не как не получится? А то я с самого начала предпологал, что там (в шаблонах) будет вставлен php код.
Если нет, то, пожалуйста, опишите структуру сайта, которой вы обычно пользуетесь. Это сообщение отредактировал(а) Staind - 15.2.2008, 20:09 --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
Staind, соглашусь с Sunvas, в том, что лучше все темплейты в отдельный каталог перекинуть и закрать доступ, также в зависимости от сложности замены не обязательно использовать preg_replace(), иногда str_replace хватает.
P.S. На Smarty переходить не предлагаю, но советую убратить внимание на Blitz Templates. =) |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
При инклуде все будет намного медленнее! Вообще нужно по максимуму разграничивать предназначения файлов. Скажем, если Вы даете файл дизайнеру на обработку - то он не должен знать ПХП, чтобы его отредактировать. Ему нужно знать ХТМЛ и ничего больше. У себя на сайте я пользуюсь с хемой представленой выше. В очень упрощенном варианте она выглядит так:
Это сообщение отредактировал(а) Sunvas - 15.2.2008, 20:21 -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Staind |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2Fally, понял, спасибо. По поводу Blitz Templates - он быстро обрабатывает шаблоны?
2Sunvas,
Фигасе, не знал, думал что инклуд быстрее :( Ну так как все за эту структуру, то и я тоже. Значит все шаблоны в отдельную папку... P.s., то есть примерно все выглядить будет так?: в шаблоне записано:
А в index.php написано:
? Это сообщение отредактировал(а) Staind - 15.2.2008, 20:48 --------------------
Ничто так не раздражает человека, как просьба успокоиться |
||||||
|
|||||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
да-да.
Только нехорошо использовать встроеные функции, как имена переменных. Я о $file. Лучше $tfile. Это сообщение отредактировал(а) Sunvas - 15.2.2008, 20:54 -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
Спасибо за помощь!
--------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
Staind, очень быстро.http://alexeyrybak.com/blitz/ здесь посмотри, и гугле тоже можно найти ссылку на сорсфорж =)
|
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2Fally, ага, понял, спасибо. Буду читать мануал
2Sunvas, да, немного я что-то ступил, спс еще раз --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Непонтно тогда, почему у php файлов расширение html. И непонятны затруднения с показом кода, ведь решение очевидное - сделать правильное расширение, отражающее содержимое. Ведь если джипегу сделать расширение html - он тоже вылезет в браузере крокозябрами. Поэтому все джипег файлы имеют расширение jpg, а не html. почему для php должно быть иначе - загадка. Другое дело, что даже без показа кода, а просто вызов не предназначенных для этого модулей тоже не стоит разрешать. Делается это миллионом разных способов - либо выносом в отдельную папку, либо добавлением проверки константы в начале файла, либо другими по выбору автора сайта. Быстро. Но, в отличие от смарти, представляет из себя не код на PHP, а модуль на С. Который надо собирать на сервере. У тебя хостинг позволяет это? Не надо слушать сказки. Ничего там не быстрее. Все одинаково. Резюмируя топик целиком. Staind, имей в виду, что шаблонов на РНР в мире в десятки тысяч раз больше, чем шаблонов Блиц. И ничего - как-то работают. Видимо, РНР, как шаблонизатор не так уж ужасен, как это кажется на первый взгляд. То же самое касается и смарти. Да, Блиц - это самый популярный и активно развивающийся шаблонизатор из "раздельных", то есть, состоящих из двух частей. Но именно это и надо понимать, что шаблон - это не только вставочки вида {VAR} - это еще и код, который их обрабатывает. И, как это ни покажется странным, но как раз с раздельныим шаблонами программисту приходится работать гораздо плотнее, чем с теми, которые включают в себя и код, и его обработку (PHP, Smarty, XSLT). Поэтому утверждение "Дизайнер должен знать только ХТМЛ", хоть и является истинным, но никак не помешает тому факту, что с шаблоном будет работать программист, а не дизайнер. Для начинающих программистов я бы не рекомендовал Блиц. Я бы проекомендовал РНР. Работу с раздельным же шаблонизатором я бы порекомендовал начать с написания собственного. Это несложно - сделать замену переменных и обработку блоков. Будет очень хорошая практика и собственное понимание технологии шаблонов. |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2GeneralElectric, спасибо за информационный ответ. Да, я уже начал калякать свои шаблоны. Надеюсь из этого что-нибудь выйдет
--------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Ну, основная сложность - разобраться с вложенными блоками.
Хотя нет. Основных сложностей две. Первая, скорее, когнитивная. Когда понимаешь, что в любом мало-мальски сложном фрагменте шаблона (вывод, хотя бы, постраничной навигации) HTML-кода все равно будет меньше, чем псевдокода. А вторая следует из первой: понять, а зачем вообще нужен шаблон. Ответив себе на эти вопросы, я пользуюсь РНР. Но прекрасно осознаю, что мои ответы (а, следовательно - и решения) могут не совпадать с чужими. Кстати, отвечая на вопросы, зачем нужен шаблон и какой подход выбрать, очень важно отличать реальные потребности от выдумок. Самые распространенные сказки - это что в шаблоне не должно быть пхп кода. Или что в раздельном шаблоне нет логики. Или, как я уже упоминал, что раздельный шаблон - это только его HTML часть. Или что шаблон рисует "дизайнер" (хотя на самом деле, любой шаблон, будь то РНР или блочный, режет, разумеется, программист из HTML-файла, полученого от верстальщика). Отдельная глава в книге заблуждений - скорость. Особенно подкрепленная детсадовскими тестами типа "тыща циклов". При этом большинству не приходит в голову тот факт, что помимо обработки шаблона сервер обрабаывает ещё РНР файл, SQL запросы, файловые операции и кучу других, на фоне которых любые затраты на шаблон теряются. Не говоря уже о том, что как только встает вопрос о скорости, то самое простое решение - прекомпиляция. И на графике, который есть по ссылке Fally, это отчетливо видно, в частности, на примере Смарти. Там же, кстати, видно, кто работает "намного медленнее" - PHP или file_get_contents (PHP includes vs. XTemplate). при этом тесты на графике отражают запросы к скриптам, состоящим только из обработки шаблонов, а не реальным, с получением и обработкой информации. В последнем случае там будет забор, ровный, как решетка Летнего сада. Это сообщение отредактировал(а) GeneralElectric - 16.2.2008, 15:45 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
Переходи на паттерн MVC, шаблонизатором будет РНР. И ненадо будет макет страницы на части по геометрическому признаку дробить...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |