Показать полную графическую версию : простенькая CMS
Surround
03-10-2007, 08:50
Товарищи! нужно решение проблемы.
Стоит задача написания простенькой CMS - то есть только для добавления/удаления/редактирования разделов сайта. Так вот, был бы благодарен за идею, каким механизмом это все сделать, в смысле в какой форме лучше записывать отредактированную структуру в базу и считывать ее оттуда при открытии сайта, или вовсе без базы как-то обойтись.
pasha4ur
04-10-2007, 20:35
Что-то ответов не густо. Мне тоже это интересно. Пока пытаюсь рахобраться с Joomla
Surround
04-10-2007, 21:32
а все пытался выдумать всяческие условные обозначения в таблицах, но как-то это все скользко...
pasha4ur
05-10-2007, 19:41
В программирование больше чайник.
Шаблон.
Таблица разделов.
№ по списку- название раздела
Содержание разделов
№ по списку - содержание.
Бахаешь новый раздел и он по умолчанию в содержание вставляет "пустое тело" или "Раздел под разработакой".
Построение меню.
Считываешь сколько в первой таблице записей и потом .....
Пользователь заходит, на сайт, например www.my***/page/4. Apache при помощи модуля rewrite разбивает адрес и передает в программу строку запроса page/4. Скрипт PHP видит что ему нужно произвести действия page – вывести страницу с номером 4, и делает запрос базу данных, из которой возвращается содержимое и название странички. Далее данные передаются в шаблонизатор и подставляются в шаблон темы.
Если хотиете работать с шаблонами и пхп, то присмотритесь к smarty (http://ru.wikipedia.org/wiki/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
06-11-2007, 23:55
так вот ступор с самой идеей организации считывание/запись структуры разделов
vadimiron
07-11-2007, 12:38
Surround,
Придумываем свою структуру XML и всё - описание готово
А уж где эти XML хранится будут - это неважно
Surround
07-11-2007, 19:24
vadimiron, хм... ну просто же все это должно храниться в какой-то описательной форме в БД... и неясно, как увязан xml здесь. :sorry:
vadimiron
08-11-2007, 11:28
Surround,
Вот эту "описательную форму" Вам придётся самому придумывать в зависимости от того, какие у вас планы-требования.
Порисуйте схемки объектов, которыми хотите управлять, потом перенисите всё это на систему классов и таблиц в базе данных.
Можно исользовать тот же Smarty в качестве движка.
По иерархии на самом верху стоит Коллекция страниц. Можно сделать шаблон, отвечаюхщий за расположение стандартных элементов на странице (меню и тд). В этом шаблоне будет раздет "Content" - вот как раз этот раздел наполняют конкретные модули и тд... Дизайн (или тема) можно хранить в XML-описаниях (например, чтобы описать лого для сайта и другие дизайнерские элементы) + CSS для всех элементов
То же самое например, для списков: должно быть минимум два шаблона: один для самого списка и ещё один для отображения элемента + CSS-стиль можно выносить ещё в один файл.
Вся эта схема независит от того, как она будет хранится: можно шаблоны просто файлами хранить, а можно их содержимое в базу писать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.