Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 17.10.2010, 20:59   #1
Эксперт
 
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 242
eresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущее
По умолчанию Идея для CMS (или это уже не CMS)

Заранее приношу извинения за сумбурность изложения. Вдруг кто поймёт

Вот размышлял над тем как должен выглядеть быстрый (в плане малой загрузки сервера) и "удобный для меня" конструктор сайтов, и выношу на суд общественности первые результаты размышлений/экспериментов.
Может конечно велосипед изобрёл (это случайно не model-view-controller?)

Знаком с wordpress и drupal.
Это системы основанные на контенте, всё крутится вокруг контента.

А что если сделать систему в которой всё крутится вокруг "типов страниц" (а не типов контента, как, например, в друпале)

т.е.
1. есть шаблон страницы, с некими регионами, в которые можно выводить информацию.
2. есть классы реализующие типы страниц. в этих классах есть методы get_region_header, get_region_footer и т.д. возвращающие контент, который должен отобразиться в соответствующих регионах.
Т.е. класс типа страницы - полностью определяет что будет выдано в шаблон.

3. ядро системы - определяет к какому типу относится запрашиваемая страница (например по урл - /тип_страницы/имя_материала

4. ядро системы создаёт объект класса типа страницы обслуживающего этот данный тип страницы (в конструкторе передаём имя_материала)

5. ядро системы опрашивает объект страницы "что будем показывать в этом регионе" (для всех регионов шаблона)

6. ядро системы передаёт собранную информацию в шаблон.

Само наполнение страницы - берётся из других классов, реализующих "типы материалов" (простой текст, текст с заголовком, карточка клиента и т.п.), или "блоки-виджеты" - комментарии и т.п.

т.е. логика работы ядра будет выглядеть так:
1. тип_страницы = (определили тип страницы по url)
2. имя материала=(определили имя материала по url)
3. require_once(class_тип_страницы.php);
4. $o=new class_тип_страницы(имя_материала);
5. Опросили - чего будем выводить в регионы шаблона
$regions['header']=$o->get_header();
....
$regions['footer']=$o->get_footer();
6. передали массив $regions в шаблон, чтоб все регионы попали на свои места на странице.

Минусы и плюсы
1. CMS вряд ли получится (надо лазить в код чтоб что-то поменять)
НО
поменять что-то на какой-то странице - легко и понятно где и как.

2. По поводу кэширования - сплошные плюсы (например, класс страницы может передать ядру информацию - какие регионы на этой странице можно кэшировать, и можно ли кэшировать страницу целиком)

3. Каждый тип контента реализуется в отдельной таблице базы данных (т.е. нет необходимости в модулях типа CCK в друпал) +к быстродействию

4. Загружаются только действительно необходимые для отображения данной страницы классы/модули +к быстродействию

5. Ясно видно какие блоки на каких страницах отображаются (не из админки конечно видно, а из кода)

6. Из-за чего собственно и начались размышления - возможность реализации "виртуальных" страниц, вообще не хранящихся в базе, а генерирующих контент по "имени_материала" в url. Ну и соответственно - возможность оставлять комментарии к таким "виртуальным" страницам.
Простой пример - имя_материала - любое слово, контент страницы - только комментарии к этому слову (пример надуманный, но нечто подобное как раз и понадобилось)


Если кто-нибудь что-нибудь понял. Прошу...
__________________
Партнёрка знакомств с блоком SAPE. Сапа без расходов на хостинг!
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS)
eresik вне форума   Ответить с цитированием
Старый 17.10.2010, 23:24   #2
Эксперт
 
Аватар для badimao
 
Регистрация: 24.03.2009
Сообщений: 1,794
Вес репутации: 291
badimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущееbadimao - прекрасное будущее
По умолчанию

вуд вуд

Последний раз редактировалось badimao; 17.10.2010 в 23:32.
badimao вне форума   Ответить с цитированием
Старый 18.10.2010, 00:37   #3
Эксперт
 
Аватар для Anadonam
 
Регистрация: 29.10.2009
Адрес: Вологда and SSHA
Сообщений: 3,897
Вес репутации: 353
Anadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущееAnadonam - прекрасное будущее
Отправить сообщение для Anadonam с помощью ICQ
По умолчанию

да несомненно. конечно так оно сложно сказать сходу, но думаю смысл очевиден.
Anadonam вне форума   Ответить с цитированием
Старый 18.10.2010, 01:15   #4
Эксперт
 
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
boric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущее
По умолчанию

eresik
У меня примерно так все и работает, только посложнее малек и еще гибче и не на пхп. Например через урл передавать тип контента - плохая идея. Да и зачем? Каждый объект должен сам знать, какого он типа.

Также видел самописные цмс, работающие почти так, как вы описали.
boric вне форума   Ответить с цитированием
Старый 18.10.2010, 09:04   #5
шайтанама
 
Аватар для shadx
 
Регистрация: 13.07.2007
Сообщений: 1,700
Вес репутации: 298
shadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущее
Отправить сообщение для shadx с помощью ICQ
По умолчанию

>>> get_region_header, get_region_footer

дальше не читал.

Выкинуть хедеры и футеры и начать думать заного.
shadx вне форума   Ответить с цитированием
Старый 18.10.2010, 10:02   #6
Эксперт
 
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 242
eresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущее
По умолчанию

Цитата:
Сообщение от shadx Посмотреть сообщение
Выкинуть хедеры и футеры и начать думать заного.
Чего это их выкидывать.
Пусть будет возможность делать полностью уникальные страницы.
Если охота чтоб хедеры/футеры везде были одинаковые - можно:
1. в базовом классе для типов страниц прописать "значения по умолчанию"
2. класс страницы может движку сообщать "регионы хедер и футер - можно кэшировать, без учёта авторизации пользователя (для всех пользователей - одинаковый контент в этих регионах)"

или просто заранее прописать постоянное содержимое в шаблон страницы.
(т.е. вызовом метода класс_типа_страницы->get_region_header() - всего лишь запрашиваем доп информацию выводимую в хеадер, если она есть)

Щас "в процессе реализации", пока всё нравится.
Удобно, не то что в друпале.

Потестирую, возможно минусы перевесят конечно ("неуниверсальность" модулей/виджетов/шаблонов, каждый модуль/виджет реализует свой API)

Пример реализации "виртуальных" страниц, генерируемых по url - http://turistovo.ru
__________________
Партнёрка знакомств с блоком SAPE. Сапа без расходов на хостинг!
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS)

Последний раз редактировалось eresik; 18.10.2010 в 10:08.
eresik вне форума   Ответить с цитированием
Старый 18.10.2010, 10:07   #7
Мне повезёт!
 
Аватар для Alexey
 
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
Alexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущее
По умолчанию

У вас жестко задано деление страницы на 3 блока - хедер, футер и собственно сам контент. Между тем, блоков этих может быть как больше, так и меньше.

Я не говорю, что это плохо - есть очевидный плюс - простота. Но есть и очевидный минус - не универсальность. Где для вас оптимум - смотреть вам самим, т.к. достичь и простоты, и универсальности, и функциональность одновременно невозможно.
__________________
Everything will be great in the end.
If it's not great, it's not the end.
Alexey вне форума   Ответить с цитированием
Старый 18.10.2010, 10:21   #8
Эксперт
 
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 242
eresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Alexey Посмотреть сообщение
У вас жестко задано деление страницы на 3 блока - хедер, футер и собственно сам контент.
Во-первых, это "регионы", в которые "класс страницы" передаёт массив блоков, т.е. в одном регионе можно отображать сколько угодно блоков. Ну например в левую колонку - передать массив блоков-менюшек, и будет несколько блоков-менюшек в левом регионе. Функциональность - не хуже чем в распространённых движках.
Минус - кэшируются только регионы, но не отдельные блоки (а может это и плюс, хз). Если регион найден в кэше, то get_region_... вообще не вызывается. Запрашиваются только регионы страницы не обнаруженные в кэше (и регионы, по поводу которых класс типа страницы сообщил, что их нельзя кэшировать)

Во-вторых - заранее сделать в шаблоне страницы кучу регионов (что сейчас и реализовано), и если блоков в регионе нет - регион вообще не выводится (т.е. если get_region_comments() - ничего не вернул, то регион комментариев вообще не выводится на страницу)

В третьих (мне это не надо, но если очень хочется) - каждый тип страницы может сообщать движку "а мои блоки-регионы выводить в такой-то шаблон", т.е можно использовать несколько шаблонов (но как правило - в этом нет необходимости)
__________________
Партнёрка знакомств с блоком SAPE. Сапа без расходов на хостинг!
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS)

Последний раз редактировалось eresik; 18.10.2010 в 10:27. Причина: Добавлено сообщение
eresik вне форума   Ответить с цитированием
Старый 18.10.2010, 10:37   #9
Мне повезёт!
 
Аватар для Alexey
 
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
Alexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущее
По умолчанию

Тогда жестко заданы регионы, суть дела от этого не меняется По логике то, каким образом будут расположены блоки на странице должен знать только шаблон, но не класс страницы. Классу страницы должно быть розово-фиолетово, как там все это отображается, его роль - обрабатывать запросы и возвращать данные. (см. архитектуру MVC).
__________________
Everything will be great in the end.
If it's not great, it's not the end.
Alexey вне форума   Ответить с цитированием
Старый 18.10.2010, 10:56   #10
Эксперт
 
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 242
eresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Alexey Посмотреть сообщение
(см. архитектуру MVC)
Ну так это ж и не MVC


Цитата:
Сообщение от Alexey Посмотреть сообщение
Тогда жестко заданы регионы, суть дела от этого не меняется
Так они во всех CMS жёстко заданы



Цитата:
Сообщение от Alexey Посмотреть сообщение
По логике то, каким образом будут расположены блоки на странице должен знать только шаблон, но не класс страницы. Классу страницы должно быть розово-фиолетово, как там все это отображается, его роль - обрабатывать запросы и возвращать данные.
Никто не спорит, это "другая логика" (может быть хреновая конечно, я пока ещё "не прочувствовал"). В этой логике - класс страницы -
ЗНАЕТ в каком регионе будет выведена информация
ЗНАЕТ у какого модуля взять информацию для вывода в этот регион,
ЗНАЕТ в каком порядке будут выводится блоки в регионе (он их сам заносит в массив блоков для запрашиваемого региона).

Роль класса страницы - загрузить модули используемые для вывода инфы на запрашиваемую страницу, и вернуть содержимое регионов полученное от модулей, например, от модуля комментариев)

т.е. пример метода класса страницы, для вывода комментариев
PHP код:
class page_main extends page_base {
...
...
  function 
get_region_comments() {
    require_once(
'class_comments'); //класс реализующий работу с комментариями
    
$comments=new CComments(ид страницы);
    
$ret[0]['header']='Комментарии'// 0 - порядковый номер блока в запрашиваемом регионе
    
$ret[0]['content']=$comments->get_widget(); //у каждого блока могут быть заголовок и/или контент
    
return $ret;
  } 
__________________
Партнёрка знакомств с блоком SAPE. Сапа без расходов на хостинг!
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS)

Последний раз редактировалось eresik; 18.10.2010 в 11:01.
eresik вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть идея tanir23 Софт для оптимизаторов и вебмастеров 13 02.09.2010 21:13
Идея Йа Орешко Курилка 21 18.08.2010 01:36
Родилась идея СДЛ Anadonam Курилка 19 14.01.2010 23:57
Идея!!! Love911 Курилка 12 22.09.2009 12:47
Есть идея! valu0808 Курилка 5 20.06.2009 01:55


Часовой пояс GMT +3, время: 04:24.