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 :: Как сделать правильную CMS [6]
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
caballero пишет:
В CMS нужно пользователю давать возможность только переключать шаблоны (темы) и управлять своим бизнес-контентом.
Наверное, вы правы. Хотя некоторые даже с этим не справятся (у меня были случаи).
И еще вопрос, может немного не по теме, зато по шаблонизатору . Короче, когда подключать файл с php-кодом, например через require_once, то php-код, естественно, исполняется. Но когда делать file_get_contents(), а затем print(), то php-код, естественно, не исполняется. Можно как то вывести строку, в которой содержится верстка + php-код, так чтобы этот php-код исполнился? Просто мне сейчас удобно было бы в шаблоне заменять некоторые макросы, вида "{имя_макроса}", на php-код. Но не знаю как потом сделать чтобы эта строка, так сказать, пропарсилась. Подскажите мне это пожалуйста. Заранее спасибо.
sKaa
Отправлено: 24 Ноября, 2011 - 04:20:00
Частый посетитель
Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011 Откуда: Россия г. Нижний Новгород
Я сам для таких целей писал. Что делает этот класс, он загружает шаблоны, парсит макросы {*} на соотвествующий файл, собирает полученную страницу в один большой файл, сохраняет его в кэш, чтоб каждый раз не парсить и потом если надо загружает из кэша.
$TPL=new Tpl($controller.'/'.$action);// Экземпляр класса шаблонов, в конструкторе указываем ему уникальный ключ, на случай если шаблон будем грузить из кэша
$TPL->load('template/admin/index.tpl')// Загружаем главную страницу
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
sKaa не то, и почему-то возникла ассоциация с фильмом "жмурки",
когда михалков заходит в помещение где была стрельба и говорит: "Ох, ну и накрошили, накрошили...". morph-x если уж пошли таким путем, то без eval не обойтись. Придется выцеплять по strpos начало и конец кода и выполнять, но это будет все долго.
У меня и шаблонизатора как такового нет, но шаблоны есть.
Есть метод assign, типа как у sKaa set, но нет метода parse.
sKaa пишет:
{name}
DeepVarvar пишет:
<?=$name?>
sKaa пишет:
{arr} ...и много еще действий чтоб вернуть отшаблоненный макрос
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Привет всем! Вот, лазил все это время по интернету, прочитал пару хороших статей, уже более-менее перепродумал архитектуру своей CMS (теперь все-таки юзаю MVC). Ну и как же без вопросов ? Вопрос для Drupal'истов. Как там работают блоки? Они вроде бы в БД, хранятся но можно юзать PHP, и это показалось мне немного странным. Вот например самый простой код:
Но вряд-ли в Drupal используют такой подход с eval() этими дополнениями до ('?>') и после ('<?php') переменной в которой содержится код. В самом Drupal'е немного рылся но не нашел, просто я относительно недавно с ним знаком. Ну и вот, подскажите, пожалуйста, как они там это делают, а то у меня быдлокод наверное получился.
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Привет всем! Вот, у меня опять тупик. Короче, теперь модуль Content как бы главный, который управляет содержимым сайта. А его уже расширяют другие (Pages, Materials, Galleries и т.д.). И я вот вижу только два варианта, как расширить модуль Content.
1-й -- это при обращении к модулю Content, (например http://www.example.com/content/view/63) можно определять тип контента (страницы в БД) и соответственно уже или подгружать нужные функции или использовать что-то вроде событий или хуков или что-то в этом роде.
2-й -- это обращаться к этим модулям-расширениям (Pages, Materials, Galleries и т.д.) напрямую, (например http://www.example.com/galleries/view/32) при этом делать их дочерними классами класса Content, чтобы можно было использовать его функционал.
Вот, пока-что все. Подскажите какой из них лучше, или предложите свой. Заранее спасибо!
caballero
Отправлено: 30 Ноября, 2011 - 01:12:55
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
теперь модуль Content как бы главный, который управляет содержимым сайта. А его уже расширяют другие
Что значит "расширяют"
Если это наследование то он родительский а не главный
Обычно в MVC фреймворках есть некий супер крнтроллер или диспетчер который управляет другими контроллерами (по сути модулями)
То есть главный модуль это какбы не совсем модуль а центральное ядро движка которое обеспечивает жизненный цикл всего остального
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
caballero, извините, я имел ввиду не главный системный. Я имел ввиду что он управляет контентом, т.е. страницами. А его уже расширяют модули для работы с разными типами страниц - галереями, гостевыми книгами и т.д.
Но все же, какой из двух выше представленных способов лучше? Или предложите свой, если кто знает получше .
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
он управляет контентом, т.е. страницами.
Контент и сраницы не одно и тоже. Контент - содержимое страниц и на страницу может вводится контент с нескольких модулей. Вы можете показывать поиск по статьям а сбоку крутить популярные картинки с галерей и т.д.
Как лучше никто не знает - иначе бы все CMS имели одинаковую архитектуру.
Вообще первый способ наверно лучше. Но опять же то что в URL указано gallery не означает что идет обращение только к модулю галерей. В большинстве случаев обращение идет к главному диспетчеру а он уже перенаправляет запрос модулю который подтягивает шаблон и формирует страницу либо сам диспетчер подтягивает шаблон и вызывает методы модулей для заполнения шаблона.
Раз упомянули MVC то уже ничего нового там не изобретете. Посмотрите как устроена архитектура у других CMS можно начать с CI как самого простого. Как минимум там готовый код а не то что на форуме на пальцах рассказывают.
Либо у вас своя идея для архитектуры и вопрос как организовать модули уже должен быть решен. Либо вы не знаете как - тогда какая разница откуда взять готовое решение - с форума, статей, готовых систем и т.д.
Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Смотрите в сторону MODxCMF. Работает как фреймворк, и как цмс. Есть юзабельная админка как в популярных цмс, с минимальным набором функций. Удобный АПИ.
armancho7777777
Отправлено: 23 Января, 2012 - 22:32:32
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
caballero пишет:
Просто делайте сайт а не пытайтесь применить что то лишь бы применить. Особенно когда не понимаете что это и зачем.
morph-x
Отправлено: 29 Января, 2012 - 01:47:29
Гость
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Привет всем! Как долго я сюда не заглядывал . Так вот, CMS как бы готова, но творческая работа никогда не может быть завершена. Система сама по себе получилась маленькая, и сейчас все это ООП только код размазало. Да и работать с ней тяжело как-то (я имею ввиду модули писать и исправлять что-то). И я задумался, что если переписать ее в обычном процедурном стиле? По-моему, в маленькой системе для сайтов-визиток, без наворотов, без системы управления блоками ООП будет излишне. Более того, вместо БД я использую просто файлы. Я решил сделать очень минимальный функционал, и сосредоточится на удобности. Что скажете насчет этого?
caballero
Отправлено: 29 Января, 2012 - 09:10:19
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
и сейчас все это ООП только код размазало
Точнее было бы сказать что это ты размазал код не умея применять OОП , которое как раз предназначено для обратного - инкапсуляция однако.
Цитата:
Что скажете насчет этого?
Творческая работа предполагает развитие и соверщенствование а не деградацию. Если ниасилил - учи матчасть. Так можно вообще вернутся к обычному HTML или CGI
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.