Forum Webscript.Ru

Программирование => PHP => Тема начата: Ilya Shuma от 13 Апреля 2005, 18:10:35

Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 13 Апреля 2005, 18:10:35
Всем привет!
Вот возникла потребность написать CMS на php. Не обошлось без проблем.
С php потихоньку разбираюсь, ман, форумы, тут все впорядке.
Но не могу для себя определить именно концепцию cms,  ее структуру.
Посему вопрос к вам.
Как вообще работает смs? какие варианты существуют?
Мне не нужны скрипты, нужна идея, что ли.... А реализовать-то дело нехитрое :)

Заранее огромное спасибо!!!
Название: Принцип работы различных CMS...
Отправлено: AliMamed от 13 Апреля 2005, 18:58:15
работает это так:
для редактора:
через удобную морду записываются данные для показа пользователям.
для посетителя:
данные кладутся на шаблоны ну или наооборот.
Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 13 Апреля 2005, 19:35:22
Ну это понятно, лежит на поверхности :) Мне не понятна концепция работы скриптов (т.е. выполняемых ими функция). Как лучше обработать данные из форм, что лучше использовать для хранения, файлы или базу и т.д.
Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 13 Апреля 2005, 20:16:12
Что пришло в мою дурную голову :)

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

Что я делаю.

Создаю шаблон, в котором вывожу значение переменных:
- текст
- заголовок

основные ссылки:


и т.д.

И второстепенные



Далее создаю файл conf.php, в которром содержится вся информация о страницах в виде массивов.



$pages = array ();

// информация о основных ссылках
$pages[\'mainlinks\'] = array
(
\'link1\' => \'somevalue\',
\'link2\' => \'somevalue1\',
);
//информация о странице index:
$pages[\'index\'] = array
(
\'title\' => \'sometitle\',
\'text\' => \'some text\',
                 //указываю, какие ссылки активные, а какие-нет

\'link1active => \'active\',
\'sublink1active\'=> \'\',

//информация о подссылках
\'sublink1\' => \'\',
\'sublink1a\' => \'\',
\'sublink1href\' => \'\',
);

......................
и все в таком же духе...
далее создаю файл, связывающий шаблон с conf.php - process.php

$text = "{$pages["{$pagen}"][\'text\']}";
$title = "{$pages["{$pagen}"][\'title\']}";
$mainl1 = "{$pages[\'mainlinks\'][\'link1\']}";
$mainl1a = "{$pages["{$pagen}"][\'linkmain1a\']}";
.............

Далее создаю непосредственно страницы.
Код для каждой страницы следующий:

include "conf.php";
$pagen="index"; //идентификатор, используется в href`ах, при обращении к массиву
include "pagesource.php";
?>


Вот. Отделение шаблона и кода.

Ну а далее администрирование:
Создаем шаблон админского интерфейса с текстареями, чекбоксами и т.д., значения в которые подставляем из тех же переменных, которые использует основной шаблон. Далее редактируем, передаем post`ом значения в файл write.php, который изменяет значения массива....


Что скажете о таком способе? Меня что-то смущает запутанность. Чувствую, что можно все ужать, но как пока недотумкаю :)

Буду благодарен за мнения :)
Название: Принцип работы различных CMS...
Отправлено: CGVictor от 13 Апреля 2005, 23:23:15
Цитировать
Ilya Shuma:
Как вообще работает смs? какие варианты существуют?

ЦМС работает так, как напишешь.

Вот, может, будет интересно:
http://www.livejournal.com/users/cgvictor/20840.html
[off]Стараюсь, чтобы выглядело не как реклама[/off]

Цитировать
Ilya Shuma:
Что скажете о таком способе?

Я бы просто сделал дерево (да хоть nested trees) и подключал бы к узлам физические файлы. Проще было бы.
Название: Принцип работы различных CMS...
Отправлено: Меняздесьдавнонет от 13 Апреля 2005, 23:50:17
Ilya Shuma
лично я бы меню сделал в виде ini-файла
читать его можно через parse_ini_file()

но вообще такая структура неправильная.

тебе надо разделить скрипты и данные.
в меню описываются только скрипты.
а данные лежат себе там, где лежат - в файлах или базе.
и список ссылок на них строится динамически.
к примеру, в меню у тебя ссылка на скрипт новостей.
а уже этот скрипт читает новости, к примеру из файла, и выводит ссылки-заголовки.
Название: Принцип работы различных CMS...
Отправлено: Croaker от 14 Апреля 2005, 14:30:17
Цитировать
Ilya Shuma:
Вот возникла потребность написать CMS на php.


Вы уверены, что у вас именно такая потребность? Зачем вам именно CMS? Почему вы не хотите воспользоваться доступными бесплатными CMS?
Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 14 Апреля 2005, 15:00:12
Croaker
Хочу сам написать :) Ведь знание синтаксиса языка недостаточно. Важно понять семантику, принципы, концепцию программирования. А практика этому, по-моему, способствует :)
Название: Принцип работы различных CMS...
Отправлено: Croaker от 14 Апреля 2005, 15:12:44
Была на эту тему статья давным-давно, на detail.phpclub.net. Смысл ее сводился к тому, что учиться писать надо не на крупный проектах (там в качестве примера был приведен форум, тут - цмс, не суть важно), а на небольших задачах.

ИМХО: Чтобы написать хорошую ЦМС, нужно четко представлять себе - зачем она нужна. Но не в том смысле, что "она нужна чтобы научится писать программы", а в том "какие задачи будет решать моя ЦМС" или, что  на практике чаще происходит, "мне нужно решить такие-то такие-то задачи и для этого мне требуется написать ЦМС с такой-то функциональностью".
Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 14 Апреля 2005, 16:38:37
Croaker
Ну я, вероятно, не совсем корректно выразился... Я не говорю об универсальной cms с  широким диапазоном возможностей и настроек. То, что мне нужно, можно, скорее, назвать небольшой администраторской панелью. Клиент хочет самостоятельно обновлять тексты, добавлять и удалять ссылки. Воть :)

А про то, что учиться надо на небольших примерах я полностью согласен. :beer:
Название: Принцип работы различных CMS...
Отправлено: CGVictor от 15 Апреля 2005, 19:23:55
Цитировать
Ilya Shuma:
То, что мне нужно, можно, скорее, назвать небольшой администраторской панелью. Клиент хочет самостоятельно обновлять тексты, добавлять и удалять ссылки. Воть

Вот и замечательно. Значит, есть место, где тексты и ссылки храняться. Нужно сделать отдельный интерфейс для изменения этих данных и прикрутить к нему проверку доступа.
Вопрос-то в чем?
Название: Принцип работы различных CMS...
Отправлено: Ilya Shuma от 15 Апреля 2005, 23:20:22
CGVictor
Да я уже разобрался, сделал выводы :)

Спасибо всем!