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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Логика построения приложения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: давайте потеоретизируем? ;)
digi
Отправлено: 11 Марта, 2012 - 18:14:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




В соседних ветках выкладывал пару раз пример типовой задачи, но видимо из-за офтопиков никто не отозвался, хотя скачали больше 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».



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

Если кому удобнее будет, прикладываю файлик:
Скачать файл: Типовые задачи 2012-03-09.odt
Скачан раз: 91
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB