[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проектирование сайта
Guest
пытаюсь понять как лучше спроектировать сайт, читал про mvc, но не совсем врубился.

Мне хочется знать нормальная ли вот эта структура, и есть ли ей "научное" название?

файл pattern.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251"/>

<?php

$page = explode(".", $_SERVER['PHP_SELF']);
include ("view/pages".$page[0]."/head.php"); ДИНАМИЧЕСКАЯ ЧАСТЬ
?>

<link
href="view/css/style.css" type="text/css" rel="stylesheet" />
<link
href="view/css/HTMLelements.css" type="text/css" rel="stylesheet" />
</head>
<body>


СТАТИЧЕСКАЯ ЧАСТЬ
СТАТИЧЕСКАЯ ЧАСТЬ

<?php
include ("view/pages".$page[0]."/body.php"); ДИНАМИЧЕСКАЯ ЧАСТЬ
?>


СТАТИЧЕСКАЯ ЧАСТЬ
СТАТИЧЕСКАЯ ЧАСТЬ

</body>
</html>

<?php

include ("view/pages".$page[0]."/foot.php"); ДИНАМИЧЕСКАЯ ЧАСТЬ
?>


файл index.php:
<?php
include_once ("settings/config.php");

//PHP КОД, создающий необходимые данные для отображения

include_once ("pattern.php");
?>

файл album.php:
<?php
include_once ("settings/config.php");

//PHP КОД, создающий необходимые данные для отображения

include_once ("pattern.php");
?>


вот примерный вид каталога:
pattern.php
settings/
classes/
config.php
functions.php
db.php
view/
css/
js/
images/
pages/
index/
head.php
body.php
foot.php

album/
head.php
body.php
foot.php

index.php
album.php

handlers/
ОБРАБОТЧИКИ






Спустя 1 минута, 36 секунд (27.11.2010 - 14:31) Guest написал(а):
особенно хотел бы услышать мнение twin'а

Спустя 56 минут, 11 секунд (27.11.2010 - 15:27) inpost написал(а):
Убиваем в себе Попова: http://irbis-team.com/15/10
MVC - это лишь частичка ядра, читаем про это полностью: http://irbis-team.com/15/4

Теперь от себя: footer&header - это динамические части? Это так думает Попов, на практике их по пол года никто не трогает! Ради одного изменения в пол года ты будешь каждый день обращаться к БД по n-количество раз?

Любая оптимизация говорит о том, что css надо, чтобы был один, а не несколько.

Над этим надо работать и работать!

Спустя 18 минут, 51 секунда (27.11.2010 - 15:46) Guest написал(а):
inpost
я не проходил курсы попова вообще.

head лишний - согласен, ключевые слова будем создавать динамически.

foot - я предполагал, например под js оставить. некоторые старые браузеры выдают некоторую нужную информацию только после загрузки страницы.(ie6). у меня были проблемы с правильным получением значений offset[].

про модель mvc - я прочел, говорю же, не совсем понял.

предположим убираем head и foot.

Что еще однозначно нужно изменить?


Спустя 5 минут, 17 секунд (27.11.2010 - 15:51) inpost написал(а):
Я говорю про полное ядро тебе надо почитать, а не только про MVC модель.
include './pattern.php';

раздел MVC лишь подготовительный к раздеру ЯДРО

Спустя 2 минуты, 15 секунд (27.11.2010 - 15:54) inpost написал(а):
То же ядро, посмотри на схему:
http://irbis-team.com/15/3/8

Спустя 6 минут, 39 секунд (27.11.2010 - 16:00) Guest написал(а):
inpost
я все это и читал вчера, пытаюсь как следует врубиться - не могу пока что.

Там, весь процесс проходит через index.php

Можно поинтересоваться, это как-то влияет на число просмотренных людьми страниц для поисковика? Ведь по сути всегда будет отображаться одна и та же страница? или инклюды тоже в счет?

Спустя 6 минут, 52 секунды (27.11.2010 - 16:07) inpost написал(а):
А как новости устроены?
index.php?page=news&id=1
index.php?page=news&id=2
и т.д., для поисковиков - это разные страницы, на них разная информация.
include ',/'.$_GET['page'].'.php';
Это пример корявый, без защиты всякой, просто показать, как система эта в итоге работает.
Страницы загружаются не через $page = explode(".", $_SERVER['PHP_SELF']);, а через $_GET, которая пишется в браузной строке.

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

Ты уж лучше конкретно спрашивай, что тебе не понятно - всё расскажу.

Спустя 33 секунды (27.11.2010 - 16:08) Игорь_Vasinsky написал(а):
Цитата
Убиваем в себе Попова:


блин тока пронего слышу, но не разу у него не учился...

чёж у него такая репутация, или у палки 2 конца?

мож он тож правильному учит
.........

это риторический мессадж

Спустя 1 минута, 34 секунды (27.11.2010 - 16:09) inpost написал(а):
Игорь_Vasinsky
Не надо оффтопить! Если хочешь, то создай свою тему

Спустя 7 минут, 15 секунд (27.11.2010 - 16:16) Guest написал(а):
inpost
примерно мысль я уловил, но никогда не видел подобного на практике

index.php?page=news&id=1
index.php?page=popular
index.php?page=.....


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

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

возмем мою "струкуру"

представление в ней четко выделено, тут не запутаешься.

файлы index.php и album.php - по сути и являются роутером.

php код, который в них - это контроллер.

я правильно понимаю?

Спустя 2 минуты, 22 секунды (27.11.2010 - 16:19) inpost написал(а):
Смотрим на эти ссылки:
http://phpforum.ru/index.php?showtopic=37052&hl=
http://irbis-team.com/15/3/8

Даже эта ссылка: http://www.nubo.ru/news.html и есть index.php?page=news , а вид изменён через мод реврайт! (rewrite .htaccess)

Спустя 7 минут, 23 секунды (27.11.2010 - 16:26) Guest написал(а):
<a href="/friends.php?id=64583320">Все</a>

а это?

Спустя 2 минуты, 4 секунды (27.11.2010 - 16:28) inpost написал(а):
Твой вид, это примерно так: index.php?page=friends&id=64583320

Вот прямой пример реврайта:
http://yuta.dp.ua/index.php?page=prices
http://yuta.dp.ua/prices.html

Это одна и та же страница.

Вот как выглядит роутер одной строчкой:
include ',/'.$_GET['page'].'.php';


контроллер: Тут весь php код, в основном это обращение к БД и формирование всех переменных, которые в правильном виде отправляются на tpl страницу.

view: подгружает tpl страницы. В них макет дизайна и почти нет php кода. Разве что код вывода: 'echo'

Спустя 5 минут, 40 секунд (27.11.2010 - 16:34) Guest написал(а):
inpost
я просто думал, что rewrite только в адресной строке меняет вид ссылки, а он оказывается везде его меняет.

спасибо за разъяснения, сейчас буду думать стоит ли переделывать текущий сайт, или оставить на следующий все это.

Спустя 2 минуты, 39 секунд (27.11.2010 - 16:37) inpost написал(а):
Реврайт только внешний вид поменял, внутри там остались те же $_GET.

Спустя 4 минуты, 6 секунд (27.11.2010 - 16:41) Guest написал(а):
inpost
ну это я понял))) но теперь мы можешь получить то что нужно уже 2 способами, правильно? по измененным правилам и по исходным?

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

Спустя 9 минут, 4 секунды (27.11.2010 - 16:50) inpost написал(а):
Есть страница news, в ней в news.tpl - макет страницы. Осталось в неё циклом вставить таблицу. Именно поэтому обращаемся к формированию таблицы, для этого есть второй файл 'table.tpl':

if(mysql_num_rows($res) > 0)
while($row = htmlspecialchars(mysql_fetch_array($res)))
$rows .= parseTpl($tpl, $row); // Эту функцию на ирбисе смотри


Теперь в $rows у нас содержится таблица с тегами "<tr><td>", без "<table>":
<tr>
<td><?php
echo $tpl_name; ?></td>
</tr>


А теперь в news.tpl вид такой:
<table>
<?php
echo $rows; ?>
</table>

Спустя 4 минуты, 36 секунд (27.11.2010 - 16:54) Guest написал(а):
inpost
понятно, все для шаблона надо приводить к одной переменной.
все действия, условия, проверки прочее делает конроллер и создает эти самые переменные для представления.

кажется я врубился.

Проблема только в том, что изменить структуру текущего сайта на эту убьет меня))))

а вообще, сенкс!!!

Спустя 17 минут, 26 секунд (27.11.2010 - 17:12) inpost написал(а):
Я к каждому новому сайту меняю структуру! Как бы совершенствую.
У меня немного упрощенная эта структура. роутер/патерн/общий макет в одном файле, и контроллер и 'page.tpl' во втором. Это всё потому, что я занимаюсь разработкой сам, поэтому и облегчил себе задачу.

Структура ирбиса как раз для того, чтобы в любом коллективе можно было разделить обязаности между верстальщиком и несколькими программистами.

Спустя 5 минут, 51 секунда (27.11.2010 - 17:18) Игорь_Vasinsky написал(а):
inpost
а я за ане предупредил чтопив пью. в смс. какиевы все злые...

Спустя 3 часа, 16 минут, 47 секунд (27.11.2010 - 20:34) Guest написал(а):
а куда девать обработчики все?

обработка отправленных форм и.т.д. Просто в отдельную папку?

Спустя 14 минут, 11 секунд (27.11.2010 - 20:49) inpost написал(а):
Guest
Отправляется саму на себя. Вся обработка скрипта и обращения к БД в контроллере этой страницы

Спустя 42 минуты, 28 секунд (27.11.2010 - 21:31) Guest написал(а):
inpost

мм, вот так))

слушай, посл. просьба, можешь сказать, как написать правило rewrite, чтобы из одной странички на другую указывать ссылки типа <a href="album.php?i=5&t=7"><a> а не <a href="index.php?page=album&i=5&t=7"

Спустя 53 минуты, 3 секунды (27.11.2010 - 22:24) inpost написал(а):
http://generateit.net/mod-rewrite/
генерирует правильно!
А всё остальное - гугл

Спустя 9 минут, 17 секунд (27.11.2010 - 22:33) twin написал(а):
Guest
Цитата
особенно хотел бы услышать мнение twin'а

Не вопрос))
Цитата
спасибо за разъяснения, сейчас буду думать стоит ли переделывать текущий сайт, или оставить на следующий все это.

Никого не слушай. Меня в первую очередь. Прислушивайся и делай выводы.

А скриптов не жалей. Смело сноси и переписывай. Это всего навсего буквы.
Тогда будет толк.

Спустя 16 минут, 3 секунды (27.11.2010 - 22:49) Guest написал(а):
twin
уже начал, обратного пути как говорится нет.))

все вроде бы отлично, только вот разобраться с url надо, и еще пару моментов
1) после очищения динамики с шаблона одной страницы, получилось 15 строк)))
как же дизайнер будет заниматься дизайном динамической части?

2) насчет обработчика, просто посылать запрос на самого себя и передать переменную, сообщающую, что это будет обработка, а не отображение? типа index.php?page=album&handler=addphoto

как-то таким образом?

и все-таки нужно все привести к виду album.php?handler=addphoto , надо про этот rewrite еще почитать, а голова уже кипит просто)

Спустя 5 минут, 14 секунд (27.11.2010 - 22:55) inpost написал(а):
if(isset($_POST['SEND'])) // Если была нажата кнопка 'SEND'
DO IT

<form action="" method="post">
<input
type="submit" name="SEND" value="отправить">
</form>


Спустя 2 минуты, 52 секунды (27.11.2010 - 22:58) Guest написал(а):
inpost
это понял

а после обработки exit(); чтобы страница не загрузилась, наверное.

Спустя 3 минуты, 21 секунда (27.11.2010 - 23:01) Guest написал(а):
ой тупанул)) все понял

Спустя 35 секунд (27.11.2010 - 23:01) Guest написал(а):
уже не варит кателок, пойду отдохну немного пока что.

Спустя 49 секунд (27.11.2010 - 23:02) inpost написал(а):
Учиться правильно - это всё время. Ты не пытайся за день выучить всё. Я учусь уже больше года, и мне ещё много чего выучить надо...

exit(); только для отладки скрипта! Не стоит его вообще использовать в коде. После выполнения - редирект, вот и всё. Не стоит оставлять человека на недоделанной странице

Спустя 15 часов, 1 минута, 39 секунд (28.11.2010 - 14:04) Guest написал(а):
несколько страниц осталось переделать))

если не против, я выскажу кое-какое мнение по поводу урока твина.
Все просто супер, на данный вряд ли где-то можно было бы быстрее все это переварить.

Только вот я кое-что изменил, например, переключатель страниц.

зачем через условия(свитч) подключать страницы? Можно ведб автоматизировать процесс


/* ---------------------------------------------
ПОДКЛЮЧАЕМ ФАЙЛ КОНФИГУРАЦИИ*/


include_once ("config.php");

/* ---------------------------------------------
УЗНАЕМ СТРАНИЦУ */


$page = (isset($_GET['page']))? $_GET['page'] : "index";


if(!is_file("./modules/".$page ."/router.php"))
header ("Location: ".REDIRECT_404);


/* ---------------------------------------------
СОЗДАЕМ НЕОБХОДИМЫЕ КОНСТАНТЫ */

define ("PAGE_ACTIVE", $page);



/* ---------------------------------------------
СОЕДИНЯЕМСЯ С РОУТЕРОМ */


$oB->start();

include "./modules/".PAGE_ACTIVE."/router.php";

$buffered_content = $oB->end();



и во всех модулях , чтобы ничего не менять используем константу PAGE_ACTIVE, вместо конкретного имени.

возможно я что-то недосмотрел или не понял просто, но это просто как комментарий к статье.

А вообще, большое спасибо twin'у за уроки, в данном случаи за эту статью, и inpost'у за подсказки!!)


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.