На главную Статьи Функции

Структура сайта. Отделение логики от внешнего вида.




Этой статьей я закончу серию статей о структуре сайта. В ней я опишу наработки, которые сейчас использую в своих сайтах. В предыдущей статье было дано понятие о том, как сделать сайт на одной странице. Казалось бы, зачем идти дальше? Однако дальше идти нужно и даже необходимо.
В предыдущей статье был описан метод подключения страниц по ссылке. В чем его неудобство? Приведу пример кода:
<td width="300" valign="top" align="center">
<p align="left" style="margin:5px 0 15px 0; font-weight:bold;"><span style="font-size:16px; font-family:Georgia">цена: </span><span class="dmBigPrice"><?php echo $product['price']?> руб.</span></p>
<?php
if (!empty($product['image'])) {?>
<img src="http://<?php echo $_SERVER['SERVER_NAME']?>/images/<?php echo $product['image']?>" width="300" style="margin-bottom:10px;"/>
<?php
if (count($pc->add_images)!=0) {
foreach ($pc->add_images as $i) {
?>
<img src="http://<?php echo $_SERVER['SERVER_NAME']?>/images/<?php echo $i['thumb']?>" width="130" style="margin:4px;"/>
<?php
}
}          
}
?>
</td>
Страшно? А представляете если нужно его изменить. Вкрапление php кода в html для меня всегда было довольно неприятно, спасал только редактор с подсветкой кода (кстати, сейчас я пользуюсь Zend Studio, в нем в отличии от Dreamweaver нет внешнего вида, а только код, но это учит видеть внешний вид страницы по ее исходному коду). Теперь я приведу свою реализацию структуры сайта:
Структура сайта
Итак, сверху вниз:

  1. images – папка для хранения загружаемых изображений
  2. classes – здесь содержатся все классы, отвечающие за извлечение информации из базы данных и отображение шаблонов, подключение базы данных, инициализацию необходимых переменных и прочее
  3. controllers – так называемые контроллеры. Обычно это тоже классы, но я пока, видимо до такого не дорос, поэтому у меня контроллеры занимаются подключением нужного класса и выводом информации посетителю сайта. Например, в интренет-магазине можно сделать контроллер shop, отвечающий за отображение страниц. Он будет подключать в себе класс shop.class.php, в котором содержатся функции вывода нужного шаблона страницы (например список товаров или категорий)
  4. libraries – внешние библиотеки. В эту папку я помещаю внешние библиотеки. На примере это Smarty (шаблонизатор), tinyMce – текстовый редактор для html-форм и jQueyry (JavaScript библиотека).
  5. tpl – самая интересная папка, в ней содержится все, что отвечает за внешний вид сайта. В ней находятся папки:
  1. cache – служебная папка Smarty для кэша.
  2. compieled – скомпилированные Smarty шаблоны
  3. images – набор изображиний, используемых в шаблонах.
  4. javascript – папка для JavaScript файлов
  5. styles- CSS файлы
  6. templates – шаблоны внешнего вида. В этой папке лежат файлы с расширением tpl (можно любого другого)
  7. index.php – файл разметки сайта (основной шаблон)
  1. index.php – по-моему это называется front-controller. При посещении сайта, именно этот файл отвечает за все действия пользователя. Он определяет какую страницу показывать, какие переменные инициализировать.

Вот, я постарался описать приблизительную структуру сайта, которая на данный момент мне кажется наиболее удачной. Все логично, все красиво. Чтобы изменить внешний вид сайта, необходимо всего лишь поменять внешний вид шаблонов в папке templates, заменить стили и изображения. В исохдном коде ничего менять не нужно. Если у вас возникли вопросы или предложения по улучшению, пишите на форуме.
На этом, я считаю можно пока закончить статьи о структуре сайты. Что дальше? В следующей статье я попробую объяснить еще одно значительное, на мой взгляд, преимущество описанной структуры сайт – разработка на базе ее ЧПУ (понятные человеку УРЛ).



© 2010-2019 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна

обратная связь