И вновь обращаюсь за помощью... Так и не понял как делается нормальная структура CMS

Safary

Новичок
И вновь обращаюсь за помощью... Так и не понял как делается нормальная структура CMS

Эх... Вот разбирал разбирал вопросы, пытался что-то делать, спрашивал, но проблему так и не решил, а вся она заключается в том, что не знаю как начать писать CMS, саму структуру.
Недавно написал, код выкладывал, мне тоже не нравится что у меня все запросы на индекс идут, вот я не пойму как по-другому сделать, чтобы вывод в конце страницы был всётаки... :(
Порекомендовали мне просмотреть коды CMS других, смотрел... В большинстве я не понимаю ничего, слишком они сложные и слишком много кода, он меня путает, мне нужна сама идея... Всего лишь идея, чтобы я наконец-то начал писать!
LDU CMS посмотрел, но она какая-то тупая, ничего там не работает почти... Да и ничего нету почти... И сама реализация не понравилась.
Как только разберусь с этим - мне помощь будет не нужна больше, по всему куча уроков есть, но по моей проблеме - которая щас, нету. За долгое время поиска не нашел.
А вопрос заключается в том, как строить правильную структуру CMS. Я из-за того что с этим вожусь - не могу остальные вещи начать писать, ведь сначала хочется ядро написать - а потом уже в этом ядре писать всё остальное и через него просматривать, да и очень удобно будет.

вот такая структура мне нравится, как фанат кстати предлагал:
PHP:
if (POST){
#получение инфы
#обработка
#запись
}
#инклудируем шаблон
Но у меня register.php отображается в шаблоне потом и PHP после вывода уже пишется, а я так не хочу... и не буду!

Не знаю как сделать в общем, помогите со структурой CMS. Ведь нигде уроков нет, как правильно CMS начинать писать...

И как вообще отделяется PHP от HTML... Я уже немного понимаю, но вот с запросами вопрос возник, из-за которого я долго в тупике... Только без использования всяких Smarty...
 

DiMA

php.spb.ru
Команда форума
скажи, нафига козе боян? Зачем тебе своя цэмэсе?
 

Safary

Новичок
ну... это долго обьяснять :)
опыт получить, свой сайт сделать, научиться программировать, своя сиэмэм - приятнее так скажем и её совершенствовать можно...

Ну мне главное структуру узнать как сделать...
 

DiMA

php.spb.ru
Команда форума
тогда возьми чужую, сделай сайт и по ходу все освоишь
или фреймворк
 

Safary

Новичок
на чужой сайт не хочется делать, а чужие и так пытаюсь разобрать, да че-то запутано там всё, а свою полностью бы понимал.

ну как сделать то мне? =) чтоб вывод в конце был и запросы обрабатывать... Ну очень надо узнать это. А то я пока не узнаю это на месте стоять буду....
 

Фанат

oncle terrible
Команда форума
А в чем вопрос-то?

-~{}~ 18.12.08 23:01:

1. PHP от HTML отделять не надо.
2. То, что ты называешь шаблоном - это только часть шаблона. Половина. Шаблон состоит из двух частей - общей для всего сайта и шаблона модуля.

Поэтому.
1. Сначала сделать шаблон регистрации.
2. Включить в шаблон сайта.
3. вызывать этот целый шаблон из регистер.пхп

я это тебе уже писал.
что до сих пор неясно?
 

Safary

Новичок
Понятно, но всёравно не полностью...
Это я сделал...

Теперь получается register.php - подключает обработчик, шаблон сайта, шаблон регистрации.

А как теперь с другими страницами поступать?

Точно также их делать? Тогда у меня такой вариант придумывается:
PHP:
INDEX.PHP проверяет $_GET['page']...
если $_GET['page'] == REGISTER то подключаем REGISTER.PHP
exit();
если $_GET['page'] ==  CONTACTS то подключаем CONTACTS.PHP
exit();

Ну и т.д.....
Такой вариант правильный будет?

Ещё ты спрашивал зачем мне массив $pages. Вот так как выше - без него получается, ты такой вариант имел ввиду? Ведь вариант с массивом тебе тоже не очень понравился.

И получается, на каждой странице инклудировать шаблон сайта? Страниц-то много... к примеру contacts.php, news.php, info.php, faq.php, register.php, login.php и т.д.
И на каждой из них главный шаблон инклудировать? Если нет, то как правильно?
 

Фанат

oncle terrible
Команда форума
Я так понимаю, что автоматический инклюд шаблона сайта ты считаешь высшм достижением программистской мысли, ради которого ты отдашь жизнь, честь и имущество.
А написать одну строчку в 5 скриптах - это такая сложная и изнурительная работа, что проще 5 раз спросить на десяти форумах, чем выполнить это.
 

x-yuri

Новичок
А вопрос заключается в том, как строить правильную структуру CMS.
единственно правильного решения нет

на чужой сайт не хочется делать, а чужие и так пытаюсь разобрать, да че-то запутано там всё, а свою полностью бы понимал.
если напишешь хорошую cms, то и с пониманием остальных проблем не будет

INDEX.PHP проверяет $_GET['page']...
если $_GET['page'] == REGISTER то подключаем REGISTER.PHP
exit();
если $_GET['page'] == CONTACTS то подключаем CONTACTS.PHP
exit();

Ну и т.д.....

Такой вариант правильный будет?
можно и так, только он с помощью switch обычно делается или вообще в несколько строк (http://phpclub.ru/talk/showthread.php?postid=829887#post829887)

И получается, на каждой странице инклудировать шаблон сайта? Страниц-то много... к примеру contacts.php, news.php, info.php, faq.php, register.php, login.php и т.д.
И на каждой из них главный шаблон инклудировать? Если нет, то как правильно?
тебе шаблон на большинстве страниц понадобиться, так что без его подключения не обойтись

а статья - хорошая (http://habrahabr.ru/blogs/php/31270/), имеет смысл начать с нее
 

Safary

Новичок
о привет всем!
Тока с работы пришел, ща буду програмить!
pilot911, этот текст мне в той теме давали, но он слишком сложен для меня пока что, ООП пока что не осмелюсь изучать, совсем другое программирование, как будто другой язык, даже на AS 1 немного похоже... Поэтому откладываю на потом, вроде большинство CMS не на ООП пишется, причем хорошие раскрученные CMS, ну я что-то типа PHP Nuke, только не дырявого хочу сделать, разумеется не сразу, сначала достаточно миниCMS сделать, в которой регистрация, форум, статистика посещений, опрос, галерея, загрузка файлов будет, а потом расширять уже.. Думаешь стоит мне сейчас ООП и эту статью изучать? Если стоит - то я конечно постараюсь, а если нет то обычным программированием пока позанимаюсь...

Фaнaт, ну почему в 5-ти, я хочу портал сделать, там меньше ста страниц точно не будет, а на 100 страницах инклуд прописывать... и темболее расширяться будет, я то хороший админ :)) ) буду, каждый день что-то добавлять буду.

x-yuri,
единственно правильного решения нет
это понятно, но хочется какое-то хорошее решение найти всетаки...

если напишешь хорошую cms, то и с пониманием остальных проблем не будет
Это я сейчас и пытаюсь делать =)

можно и так, только он с помощью switch обычно делается или вообще в несколько строк (http://phpclub.ru/talk/showthread.p...9887#post829887)
Вот, вроде удобный вариант, но тоже со своими траблами, кстати в LDU CMS, которую я недавно разбирал тоже CASE'aми сделано.

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

x-yuri

Новичок
вроде большинство CMS не на ООП пишется, причем хорошие раскрученные CMS, ну я что-то типа PHP Nuke, только не дырявого хочу сделать, разумеется не сразу
насколько я знаю PHP Nuke не считается хорошей CMS, она когда-то была популярна, и поэтому сейчас известна
Кстати, определись, что ты хочешь CMS или CMF. CMS скорее рассчитана на пользователей, чтобы человек, не особо разбирающийся в программировании мог что-нибудь быстро "налабать"... А CMF - на программистов, это каркас, с помощью которого можно создать довольно сложный сайт.

разумеется не сразу, сначала достаточно миниCMS сделать, в которой регистрация, форум, статистика посещений, опрос, галерея, загрузка файлов будет, а потом расширять уже
только учти, писать с нуля не просто, как минимум стоит пользоваться уже написанными библиотеками, а если будет время и желание, потом можно переписать их

Думаешь стоит мне сейчас ООП и эту статью изучать? Если стоит - то я конечно постараюсь, а если нет то обычным программированием пока позанимаюсь...
думаю стоит. Чем сложнее проект, тем нужнее ООП, оно для того и придумывалось
Ну и спрашивай, будет время, постараюсь помочь ;-)

- единственно правильного решения нет

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

- можно и так, только он с помощью switch обычно делается или вообще в несколько строк (http://phpclub.ru/talk/showthread.p...9887#post829887)

- Вот, вроде удобный вариант, но тоже со своими траблами
опиши траблы

- тебе шаблон на большинстве страниц понадобиться, так что без его подключения не обойтись

- на большинстве - это на всех динамических страницах получается, жалко не сделать так, чтобы было удобно... Так тоже не удобно получается...
что неудобного?
 

Фанат

oncle terrible
Команда форума
что ты несешь?
откуда у тебя там будет сто страниц? перечисли хотя бы 10
 

Иван 76

Новичок
Safary
Во первых, многие "старые" раскрученные CMS based on PHP начинали писаться задолго до того, как в PHP появилась серьезная поддержка классов. Поэтому они все в процедурном, а не ООП стиле.
По крайней мере, именно этим мотивирует отсутствие классов в своей КМС создатель Друпала.

Есть такое выражение, что PHP начинался как Си-подобный язык, а теперь стал как Java-подобный.

Что касается КМС написанных на Python, Java, Ruby - они все объектно-ориентированные, с использованием классов. Поэтому, фраза о том, что все известные КМС не используют классы, - ошибочно.

А по сему, - лучше не полениться, и начать использовать именно классы.

PHP-Nuke постарайся больше не смотреть в своей жизни.

Статью тебе дали очень хорошую. Сам зачитался.
Могу посоветовать скачать очень "простую" модель MVC - http://www.tinymvc.com/
Все очень просто, и в PHP5 ООП. Для изучения подойдет очень даже хорошо. Считай - готовая основа для КМС.

И напоследок. Возможно, ты правильно делаешь, что пишешь свою КМС. Потому что "выбрать" КМС из огромного выбора - ни чуть не проще. И чтобы уметь выбирать, надо обладать опытом.
Страшнее, когда ты неудачно выбрал КМС, и завязал на ней проект. Расплата в виде "немасштабируемости", "монолитности", "неуправляемости", "ресурсопожрательстве" и пр.

Иное дело - фреймверки. Подумай, - может быть это именно то, что тебе нужно. Посмотри Zend Framework or Symfony.
На Symfony есть готовые плагины (форумы, поиски и пр.), а так же CMS (например http://www.steercms-project.org/ ). (но мне Зенд нравится больше)
 

Фанат

oncle terrible
Команда форума
чувак скрипта от страницы отличить не может, что такое шаблон не понимает, а вы ему мвц, оопэ, ёмоё.
 

x-yuri

Новичок
а его цели лучше добиваться без "мвц, оопэ, ёмоё"?

-~{}~ 20.12.08 15:19:

да, Safary, эта на самом деле правда, что ты не можешь страницы от скрипта отличить, по крайней мере все на то указывает. Может с этого и начнешь? ;-)
 

Фанат

oncle terrible
Команда форума
сайт в три скрипта, index, news и guestbook реализует мвц. модель в базе, вью в шабло, нах, скрипты - контроллеры. роутер - веб-сервер апаче.
проблема засунуть оопэ в пэхапэ общеизвестна. натянуть оопэ на дискретное клиент-серверное приложение плюс реляционную бидэ - задача сложная даже для опытного проектировщика. в результате пишется только для красоты, шоп синтаксис был красивый.
по ссылке выше замечательный пример: "давайте сделаем объект с настройками. а теперь давайте сделаем так, чтобы к нему обращаться, как к массиву!". Чо было не сделать сразу массив?
и так во всем.
а вот без ёмаё не обойтись, это да.
 

x-yuri

Новичок
сначала достаточно миниCMS сделать, в которой регистрация, форум, статистика посещений, опрос, галерея, загрузка файлов будет, а потом расширять уже..
как видишь, задача несколько сложнее, или ты считаешь, что твой подход уместен для сайтов любой сложности? по поводу простых сайтов - я с тобой полностью согласен

по ссылке выше замечательный пример: "давайте сделаем объект с настройками. а теперь давайте сделаем так, чтобы к нему обращаться, как к массиву!". Чо было не сделать сразу массив?
предполагаю, что чувак цитирует свою реализацию и у него там в этом Registry дополнительные методы какие-то. Конечно, для той функциональности, которая в статье можно было просто обойтись массивом. Либо это была попытка продемонстрировать ArrayAccess.
 

Фанат

oncle terrible
Команда форума
а тебе не кажется, что товарищу еще рано миниCMS сделать, в которой регистрация, форум, статистика посещений, опрос, галерея, загрузка файлов?

-~{}~ 20.12.08 16:12:

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

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