Но как же? зачем такое делать?
У news — a есть свои картинки (как галлерея) если это для news. Если это какой то другой виджет, скажем ХХХ галлирея, то когда этот виджет был вблючен в колонку, у него уже есть свой скажем ID.
Все виджеты на станице активны и каждый знает свою функцию. А про url я перепутал. Должно быть наш_сайт.com/news/articles/categories/sport/page/5 где articles это id мудуля. виджет show_articles знает, что «articles» после /news/ косается ему.
1. У нас есть Х «Addon» — ов, у которых есть свои собстенные виджеты, например — «last 5 news», или «show articles by category». (И еще, у нас нету «news», «publications» и.т.п… Есть некий «Articles» модуль, с помощю которого мы можем создать объект «news». Вот пример: Add new section (name = «news» have_categories=yes, и много других опции. Все это делается с помощю администратора CMS, как например в Joomla).
Ну вот, скахем есть у нас созданный «news» у которого есть по умолчанию свои виджеты.
2. Есть модуль «Navigation», который отвечает за навигацию сайта.
2.1. С его помощю мы саздаем группу ссылок, (например — группа ссылок для верхнего мену и группа ссылок для скажем левого навигационного блока). Таким образом, у нас есть возможность иметь не одну а слолько угодно «меню».
2.2. После того как мы саздали блок (группа ссылок), заходим и начинаем создание ссылок: «add new link» или «add new child link (для уже существуещего линка)» поскольку меню можно создовать с дочерными елементами. Линк — он же страница на сайте. У каждого линка есть свой уникальный url, в нашем случае «news». После того как мы создали линк, он еще не активен.
2.3. Нажимаем на «Manage panels» и начинаем строить панели для созданного линка (news). Как я уже говорил, Панели, в панелях колонки, в калонках же ставим виджеты сколько угодно.
Вот пример: gnu.am/tmp/navigation-panels-screen.jpg
2.4. Теперь у нас есть «меню» в котором есть ссылка «news».
Создовая для этой ссылки новые панели, колонки, начинаем включить для каждой колонки виджеты.
2.5. Как это происходит?
Как мы помним, у каждого модуля есть свои собственные виджеты.
На калонке, нажав на кнопку «add widget» мы переходим на строницу, где в списке представлены все активные виджеты всех модулей. Например:
Active widgets.
— [Articles]
show articles by category
news
publications
show last 5 articles
news
publications
[Picture gallery]
show pictures
my last gallery
gall_xxx
show slideshow
my last gallery
gall_xxx
— Все виджеты модулей могут модифицыроватся под нужды клиента.
Например капируем show_articles.php в папку customs с именим xxx_show_articles.php где xxx это уникальный текстовый id для текущего раздела, например news, и тогда автоматически будет загружен xxx_show_articles.php который был нами модифицирован.
этот метод работает для всех возможных виджетов.
И еще: после того как виджет преклеплен в колунке, мы можем изменить параметры по умолчанию. Например. если есть опции show last 5 articles, у администратора есть возможность изменить этот 5 на 7 (пряма в админке, без изминения кода в ручную).
3. И что у нас получается?
3.1 загрузка страницы.
Для url наш_сайт.com/news загружается ссылка news со своими панелями, колонками и веджетами. Виджеты сами знают что должны показывать по умолчанию.
Для url наш_сайт.com/news/categories/sport/page/5 загружается ссылка news. Опять же со всеми своими панелями, колонками и виджетами. Но здесь, виджет show_articles знает, что «categories/sport/5» это его параметры. В то время как другие виджеты работают со своими значениями по умолчанию.
4. Заключение.
У администратора всегда есть возможность переместить виджеты по желанию «шефа». Все виджеты можно адаптировать под свои нужды без изменения оригинальных файлов.
Только есть одно «но». Здесь как видети сами, логика «yoursite.com/module/method/param1/param2» не работает.
У меня другого выхода не нашлось. Но очень хотелась бы работать имменно с этой логикай.
Вопрос.
В вашем случае yoursite.com/news/show/last/20 как будет знать, что кроме того как загрузить модуль news и метод show должны загружатся и баннеры, и галерея с 5 картинами внизу и на правом верхнем углу login box?
Благодарю за внимание!
Я с удовольствием жду ваших версий и замечаний.
Если в тексте есть неграмотность, так прошу прощения.
Вопрос роутинга и параметров, в случае MVC очень проблематичны для многих.
Вот я например имею свою собственную идеалогию роутинга в CMS. Предложу в кратце.
1. Все модули (articles, gallery, etc...) имеют свои так называемые блоки (виджеты).
2. Есть некий «Navigation» модуль (addon), с помощу которого мы строим фронтенд для сайта.
Состоит он из панелей в них же столбцы, в столбцах же виджеты. Почему так решено, будет описана ниже.
(screen пример панелей gnu.am/tmp/navigation-panels-screen.jpg)
Построив один такой навигационный блок (блок в этом случае он же страница имеющий свой уникальный линк). мы можем сделать его «шаблоном по умолчанию», после чего все другие (линки они же навигоционные блоки) будут брать у него все что есть в наличии. После чего, у нас есть восможность модифицировать панели, столбцы и видйеты для каждого «линка».
Почему панели, столбцы, виджеты?
Дело в том, что у многих разроботчикав есть колько такое панятие как left | center | right. Это не хорошо. Ведь может быть случай, когда в «топ» — е нужна ставить лишь один видже, в центре три таких, потом баннер с левого грая до конца страницы до края середины, тоесть правую калонку надо оставить в покое.
(пример gnu.am/tmp/navigation-panels-example1.jpg).
Вот в этом случае этом метод по моему универсален. Ксате, все объекты (панели, столбцы, виджеты) можно перетаскивать на права, на лево, наверх и вниз. Есть еще трюки по поводу стилей, но об этом потом, есле вас поинтересует это тема.
С нетерпением жду ваших советов, вопросов и конечно же критики :)
П.С.
тут описана именна построение объектов а не навигация.
для навигации есть пара штучек. расскожу если вас поинтересует.
Статья что надо!.. Я бы назвал эту тему философией программирования. В полне согласен с вашим мнением об «универсальности», ведь самый лучший «CMS» — это система спроектировання лично под нужды данного клиента.
Сам я программировал системы почти точно таким образом как вы. Сначала 1.0.0 потом 1.n.н, ну уж после… 2, 3… и главное с совсем разными логиками. Почти что с нуля переписал каждую «майор» версию. Вот и сейчас, капаюсь в сети, пытаюсь найти оптимальный способ решения контроллера ядра и навигации системы для фронтеда.
П.С.
Спасибо за очень разумное мнение. Никаких иносказательностей.
У news — a есть свои картинки (как галлерея) если это для news. Если это какой то другой виджет, скажем ХХХ галлирея, то когда этот виджет был вблючен в колонку, у него уже есть свой скажем ID.
1. У нас есть Х «Addon» — ов, у которых есть свои собстенные виджеты, например — «last 5 news», или «show articles by category». (И еще, у нас нету «news», «publications» и.т.п… Есть некий «Articles» модуль, с помощю которого мы можем создать объект «news». Вот пример: Add new section (name = «news» have_categories=yes, и много других опции. Все это делается с помощю администратора CMS, как например в Joomla).
Ну вот, скахем есть у нас созданный «news» у которого есть по умолчанию свои виджеты.
2. Есть модуль «Navigation», который отвечает за навигацию сайта.
2.1. С его помощю мы саздаем группу ссылок, (например — группа ссылок для верхнего мену и группа ссылок для скажем левого навигационного блока). Таким образом, у нас есть возможность иметь не одну а слолько угодно «меню».
2.2. После того как мы саздали блок (группа ссылок), заходим и начинаем создание ссылок: «add new link» или «add new child link (для уже существуещего линка)» поскольку меню можно создовать с дочерными елементами. Линк — он же страница на сайте. У каждого линка есть свой уникальный url, в нашем случае «news». После того как мы создали линк, он еще не активен.
2.3. Нажимаем на «Manage panels» и начинаем строить панели для созданного линка (news). Как я уже говорил, Панели, в панелях колонки, в калонках же ставим виджеты сколько угодно.
Вот пример: gnu.am/tmp/navigation-panels-screen.jpg
2.4. Теперь у нас есть «меню» в котором есть ссылка «news».
Создовая для этой ссылки новые панели, колонки, начинаем включить для каждой колонки виджеты.
2.5. Как это происходит?
Как мы помним, у каждого модуля есть свои собственные виджеты.
На калонке, нажав на кнопку «add widget» мы переходим на строницу, где в списке представлены все активные виджеты всех модулей. Например:
Active widgets.
— [Articles]
show articles by category
news
publications
show last 5 articles
news
publications
[Picture gallery]
show pictures
my last gallery
gall_xxx
show slideshow
my last gallery
gall_xxx
— Все виджеты модулей могут модифицыроватся под нужды клиента.
Например капируем show_articles.php в папку customs с именим xxx_show_articles.php где xxx это уникальный текстовый id для текущего раздела, например news, и тогда автоматически будет загружен xxx_show_articles.php который был нами модифицирован.
этот метод работает для всех возможных виджетов.
И еще: после того как виджет преклеплен в колунке, мы можем изменить параметры по умолчанию. Например. если есть опции show last 5 articles, у администратора есть возможность изменить этот 5 на 7 (пряма в админке, без изминения кода в ручную).
3. И что у нас получается?
3.1 загрузка страницы.
Для url наш_сайт.com/news загружается ссылка news со своими панелями, колонками и веджетами. Виджеты сами знают что должны показывать по умолчанию.
Для url наш_сайт.com/news/categories/sport/page/5 загружается ссылка news. Опять же со всеми своими панелями, колонками и виджетами. Но здесь, виджет show_articles знает, что «categories/sport/5» это его параметры. В то время как другие виджеты работают со своими значениями по умолчанию.
4. Заключение.
У администратора всегда есть возможность переместить виджеты по желанию «шефа». Все виджеты можно адаптировать под свои нужды без изменения оригинальных файлов.
Только есть одно «но». Здесь как видети сами, логика «yoursite.com/module/method/param1/param2» не работает.
У меня другого выхода не нашлось. Но очень хотелась бы работать имменно с этой логикай.
Вопрос.
В вашем случае yoursite.com/news/show/last/20 как будет знать, что кроме того как загрузить модуль news и метод show должны загружатся и баннеры, и галерея с 5 картинами внизу и на правом верхнем углу login box?
Благодарю за внимание!
Я с удовольствием жду ваших версий и замечаний.
Если в тексте есть неграмотность, так прошу прощения.
Вот я например имею свою собственную идеалогию роутинга в CMS. Предложу в кратце.
1. Все модули (articles, gallery, etc...) имеют свои так называемые блоки (виджеты).
2. Есть некий «Navigation» модуль (addon), с помощу которого мы строим фронтенд для сайта.
Состоит он из панелей в них же столбцы, в столбцах же виджеты. Почему так решено, будет описана ниже.
(screen пример панелей gnu.am/tmp/navigation-panels-screen.jpg)
Построив один такой навигационный блок (блок в этом случае он же страница имеющий свой уникальный линк). мы можем сделать его «шаблоном по умолчанию», после чего все другие (линки они же навигоционные блоки) будут брать у него все что есть в наличии. После чего, у нас есть восможность модифицировать панели, столбцы и видйеты для каждого «линка».
Почему панели, столбцы, виджеты?
Дело в том, что у многих разроботчикав есть колько такое панятие как left | center | right. Это не хорошо. Ведь может быть случай, когда в «топ» — е нужна ставить лишь один видже, в центре три таких, потом баннер с левого грая до конца страницы до края середины, тоесть правую калонку надо оставить в покое.
(пример gnu.am/tmp/navigation-panels-example1.jpg).
Вот в этом случае этом метод по моему универсален. Ксате, все объекты (панели, столбцы, виджеты) можно перетаскивать на права, на лево, наверх и вниз. Есть еще трюки по поводу стилей, но об этом потом, есле вас поинтересует это тема.
С нетерпением жду ваших советов, вопросов и конечно же критики :)
П.С.
тут описана именна построение объектов а не навигация.
для навигации есть пара штучек. расскожу если вас поинтересует.
Сам я программировал системы почти точно таким образом как вы. Сначала 1.0.0 потом 1.n.н, ну уж после… 2, 3… и главное с совсем разными логиками. Почти что с нуля переписал каждую «майор» версию. Вот и сейчас, капаюсь в сети, пытаюсь найти оптимальный способ решения контроллера ядра и навигации системы для фронтеда.
П.С.
Спасибо за очень разумное мнение. Никаких иносказательностей.