Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Логика построения приложения
Форумы портала PHP.SU » » CMS и фреймворки » Логика построения приложения

Страниц (1): [1]
 

1. digi - 11 Марта, 2012 - 18:14:10 - перейти к сообщению
В соседних ветках выкладывал пару раз пример типовой задачи, но видимо из-за офтопиков никто не отозвался, хотя скачали больше 10 раз ;))

Давайте попробую начну с формулировки некоторых типовых задачек Улыбка

Основные требования
1. Все данные должны быть собраны ДО начала их отрисовки в виде HTML.
2. Шаблоны не должны содержать никаких «виджетов» т.е. вызовов котроллеров.
3. Контроллеры должны выполнять только свою задачу т.е. например если запрос на отображение списка новостей, то в нём не должно быть никаких инструкций для меню, хлебных крошек и т.д.
4. После обработки POST данных необходимо выполнять редирект, чтобы полность избежать эффекта «висячих пост данных».

Задача №1: Визитка
Структура сайта выглядит следующим образом:
1. http://site[dot]ru/ - главная.
2. http://site[dot]ru/about/ - о компании.
3. http://site[dot]ru/about/history/ - история компании.
4. http://site[dot]ru/about/contacts/ - контакты.
5. http://site[dot]ru/news/ - новости.
6. http://site[dot]ru/news/{title}[dot]html — просмотр новости.
7. http://site[dot]ru/news/page/{num}/ - постраничность новостей.
8. http://site[dot]ru/feedback/ - обратная связь.

Основной щаблон включает в себя блоки:

1. Хедер — просто текстовый блок, который отображатеся всегда и на всех странцах.
2. Вертикальное меню — Отображается на всех страницах, выглядит как древовидный список следующей структуры:
1. Главная
2. О комании
2.1. История
2.2. Контакты
3. Новости
4. Обратная связь
В зависимости от выбранной страницы, пункты выделяются. Например по адресу http://site[dot]ru/about/history/ должны быть выделены пункты «О компании» и «Контакты».
3. Контент — основное содержимое запрошенной страницы, для каждого ресурса свой контент.
4. Хлебные крошки — Отображается на всех страницах, кроме главной. В новостях также добавляются название выбранной странички при постраничном запросе или соответсвенно название новости.

Задача №2: Блог

Предположим наше приложение будет типовой блог, с достаточно распространённым функционалом:
Основной шаблон имеет следующие блоки:
1. Хедер
2. Горизонтальное меню
3. Контент
4. Вертикальная колонка
5. Футер

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

Горизотальное меню отображает категорию статей в которой сейчас находится юзер, притом даже при просмотре стати.

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

На всех страницах кроме главной, в самой верхней части блока контена отображаются «хлебные крошки».

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

В блоке вертикальной колонки, располагается архив статей в формате списка сгруппированного по Года и Месяцам, например так:
1. 2012
1. Январь (36) — в скобках указываеся кол-во статей в этом месяце.
2. 2011
1. Декарбь (20)
2. Ноябрь (24)
Ниже идёт блок «облако тэгов», его можно отображать с помощью Zend_Tag Улыбка
Футер всегда неизменчив, но контент в него берется из БД т.е. является редактируемым.
Примеры ссылок:
1. http://site[dot]ru/ - главная
2. http://site[dot]ru/page_2/ - просмотр второй страницы общего списка статей. (слайдер не отображается).
3. http://site[dot]ru/about/ - просто текстовая страничка с описанием о чем этот блог, каменты запрещены, данные берутся из БД.
4. http://site[dot]ru/2011/ - список всех статей за 2011 год.
5. http://site[dot]ru/2011/12/ - список всех статей за декабрь 2011 года.
6. http://site[dot]ru/2011/12/1/ - список всех статей за 1-ое декабря 2011 года.
7. http://site[dot]ru/first[dot]html – статья с именем first.
8. http://site[dot]ru/category/linux/ - список статей из категории Linux.
9. http://site[dot]ru/category/linux/page_2/ - вторая статья списка статей из категории Linux.
10. http://site[dot]ru/tags/ - список всех тэгов, при этом в вертикальном блоке облако тэгов не отображается.
11. http://site[dot]ru/tags/russia - список статей помеченных тэгом «Россия».
12. http://site[dot]ru/tags/russia/php - список статей помеченных тэгами «Россия» и «PHP».



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

Если кому удобнее будет, прикладываю файлик:

 

Powered by ExBB FM 1.0 RC1