![]() |
простенькая CMS
Товарищи! нужно решение проблемы.
Стоит задача написания простенькой CMS - то есть только для добавления/удаления/редактирования разделов сайта. Так вот, был бы благодарен за идею, каким механизмом это все сделать, в смысле в какой форме лучше записывать отредактированную структуру в базу и считывать ее оттуда при открытии сайта, или вовсе без базы как-то обойтись. |
Что-то ответов не густо. Мне тоже это интересно. Пока пытаюсь рахобраться с Joomla
|
а все пытался выдумать всяческие условные обозначения в таблицах, но как-то это все скользко...
|
В программирование больше чайник.
Шаблон. Таблица разделов. № по списку- название раздела Содержание разделов № по списку - содержание. Бахаешь новый раздел и он по умолчанию в содержание вставляет "пустое тело" или "Раздел под разработакой". Построение меню. Считываешь сколько в первой таблице записей и потом ..... |
Пользователь заходит, на сайт, например www.my***/page/4. Apache при помощи модуля rewrite разбивает адрес и передает в программу строку запроса page/4. Скрипт PHP видит что ему нужно произвести действия page – вывести страницу с номером 4, и делает запрос базу данных, из которой возвращается содержимое и название странички. Далее данные передаются в шаблонизатор и подставляются в шаблон темы.
|
Если хотиете работать с шаблонами и пхп, то присмотритесь к smarty.... мануал на нее и сами скрипты http://www.smarty.net/manual/ru/
Структура может быть разной... 1) через переменные: т.е. у нас запрос идет всегда к одной единственной странице index.php к которой просто передаются переменные index.php?razdel=first&do=registration&part=second а дальше срипт нам подкружает наш первый раздел в первом разделе переходит на страничку регистрации, и эта страничка отображает вторую часть нашей регистрации Для примера могу привести SlaedCMS 2) через "хитрые" переменные: тут отличается от первого пункта тем, что переменные у нас "хитрые" index.php?razdel=first_registration_second&do=some данная переменная разбивается на пункты и загружается сразу страничка /first/registration/second точнее не загружается а подгружается её скрипт в нудном для нас месте. Структура сайта здесь расчитана на то что у нас все нужные нам странички расположены в определенных папках, притом каждая следующая папка может наследовать какой-то код предыдущей простым присоединением include("../some_script.php"); ну и заодно еще получаем переменную do (если честно... то глючный способ, но вполне достойный жизни) 3) через "папки": данный вариант удобен при работе со смарти, т.е. у нас есть папочка к примеру registration в котрой есть свой index.php и при переходе на some.sait/registration/ мы загрузим этот index.php в котром уже прописан какой-то скрипт и загружается соответсвующий шаблон, ну и естественно мы можем передавать туда переменные some.sait/registration/second/?do=login плюсы: модульный тип, т.е. можно написать модуль который будет подгружаться при указании razdel=module_name (или во втором случае это первый пункт до подчеркивания, в третьем это вообще вся папка) и дальше уже будет работать этот модуль, есть возможность работы с шаблонами, в любом из трех вариантов ты отсылаеш пользователя на нужный тебе скрипт с нужными параметрами (переменными) который уже считывает с нужной базы данных информацию согласно параметрам. Организация же базы данных это отдельный вопрос и каждая таблица зависи от возлагаемых на нее функций. Для примера если взять какой-нить блог. 1 таблица с именами разделов(каждый раздел со своим id) 2-я с именами пользователей (все пользователи под своими id) 3-я с названиями и содержаниями постов, в котором присутствуют столбик с иди пользователя написавшего это, иди раздела; 4-я таблица это таблица ответов, в которой есть столбик иди поста, столбик сомого сообщения и столбик иди пользователя. Почему вынес иди отдельно? потомучто цифры проще передавать в ссылках браузера, они занимают меньше места в бд, да и поиск по ним производить проще %) |
так вот ступор с самой идеей организации считывание/запись структуры разделов
|
Surround,
Придумываем свою структуру XML и всё - описание готово А уж где эти XML хранится будут - это неважно |
vadimiron, хм... ну просто же все это должно храниться в какой-то описательной форме в БД... и неясно, как увязан xml здесь. :sorry:
|
Surround,
Вот эту "описательную форму" Вам придётся самому придумывать в зависимости от того, какие у вас планы-требования. Порисуйте схемки объектов, которыми хотите управлять, потом перенисите всё это на систему классов и таблиц в базе данных. Можно исользовать тот же Smarty в качестве движка. По иерархии на самом верху стоит Коллекция страниц. Можно сделать шаблон, отвечаюхщий за расположение стандартных элементов на странице (меню и тд). В этом шаблоне будет раздет "Content" - вот как раз этот раздел наполняют конкретные модули и тд... Дизайн (или тема) можно хранить в XML-описаниях (например, чтобы описать лого для сайта и другие дизайнерские элементы) + CSS для всех элементов То же самое например, для списков: должно быть минимум два шаблона: один для самого списка и ещё один для отображения элемента + CSS-стиль можно выносить ещё в один файл. Вся эта схема независит от того, как она будет хранится: можно шаблоны просто файлами хранить, а можно их содержимое в базу писать. |
Время: 16:48. |
Время: 16:48.
© OSzone.net 2001-