Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильная структура сайта 
V
    Опции темы
Staind
Дата 15.2.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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 - не предлагать smile

За ранее огромное спасибо.
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 15.2.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Довольно интересная задачка.

На самом деле желательно чтобы все ХТМЛ файлы содержащие в себе дизайн хранились в какой-то одной папке. При этом запретить доступ можно при помощи .htaccess файла, если прописать в него "deny from all". И в нужный момент их нужно не инклдить, а читать (например функцией file_get_contents) и заменять (при помощи фукнции preg_replace & preg_replace) определенные, заранее обозначеные, участки на код, который генерирует твой index.php.

Иными словами в файлах шаблонов у тебя не должно быть PHP кода - там должен быть только шаблон. И тогда вся задача будет сводиться к сгенерировал-прочитал-заменил-показал.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Staind
Дата 15.2.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2Sunvas, а только такой вариант есть? А то как то все сложно получается, через file_get_contents читаем и выводим. Инклудить просто не как не получится? А то я с самого начала предпологал, что там (в шаблонах) будет вставлен php код.
 Если нет, то, пожалуйста, опишите структуру сайта, которой вы обычно пользуетесь.

Это сообщение отредактировал(а) Staind - 15.2.2008, 20:09
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Fally
Дата 15.2.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: 3
Всего: 4



Staind, соглашусь с  Sunvas, в том, что лучше все темплейты в отдельный каталог перекинуть и закрать доступ, также в зависимости от сложности замены не обязательно использовать preg_replace(), иногда str_replace хватает.

P.S. На Smarty переходить не предлагаю, но советую убратить внимание на Blitz Templates. =)


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Sunvas
Дата 15.2.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Цитата(Staind @  15.2.2008,  20:08 Найти цитируемый пост)
Инклудить просто не как не получится?

При инклуде все будет намного медленнее! Вообще нужно по максимуму разграничивать предназначения файлов. Скажем, если Вы даете файл дизайнеру на обработку - то он не должен знать ПХП, чтобы его отредактировать. Ему нужно знать ХТМЛ и ничего больше.

У себя на сайте я пользуюсь с хемой представленой выше. В очень упрощенном варианте она выглядит так:

Код

$theme_file=file_get_contents("...");
$theme_file=str_replace(array("..."),array("..."),$theme_file);
echo $theme_file;


Это сообщение отредактировал(а) Sunvas - 15.2.2008, 20:21


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Staind
Дата 15.2.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2Fally, понял, спасибо. По поводу Blitz Templates - он быстро обрабатывает шаблоны?


2Sunvas,

Цитата

При инклуде все будет намного медленнее!

Фигасе, не знал, думал что инклуд быстрее :(

Ну так как все за эту структуру, то и я тоже. Значит все шаблоны в отдельную папку...

P.s., то есть примерно все выглядить будет так?:
в шаблоне записано:
Код

<table>
<td>
|@|
</td>
</table>


А в index.php
написано: 
Код

$param = "Проверка";

$file = file_get_contents ("templates/index.html");
$file = str_replace ("|@|",$param,$file);
echo $file;

?

Это сообщение отредактировал(а) Staind - 15.2.2008, 20:48
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 15.2.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



да-да.
Только нехорошо использовать встроеные функции, как имена переменных. Я о $file. Лучше $tfile.

Это сообщение отредактировал(а) Sunvas - 15.2.2008, 20:54


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Staind
Дата 15.2.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



Спасибо за помощь! smile Я бы функцией file_get_contents никогда бы не догадался сделать.
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Fally
Дата 15.2.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: 3
Всего: 4



Staind, очень быстро.http://alexeyrybak.com/blitz/ здесь посмотри, и гугле тоже можно найти ссылку на сорсфорж =)


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Staind
Дата 15.2.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2Fally, ага, понял, спасибо. Буду читать мануал smile))

Цитата

Я о $file. Лучше $tfile.

2Sunvas, да, немного я что-то ступил, спс еще раз smile
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
GeneralElectric
Дата 16.2.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Цитата(Staind @  15.2.2008,  20:08 Найти цитируемый пост)
 А то я с самого начала предпологал, что там (в шаблонах) будет вставлен php код.

Непонтно тогда, почему у php файлов расширение html.
И непонятны затруднения с показом кода, ведь решение очевидное - сделать правильное расширение, отражающее содержимое.
Ведь если джипегу сделать расширение html - он тоже вылезет в браузере крокозябрами. Поэтому все джипег файлы имеют расширение jpg, а не html. почему для php должно быть иначе - загадка.

Другое дело, что даже без показа кода, а просто вызов не предназначенных для этого модулей тоже не стоит разрешать. Делается это миллионом разных способов - либо выносом в отдельную папку, либо добавлением проверки константы в начале файла, либо другими по выбору автора сайта.

Цитата(Staind @  15.2.2008,  20:39 Найти цитируемый пост)
По поводу Blitz Templates - он быстро обрабатывает шаблоны?

Быстро. Но, в отличие от смарти, представляет из себя не код на PHP, а модуль на С. Который надо собирать на сервере. У тебя хостинг позволяет это?

Цитата(Staind @  15.2.2008,  20:39 Найти цитируемый пост)
Фигасе, не знал, думал что инклуд быстрее :(

Не надо слушать сказки.
Ничего там не быстрее. Все одинаково.

Резюмируя топик целиком.
Staind, имей в виду, что шаблонов на РНР в мире в десятки тысяч раз больше, чем шаблонов Блиц. И ничего - как-то работают. Видимо, РНР, как шаблонизатор не так уж ужасен, как это кажется на первый взгляд.
То же самое касается и смарти.

Да, Блиц - это самый популярный и активно развивающийся шаблонизатор из "раздельных", то есть, состоящих из двух частей. Но именно это и надо понимать, что шаблон - это не только вставочки вида {VAR} - это еще и код, который их обрабатывает. И, как это ни покажется странным, но как раз с раздельныим шаблонами программисту приходится работать гораздо плотнее, чем с теми, которые включают в себя и код, и его обработку (PHP, Smarty, XSLT). Поэтому утверждение "Дизайнер должен знать только ХТМЛ", хоть и является истинным, но никак не помешает тому факту, что с шаблоном будет работать программист, а не дизайнер.

Для начинающих программистов я бы не рекомендовал Блиц. Я бы проекомендовал РНР. 
Работу с раздельным же шаблонизатором я бы порекомендовал начать с написания собственного. Это несложно - сделать замену переменных и обработку блоков. Будет очень хорошая практика и собственное понимание технологии шаблонов. 
PM MAIL   Вверх
Staind
Дата 16.2.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2GeneralElectric, спасибо за информационный ответ. Да, я уже начал калякать свои шаблоны. Надеюсь из этого что-нибудь выйдет smile
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
GeneralElectric
Дата 16.2.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
source777
Дата 17.2.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Staind @  15.2.2008,  19:26 Найти цитируемый пост)
 перейти на smarty - не предлагать 
Переходи на паттерн MVC, шаблонизатором будет РНР. И ненадо будет макет страницы на части по геометрическому признаку дробить...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.