Прошу помочь освоить такой вариант создания страниц сайтов

12
P
На сайте с 06.01.2009
Offline
601
936

Здравствуйте.

Сделал файл shablon.php


<?
include('includes/sobiraem-dannye.php');
include('includes/doctype.php');
include('includes/menulevoe.php');
include('includes/vivodim-kontent.php');
include('includes/menupravoe.php');
include('includes/verh.php');
include('includes/footer.php');
?>

sobiraem-dannye - понимает в какой мы странице (разделе) и в зависимости от этого собирает нужные данные.

В каждой странице сайта будет код вызова шаблона.


<? include('includes/shablon.php'); ?>

Скажите, пожалуйста, так грамотно делать или нет?

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

IL
На сайте с 20.04.2007
Offline
435
#1
postavkin:
Скажите, пожалуйста, так грамотно делать или нет?

Вообще, ИМХО, более понятна (и уместна для Web-приложений) единая точка входа и MVC (с бонусами роутерами (это который sobiraet-dannye и передаёт дальше) -хелперами в виде отдельных/слабосвязанных классов)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
P
На сайте с 06.01.2009
Offline
601
#2
ivan-lev:
Вообще, ИМХО, более понятна (и уместна для Web-приложений) единая точка входа и MVC (с бонусами роутерами (это который sobiraet-dannye и передаёт дальше) -хелперами в виде отдельных/слабосвязанных классов)

Спасибо за инфо. Но если я правильно понял, то урлы будут вида www.site.ru/index.php?* . Да? Но я бы хотел сохранить в url внутренних страниц такими www.site.ru/plitka-atlas-concord.php Спасибо, буду читать. Я самоучка, прошу понять, мне весьма сложно освоить такие сложные технические вещи без помощи.

IL
На сайте с 20.04.2007
Offline
435
#3
postavkin:
Но если я правильно понял, то урлы будут вида www.site.ru/index.php?* . Да?

нет. Рекомендую ещё раз внимательнее прочитать статью. Погуглить про ЧПУ.

Посмотрите, как работают сайты на любом современном движке (drupal|wordpress) - у них ведь "красивые" адреса.. =)

Технически всё тоже самое (вся цепочка include-ов).. просто пишется она не в 100500 файлах, а в одном (как правило, index.php), а внутри него, в зависимости от запрошенной страницы ($_SERVER['REQUEST_URI'])...

P
На сайте с 06.01.2009
Offline
601
#4
ivan-lev:
нет. Рекомендую ещё раз внимательнее прочитать статью. Погуглить про ЧПУ.
Посмотрите, как работают сайты на любом современном движке (drupal|wordpress) - у них ведь "красивые" адреса.. =)

Спасибо ещё раз, но самописный движек мне не осилить :) Далеко не тот уровень 😒

Ayavryk
На сайте с 11.10.2003
Offline
209
#5
postavkin:
Спасибо ещё раз, но самописный движек мне не осилить :)

Вы уже его пишете :)

Потратьте немного времени на изучение ООП и посмотрите на какой-нибудь простой php-фреймворк.

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

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
P
На сайте с 06.01.2009
Offline
601
#6

ivan-lev, повторюсь - я не профи, но на бытовом уровне так можно сделать?

любая страница сайта содержит только такой код

  <? include('includes/shablon.php'); ?> 

файл shablon.php выглядит условно говоря так


// получаем урл текущей страницы и понимаем в каком мы разделе
// шаблонный хтмл код, который будет несколько видоизменяться от полученных данных
// данный код может быть весьма и весьма длинным, т.к. разделов на сайте много будет


---------- Добавлено 23.10.2012 в 14:36 ----------

Ayavryk:
В БД лезть совершенно необязательно, если вы этого по-началу боитесь.

Так я храню названия title, description, keywords, h1 и другие некоторые поля в зависимости от раздела в БД. Или вы не про это?

maldivec
На сайте с 04.11.2008
Offline
160
#7
postavkin:
любая страница сайта содержит только такой код

Т.е. у вас физически будут 100500 файлов совершенно одинаковых?

Какой в них смысл? Сделайте один index.php и все.

IL
На сайте с 20.04.2007
Offline
435
#8
postavkin:
любая страница сайта содержит только такой код

Так и оставить только одну страницу с только таким кодом.. Зачем их плодить, если они не отличаются. Всё равно

postavkin:
// получаем урл текущей страницы и понимаем в каком мы разделе

Просто добавьте переадресацию всех запросов на index.php (ещё раз позволю себе отправить Вас по первой ссылке из моего первого поста).. или просто в гугл.. поискать, к примеру, про mod_rewrite

postavkin:
Спасибо ещё раз, но самописный движек мне не осилить

Я имел ввиду по(д)смотреть и разобраться, как сделано "у них".. не всё, но вполне конкретные вещи. Хотя, в Вашем случае даже подсматривать не нужно.. ;)

P
На сайте с 06.01.2009
Offline
601
#9
maldivec:
Т.е. у вас физически будут 100500 файлов совершенно одинаковых?
Какой в них смысл? Сделайте один index.php и все.

Согласен и понимаю, что даже 300 страниц с абсолютно одинаковым кодом плодить смысла нет. Но пока не осилил и не понял - как обойтись без физических страниц с красивыми урлами вида - /ford-focus.php Понимаю, и видел сайты где не настроен ЧПУ (mod_rewrite я так понимаю) и урлы имели вид index.php?id=24632 или index.php/?tovar=379&id=387378

Но мне бы так не хотелось делать и сейчас надо понять как это реализуется.

Иду читать про mod_rewrite

---------- Добавлено 23.10.2012 в 16:54 ----------

Ayavryk:

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

Ответьте, пожалуйста, а то ввели меня в заблуждение.

Т.е. как можно обойтись без БД? а от куда берутся данные (переменные) при получении того или иного значения ($_SERVER['REQUEST_URI']) ? Как понять простой php-фреймворк или нет...

Это жесть. Читаю про mod_rewrite http://habrahabr.ru/company/sprinthost/blog/129560/ и понимаю, что наверное мне это не осилить.

---------- Добавлено 23.10.2012 в 17:41 ----------

Спасибо ivan-lev.

Подсказал, что нужно мне использовать


RewriteEngine ON
#
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Я понял, что какой бы адрес в строке браузера не ввели, страница будет редиректиться на index.php в которой мы типа будем получать инфо какой был запрошен урл первоначально и выдавать данные.

Но я не могу понять, как пс поймет какая страница реально существует, а какая нет...Ну просто принцип действия в голове не укладывается.

Ну ввел я в адресной строке www.site.ru/auto-audi.php - редирект на index.php и выводит нужные данные. А допустим страницы www.site.ru/auto-audi2.php - не существует, но все равно идет на редирект, и пустой шаблон получаем.

Ayavryk
На сайте с 11.10.2003
Offline
209
#10

1. индесный файл для работы с указанным .htaccess

echo "<h1>Запрошен файл: ". $_SERVER["REQUEST_URI"]."</h1>";
$url=$_SERVER["REQUEST_URI"];
if (file_exists($url)) { // проверяете существует ли файл в пути переданном через параметры
include($url); // здесь выводите необходимый файл или поднгружаете скрипт.
} else {
echo "$url not found"; // здесь выдаете сообщение об ошибке
}

Т.е. вы запускаете общий для всего сайта обработчик index.php, в нем разбираете параметры и подключаете нужные файлы. Будьте внимательны!!!. Таким способом у вас могут вытащить практически любой файл. Чтобы обезопаситься нужно следить чтобы урлы были допустимыми

На всякий случай, если вы только начали учить php - запомните волшебную функцию phpinfo()

Она позволяет узнать все что доступно скрипту в частности вот этот самый $_SERVER["REQUEST_URI"]

2. Если вы знаете БД, то конечно лучше работать с базами данных, но никто не мешает хранить все в файлах. То что это проще чем с бд - видимость. На поверку обычно без БД получается сложнее. Как вытаскивать из файлов - см. выше. Есть куча CMS без всяких БД - только на файлах. Они здесь периодически рекламируются.

3. Про фреймворки. Самый простой для изучения и самый документированный - Codeigniter У него же одно из самых больших русскоязычных комьюнити и очень много популярных статей. Т.ч. проблем с изучением быть не должно.

Есть другие но они или существенно сложнее или менее документированы.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий