Вместо CMS нужна система управления данными.

xintrea

Новичок
Вместо CMS нужна система управления данными.

Здравствуйте!

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

В общем, с некоторых пор пришло понимание, что найти ту CMS, которая нужна мне или хотя бы приближалась к тому идеалу что существует в голове - нереально. Практически все просмотренные мной CMS (drupal, e107, plone, sapid и т. д.) спроктированы с использованием каких-то высоких абстраций, как то "документ", "страница", "новость", и именно работа с этими абстракциями вынесены в веб-интерфейс.. С одной стороны это конечно правильно, но все же в основе лежит принцип - "вместо того, чтобы иметь статический HTML-сайт, делайте сайт на базе нашей CMS, вы его легко сможете модифицировать прямо в окне браузера".

Фактически, весь веб-инструментарий этих CMS крутится вокруг веб-интерфейсов
"управление древовидной структурой",
"создание шаблонов возможных данных"
"добавление/удаление/редактирование документа (страницы)"
+ работа с подключаемыми модулями.

Таким образом, эти CMS совершенно не подходят для выполнения сайтов "под ключ", где клиент ожидает человеческого интерфейса панели администрирования (часто - в стиле 1C) и не собирается разбираться в особенностях абстракций со странными названиями ("формат отображения", "темы", "блок", "типы содержания") используемых в CMS и прочими особенностями, торчащими в интерфейсе из-за попытки унифицированить представление объектов реального мира.


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

Smarty - шаблонный двиг
TinyMCE - визуальный редактор
Prado - базовая система для написания частей admin-интерфейса
MySQL - база данных

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


Но! В списке что я написал, не хватает еще одного компонента. А именно - системы, которая бы обеспечила интерфейс ввода данных в панели администрирования. Что я имею в виду.


Допустим, есть заказ - надо сделать каталог. Первый уровень - разделы (имя раздела, краткое описание), второй уровень - товары в разделах (название, описание, цена, фото). На физическом уровне, естественно, - это две базы со связкой один ко многим. Действия разработчика для создания базы разделов что-то в стиле:

Тыкаем "Новая база"
Система - "какое имя?"
Разработчик - "category".

Тыкаем "Добавить поле"
Система - задавай системное имя, видимое имя поля, тип (строка?, мемо?, цифирь?, файл? индекс?), регвыр для проверки, вводится пользователем или автоматически заполняется, еще чеготам...
Разработчик -
системное имя - "name",
видимое имя - "Наименование раздела",
тип - строка,
регвыра - символы и цифры.
вводится пользователем - да

Тыкаем "Добавить поле"
Cистемное имя - "about",
видимое имя - "Описание раздела",
тип - Memo,
регвыра - символы и цифры.
вводится пользователем - да

Тыкаем "Добавить поле"
Cистемное имя - "key",
видимое имя - "Ключ раздела",
тип - индекс,
регвыра - пусто, не используется.
вводится пользователем - нет

Тыкаем "Создать базу".

Создание базы товаров происходит аналогично.

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

То есть, пользователь должен имееть возможность жмякнуть "Каталог" - "Разделы", видит список разделов, жмякает "Новый элемент", и система сама ему выдает форму для заполнения:

Наименование раздела [......................]
Описание раздела [........................]
[Ok]

Пользователь вводит имя, описание, жмет Ok. Все. В базу category добавилась запись, причем с проверкой полей, если проверка не пройдена - стема пишет что недопустимые символы в таком-то поле и предлагает тут же исправить...

Пользователь жмякает - "Каталог" - "Разделы" - выдит список разделов -выбирает раздел - видит список товаров, жмякает "Новый элемент", и система сама ему выдает форму для заполнения:

Нименование товара [......................]
Описание товара [......................]
Цена [......................]
Фото [......................] [обзор]
[Ok]


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

Желательные требования к системе - OpenSource :)

Или я хочу невозможного?
 

ПРЕВЕД

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

xintrea

Новичок
Автор оригинала: Апокалипсис
IMHO этот вопрос больше относится к "Ищу готовое решение", перемещаю...
Точно, не возражаю. Лишь бы этот раздел знающие люди просматривали.
 

AP

Новичок
xintrea, почему не возможно? напиши сам, так проще будет!
 

xintrea

Новичок
Автор оригинала: AP
xintrea, почему не возможно? напиши сам, так проще будет!
Я то написал, но то что написал - мне не нравится (см. xi.net.ru, правда щас хостер в дауне). Потому что начал писать давно, не зная толком и 5% PHP, потом тянул-тянул кота за яйца, дорабатывал то есть. Под новые проекты. Причем так, чтоб оставалась совместимость ядра со старыми проектами.

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

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

AP

Новичок
xintrea, Реально то что ты описал писать день отсилы!
 

Angerslave

Новичок
Кстати, я тут сам задумался написать такой модуль для своей ЦМСки... Что-то даже обдумывать начал, но если есть готовые решения, тем лучше. Сэкономит массу времени и сил... Это ж готовые "Новости", "Статьи", "Каталог продукции", "Дискография" и т.д....
 

zerkms

TDD infected
Команда форума
Angerslave
в этом случае ты очень сильно жертвуешь возможностями и производительностью в угоду "гибкости"
 

Angerslave

Новичок
zerkms, в большинстве случаев и нужен типичный дизайн, типичная форма вывода, всё типичное. Только адаптация под конкретные условия разная. Например доска объявлений по недвижимости и доска объявлений по автомобилям... Ну а производительность... В большинстве случаев эта система не рухнет под нагрузкой, которая будет составлять 10-20 человек в минуту макс.
 

xintrea

Новичок
Автор оригинала: AP
xintrea, Реально то что ты описал писать день отсилы!
Вот жеж, а я три года писал... По вечерам. Глюки вылавливал, дорабатывал...

Кста, может я отстал от жизни и теперь такие системы за пол дня пишут... Готов заплатить тебе 50 грин за день работы да к тому же написать для тебя подробное ТЗ. Чтоб ты сделал не больше и не меньше, чотко по ТЗ. Если решишь подработать - обращайся. Оплату делаю по результату, можно с протекцией сделки с привлечением третьей экспертной стороны.

-~{}~ 08.05.07 01:55:

Автор оригинала: baev
Лично меня вполне устраивает вот это:
http://elfisk.dk/index.php?module=pagesetter&func=viewpub&tid=10&pid=1
Да, спасибо, это похоже на то, что нужно.

Поковырялся немного, почитал, и есть пара вопросов.

Вот конкретный пример - хотим реализовать на базе этой системы форум (дико, но для примера пойдет). Простой форум, без регистрации, на трех базах.

1. База разделов
2. База тем
3. База мессаг

То есть, в разделе может быть несколько тем, в каждой теме несколько мессаг. Дерево с тремя уровнями короче. В базе разделов один набор полей, в базе тем другой набор полей, в базе мессаг третий набор полей. Эти базы легко создать в Pagesetter. Скрипт модуля форума будет распихивать по этим базам сообщения, (работать только на добавление) его щас не рассматриваем.

Вопрос - как в этой системе дать модератору добираться до любой записи форума, редактировать ее, удалять? Причем добираться до записей через нормальную логику интерфейса - пользователь выбирает раздел -> тему -> мессагу -> действие над выбранным объектом... Пока только понял как можно редактить одну планарную базу. Но это есть и в моей системе, этого мало.

Понял что можно работать с категориями, создавать дерево. Может категории каким-то боком можно для представления баз разделов и тем прикрутить? Однако у категорий вроде как фиксированное количество параметров - Title, Value, Description и все. Так что использовать категориййные функции для интерфейса выбора в дереве с тремя уровнями невозможно. Возможно я неправильно понял, туго у меня с англицким, но сложилось именно такое впечатление.

Вот, коль вы используете эту систему, прошу просвятить меня по данному вопросу.
 

baev

‹°°¬•
Команда форума
«Дайте воды напиться.
А то так проголодались, что переночевать негде...»


xintrea, при чём тут «форум»?
Вы же всё про различные виды «документов», генерируемых администрацией сайта писали?
 

xintrea

Новичок
Автор оригинала: baev
«Дайте воды напиться.
А то так проголодались, что переночевать негде...»


xintrea, при чём тут «форум»?
Вы же всё про различные виды «документов», генерируемых администрацией сайта писали?
Ну хорошо, не форум, а например каталог MIDI-мелодий, что сути не меняет. Тоже дерево. Состоит из баз

1. Разделы (Название, описание. ROCK, POP, RAP, CLASSIC, ETHNIC...)
2. Исполнитель или группа (Название, описание, фотография)
3. Альбом (Название, год)
4. Мелодия (Название, MIDI-файл, описание)

Каждая база связана с предыдущей один-ко-многим.

Вот. Админ сайта должен иметь возможность наполнять такую структуру. Админ - тупая тетя, которая в музыке еще кое-как разбирается, а в компах не очень. Ей нужно разместить MIDI-файл группы НогуCвело из альбома 1992 года "Хару Мамбуру" в этом каталоге. То есть в идеале

- Выбрать раздел (или создать если такового еще нет)
- Выбрать исполнителя или группу (или создать если такового еще нет)
- Выбрать альбом (или создать если такового еще нет)
- Добавить мелодию с описанием

Возможно ли в системе Pagesetter организовать такой интерфейс? Я так понял (возможно я не прав!) что дерево в Pagesetter может строиться только из однотипных разделов с полями Title, Value, Description. А так как мне нужно - на первом уровне одни поля, на втором - другие, на третьем третьи - такого в Pagesetter не обнаружил. Поэтому и возник вопрос к вам как опытному пользователю этой системы.
 

baev

‹°°¬•
Команда форума
Я так понял (возможно я не прав!) что дерево в Pagesetter может строиться только из однотипных разделов с полями Title, Value, Description.
— да, именно так.
 

AP

Новичок
незнаю как в Pagesetter, но это обычных каталог с динамическими полями!
 

xintrea

Новичок
Автор оригинала: AP
незнаю как в Pagesetter, но это обычных каталог с динамическими полями!
Урл на рабочую реализацию в студию!

PS: А ТЗ я уже сочиняю, как рожу - покажу.

-~{}~ 24.05.07 21:44:

Кста, нашел нечто похожее на то что надо

Лесом называется. Да-да, вот так вот просто и незамысловато - лес. Или леса, хз. Даю ссылку интересующимся.

http://manual.cakephp.org/chapter/scaffolding
 

tf

крылья рулят
Нименование товара [......................]
Описание товара [......................]
Цена [......................]
Фото [......................] [обзор]
[Ok]
непонимаю, ну вот почему нельзя теже параметры для модуля прописать просто в одном файле, для модуля
зачем нам надо лезьдь в базу и создавать связи, а потом страдать из-за ускости реализации и невозможности сделать что-то уникальное?
 
Сверху