[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Структура сайта
vn214
Здравствуйте.

В разделе о MVC на этом форуме
http://irbis-team.com/15/3/6?PHPSESSID=62d...5712b6532257f64
предлагается структура сайта.

Если в структуре использовать смарти - структура конечно меняется.
Есть index.php

<?php


//файл переменных
include './variables.php';

//переключатель страниц
switch($page)
{
case 'main':
include './modules/main/main.php';
break;

case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
break;

default :
include './modules/main/main.php';
break;
}


//подключаем смарти
include 'setupsmarty/setup.php';

$smarty = new Smarty_xts;
//устанавка значений переменной в процессе выполнения шаблона
$smarty->assign('title',$title);
...

$smarty->assign('page',$page);

$smarty->display('index.tpl');

?>



Которому соответствует index.tpl

<html>

<head>

....

</head>

<body>

{include file="header.tpl"}

<div id="content" >
<!-- смартавский переключатель страниц-->
{if $page == 'main'}

{include file="main.tpl"}

{elseif $page == 'second'}

{include file="second.tpl"}

{elseif $page == 'news'}

{include file="news.tpl"}

{else}

{include file="main.tpl"}

{/if}

</div>

<div
id = "footer"> </div>


</body>

</html>


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

Насколько корректная такая структура?
Насколько это соответствует MVC ??



Спустя 7 минут, 57 секунд (12.02.2011 - 23:23) twin написал(а):
Начнем с этой фразы:
Цитата
Я сейчас покажу еще одну структуру, которая очень похожа на упомянутую, но кроме того содержит в себе модульный элемент

Дело в том, что это можно назвать MVC с довольно внушительной натяжкой. Я вообще не шибко то люблю эти ярлыки. Они сковывают и не дают свободы мысли.

Вот и ты сейчас задаешь вопрос:
Цитата
Насколько это соответствует MVC ??
А кто вообще сказал, что должно соответствовать? Тебе так удобно, значит так и пиши.


Спустя 32 секунды (12.02.2011 - 23:23) alex12060 написал(а):
Вообще, я слышал такое, что МВС - это Model Viewer Controller
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп.

У тебя сделаны шаблоны - + к МВС
У тебя огромное разграничение через switch...case - минус к МВС

Итог, если оптимизируешь вот это:

//переключатель страниц
switch($page)
{
case 'main':
include './modules/main/main.php';
break;

case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
break;

default :
include './modules/main/main.php';
break;
}


В функцию, то будет немного похоже на МВС. А так, что-то пока слабовато)

Спустя 14 минут, 41 секунда (12.02.2011 - 23:38) vn214 написал(а):
Цитата (alex12060 @ 12.02.2011 - 23:23)
Вообще, я слышал такое, что МВС - это Model Viewer Controller
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп.

У тебя сделаны шаблоны - + к МВС
У тебя огромное разграничение через switch...case - минус к МВС

Итог, если оптимизируешь вот это:

//переключатель страниц
switch($page)
{
case 'main':
include './modules/main/main.php';
break;

case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
break;

default :
include './modules/main/main.php';
break;
}


В функцию, то будет немного похоже на МВС. А так, что-то пока слабовато)

То есть переключателя страниц не будет - вместо него некая функция.
Или ты имел в виду функцию содержащею переключатель ?

Спустя 22 минуты, 42 секунды (13.02.2011 - 00:01) alex12060 написал(а):
Цитата
Или ты имел в виду функцию содержащею переключатель ?


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

Спустя 48 минут, 34 секунды (13.02.2011 - 00:49) Invis1ble написал(а):
alex12060
Цитата
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп.

че за ересь? )

Спустя 7 минут, 5 секунд (13.02.2011 - 00:57) twin написал(а):
Цитата
Так точно. Просто, в нее будет поступать $_GET параметр, в качестве параметра, и уже в зависимости от этого, будет инклудить тебе нужный файл.

Ну и что в этом хорошего?
Открываю я такой скрипт и вижу:
function route($get)
{
include $get.'php';
}
Здорово, две строчки. Только момет. А как тут два файла подключить? Один в другом? И так нихрена не понятно что где.
Такая штука стоит в роутере модуля. А модуль гораздо удобнее переключать свитчем.

vn214
Цитата
Насколько корректная такая структура?

Я вот только не пойму, зачем этот изврат? Зачем шаблоны инклюдить в смартях? Чем php не устроило?

Спустя 21 час, 10 минут, 13 секунд (13.02.2011 - 22:07) vn214 написал(а):
[QUOTE=twin,13.02.2011 - 00:57] [QUOTE]
vn214
[QUOTE]Насколько корректная такая структура?[/QUOTE]
Я вот только не пойму, зачем этот изврат? Зачем шаблоны инклюдить в смартях? Чем php не устроило? [/QUOTE]
Насколько понял ( возможно ошибаюсь) если использовать смарти
файл index.php

switch($page)
{
case 'main':
include './modules/main/main.php';
include './templates/main.tpl';
break;

case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
include './templates/news.tpl';
break;

default :
include './modules/main/main.php';
include './templates/main.tpl';
break;
}


так сделать нельзя (будут отображаться куски (дивы) как попала)
так как в конце файла index.php есть функция которая отображает шаблон.

$smarty->display('index.tpl');


А в index.tpl'

....
<body>

{include file="header.tpl"}

<div id="content" class="ieroundbox">


{if $page == 'main'}

{include file="main.tpl"}

{elseif $page == 'second'}

{include file="second.tpl"}

{elseif $page == 'news'}

{include file="news.tpl"}

{else}

{include file="main.tpl"}

{/if}

</div>
...
</body>

После выполнения например main.php - загружается main.tpl
который представляет собой набор дивов


<div id="s"> нужный текст</div>
<div
id="t"> нужный текст</div>


Если не так, какой другой вариант при использовании смарти ?
P.S. Если в шаблонах main.tpl, second.tpl и т.д. есть дивы с одинаковыми
id - влияет ли как то корректность DOM. Конечно загружается только один шаблон - и id будет уникальным. Но все таки.


_____________
Спартак - чемпион
Быстрый ответ:

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