VolCh
цитировать
Зарегистрирован: 21 Окт 2007 07:17:33 Сообщения: 47 Откуда: Санкт-Петербург
|
Добавлено: 21 Окт 2007 09:17:31 Заголовок сообщения: Вложенная блочная верстка. Как реализовать? |
|
|
Задумал CMS модульную сделать, хотя бы личную пока. Решил на Кэйке - скачал, установил, почитал туториалы и прочее, простые примеры понятны
Начал проектировать CMS. С отдельными модулями проблем нет особых, а вот как их собрать вместе... Например на странице куча 3 div'ов вложенных примерно так:
Код: | <div id="1-1">
...
<div id="2-1>
...
</div>
...
<div id="2-2">
...
<div id="3-1">
...
</div>
...
<div id="3-2">
...
</div>
...
</div>
...
<div id="2-3">
...
</div>
...
</div> |
Причем содержимое каждого тега хранится в БД, включая структуру вложенности, и относится к разным моделям.
Вижу несколько вариантов:
1. "В лоб" - вызывается только один метод контролера, из кучи моделей, связанных иерархически, вытаскиваем всю инфу, какую только нужно для страницы в данный момент, передаем её в отображение, оно рендерит "картинку" и запускает нужную верстку (например в зависимости от "шкуры"). Примерно такая последовательность выходит:
- контроллер
(данные собраны)
-- отображение
(данные обработаны)
--- верстка
(натянули "шкуру" и вывели)
2. "Дерево контроллеров" - "главный" контроллер берет только инфу о блоках первого уровня и инфу о их отображении из моделей, по ней определяет какие контролеры и действия еще нужны и вызывает их. Каждый из них делает то же самое, потом возвращает данные "наверх". "Главный" вызывает отображение единственное, когда все данные готовы, как и в случае п.1. Примерно так выходит:
(запрос)
- контроллер1-1 ("главный")
-- контроллер 2-1
-- контроллер 2-2
--- контроллер 3-1
--- контроллер 3-2
-- контролер 2-3
(данные собраны)
--отображение
(данные обработаны)
---верстка
(натянули "шкуру" и вывели)
3. "Дерево отображений"- Наоборот, контроллер собирает всю инфу, а отображения вызывают друг друга.
(запрос)
- контроллер
(данные собраны)
-- отображение 1-1
--- отображение 2-1
--- отображение 2-2
---- отображение 3-1
---- отображение 3-2
--- отображение 2-3
(данные обработаны)
---верстка
(натянули "шкуру" и вывели)
4. "Деревья контролеров и отображений" - комбинация 2 и 3.
(запрос)
- контролер1-1 ("главный")
-- контроллер 2-1
-- контроллер 2-2
--- контроллер 3-1
--- контроллер 3-2
-- контролер 2-3
(данные собраны)
-- отображение 1-1
--- отображение 2-1
--- отображение 2-2
---- отображение 3-1
---- отображение 3-2
--- отображение 2-3
(данные обработаны)
----верстка
(натянули "шкуру" и вывели)
4. "Сквозное дерево" - каждый контроллер вызывает свое отображение, а оно, если нужно, другие контролеры с их отображением:
(запрос)
- контроллер1-1
-- отображение 1-1
--- контроллер 2-1
---- отображение 2-1
--- контроллер 2-2
---- отображение 2-2
----- контроллер 3-1
------ отображение 3-1
----- контроллер 3-2
------ отображение 3-2
--- контролер 2-3
---- отображение 2-3
(данные собраны и обработаны)
---верстка
(натянули "шкуру" и вывели)
Какой вариант наиболее легко реализуем средствами Кэйка (включая дальнейшее расширение CMS по модульному принципу, чтобы для добавления нового модуля в идеале надо было только скопировать 3 файла) и соотвествует его реализации MVC?
З.Ы. Под контроллерами и отображениями имелись в виду не только собственно они в терминах Кэйка, но и компоненты и элементы. |
|