Анонс компонента TreeCat

2006
Доброго всем времени суток!
Предыстория:
Давным давно в далекой галактике я решил заняться веб-программированием, с чего начать - запрос в Яндекс, первая CMS - Joomla, компонентов, шаблонов - море, php код не понимаю совершенно. Нашел как-то раз компонент, позволяющий создать любую структуру данных - под статьи, блоги, доску объявлений, каталог фирм и т.д. Поставил - до сих пор крутится на одном из сайтов.

Итак, прошло время, появился небольшой опыт в php, и в начале лета я принял решение сделать такой же компонент под InstantCMS. На самом деле, и каталог статей и доска объявлений, блоги, каталог фирм или просто каталог, имеют одну и ту же внутреннюю структуру. Это категории и вложенные в них элементы, отличающиеся только полями. Назовем вышеупомянутые компоненты - приложениями, в них будут категории и соответственно элементы.
Также очень хотелось сделать интерфейс управления структурой приложений - то есть не руками в базе добавлять(удалять) поля, а в админке. А также прозрачную и удобную систему управления доступом, которая при этом работает правильно - если стоит на категории доступ чтения только пользователи сайта - то гости ниоткуда не смогут попасть в эту категорию, тем более прочитать элементы этой категории.
За небольшое время был продуман движок и структура БД, написаны пара тестовых приложений. И через какое-то время выходит первый пост про InstantCMS 2. Вы знаете - идеи очень схожи, только вот вторая версия больше на фреймворк походит. У меня же просто суперУниверсал для 1.9 smile .

Итак анонс:
Компонент TreeCat. Целевые версии InstantCMS 1.9-1.10 (может быть 1.8). В 2.0 думаю все это будет в ядре системы, так что 2.0 в планах пока не обозначено. Честно сказать, я пока еще не смотрел код второй версии, чтобы ненароком ничего не скопировать.

0) Система url-ов. Компонент один - url`ы разные. Понятнее всего будет на примере:

http://сайт.рф/iboard Доска объявлений
http://сайт.рф/iboard/jilie Категория Жилье
http://сайт.рф/iboard/kvartiry подкатегория Квартиры в категории Жилье
http://сайт.рф/iboard/avto Категория Авто
http://сайт.рф/iboard/raznoe Категория Разное
http://сайт.рф/iboard/prodam-kvartiru-4.html - объявление "Продам квартиру" в подкатегории Квартиры

http://сайт.рф/iblog Блоги
http://сайт.рф/ifirmy Каталог фирм
http://сайт.рф/iphotos Фотокаталог(или фотоблог) smile

Все эти ссылки обрабатывает один компонент. Вам нужно только нарисовать шаблоны.
Также есть встроенный уникализатор ссылок на элементы(посты),категории и загружаемые картинки.
При желании можно вынести все картинки на другой сервер, также есть автогенератор миниатюр картинок(с кэшем и с определенным набором размеров 50x50, 100x200, 500x500, и т.п.)

1) БД - описание структуры таблиц приложений хранится в таблице. Соответственно менять поля очень легко. Структура дерева категорий сделана (почти доделана smile ) на Materialized Path(mpath), подумал, что так будет меньше ошибок и нагляднее. Тем более потому, что есть опыт построения каталога на NOSQL с помощью mpath. Также есть централизованное хранилище основных данных в одном месте - посмотрим как это будет работать на больших объемах smile .
2) Иерархия и поля компонента:
Приложения - Категории - Вложенные категории - элементы категорий.
Поля элементов - число, вещ.число, строка, текст, картинка, галерея картинок, чекбокс, радио, список значений(+выпадающий), зависимый список значений, город (geoip) и т.д.

3) Система управления доступом: права выставляются на просмотр, добавление, редактирование, удаление) приложений, категорий, подкатегорий и при желании элементов). Права можно выставить либо на группу, либо на конкретного пользователя.
4) Шаблоны. Шаблонизатор Smarty либо (в планах) чистый php-include. Как вариант может быть реализована система плейсхолдеров.
На данный момент реализована система - создаются шаблоны на просмотр категории, элемента, указывается для каких приложений(категорий) какой шаблон и все работает. В шаблонах нужно указать только значения полей приложения.
5) Автоматическое создание форм добавления-редактирования с возможностью указания зависимых полей (как на AVITO.RU). Т.е. в зависимости от значения поля, будут показаны или скрыты какие-то дополнительные поля. Например в доске объявлений - Продам автомобиль. Поле <Пробег>, значения "Новый", "С пробегом". При выборе второго значения в форме появятся два дополнительных поля "Пробег в км." и год выпуска. Все это при сохранении само запишется куда нужно, при редактировании появится все на своих местах. Еще раз повторю - поля любые.
6) Автополя для сортировки. Нужно только указать поля в описании (Сортировка по этому полю), чтобы появилась форма сортировки на фронтенде сайта, соответственно в категории можно указать(а можно и унаследовать), показывать ли форму сортировки.
7) Фильтры. В планах. Идею честно признаться спёр из второй версии. Хотя кто знает как она у меня получится. smile
8) Мощная система плагинов на всё и вся. Вот с помощью них можно будет вносить дополнительный функционал

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

В любом случае, версия для 1.9 (а потом и для 1.10) будет. Пока не знаю, платно ли или бесплатно, думаю основные приложения будут бесплатны, а специфические, с применением "напильника" будут за денежку.

Ваш Крот.
Комплект плагинов Registration Helper v.1.10 | Компонент iPoster v.1.0 beta. Подписка на рассылку + Инвайтер.
Комментарии (56)
Роман 11 декабря 2012 в 20:29 0
Ройте дальше :)) Интересное направление
Крот 11 декабря 2012 в 20:47 +1
забыл написать - также будет интегрирован компонент авторассылки новых элементов по подписке на почту, по смс, выгрузка в группу Вконтакте(уже работает), в ЖЖ, может быть в твиттер.
Скоро будет компонент рассылки по этому поводу(с поддержкой стандартных и премиум компонентов ICMS)
Крот 11 декабря 2012 в 20:52 +3
думаю, еще обязательно нужен будет импорт данных из стандартных компонентов, (а может и не из стандартных smile )
Anonim 11 декабря 2012 в 20:58 +2
ХОть один человек публично решился "понимать" это положение. Ведь проще некуда - одно приложение - много контента.

В профиле человека - ссылка - НАПИСАТЬ - жмет, и выбирает, написать на форум, статью, в блог, объявление, видео! Все что угодно - 1 кликом! Не ужели это так сложно понять, товарищи разработчики?!
Крот 11 декабря 2012 в 20:59 0
это просто удобнее, и пользователю и разработчику
lokanaft 11 декабря 2012 в 21:15 0
Минона, неужели нельзя в шаблоне в одном месте все ссылки собрать?
Крот 11 декабря 2012 в 21:20 +1
дело не в ссылках - например легко можно сделать "Мою живую ленту" со всем моим контентом и с комментариями к элементам. Все же в одной таблице лежит.
Ленивый 11 декабря 2012 в 21:40 +1
Крот:
Все же в одной таблице лежит.
не спешил бы я утверждать, что это хорошо...
Крот 11 декабря 2012 в 21:44 +2
1) а я и не спешу, время покажет
2) не фейсбуки делаем) думаю 100 тыр. записей будет без проблем обрабатываться

P.S. в одной таблице - подразумевается только 3 разных айдишника лежит, все остальное отдельно smile
Anonim 11 декабря 2012 в 23:25 0
Зачем? Делаете один компонент и модели - блог, статья, форум, видео - НЕТ?
IRATE 11 декабря 2012 в 22:37 0
Как в Windows phone лучше - можно дать системе выбрать в какой системе клиент находится в онлайн, а можно самому выбрать.
eoleg 11 декабря 2012 в 21:40 +2
Крот , не отвлекайтесь, порадуйте нас к новому году. )
eoleg 11 декабря 2012 в 21:45 +2
Обязательно нужно мощную систему фильтров с возможностью их формирования как по количеству полей так и по условиям.
Крот 11 декабря 2012 в 21:48 +2
примеры нада)
сам себе задачи придумываю и потом решаю)
eoleg 11 декабря 2012 в 22:03 +1
Имею в виду создание формы в которой например создается условие выборки данных
поле1 имеет значение - ххх
поле2 больше 555
поле3 >100 b < 200
сортировать по полю4
ну примерно так
Крот 11 декабря 2012 в 22:20 0
т.е. заранее создать несколько условий и назвать Набор1
потом еще несколько - Набор2 (как во второй версии)

или указываем поля, которые могут участвовать в фильтре - выводим сбоку модуль-фильтратор (или напрямую в компоненте)?
eoleg 11 декабря 2012 в 22:28 0
ну вообще применение фильтров ведь будет практически везде но на каждом сайте по разному, поэтому может наборы будет правильнее так как схема будет:
сайт-одна, две, .. ну максимум 10 задач
тоесть определили задачу и сформировали под нее форму с фильтром
eoleg 11 декабря 2012 в 22:30 0
http://nizhniy-novgorod.dns-shop.ru/catalog/45/
или вот например реализация фильтров
eoleg 11 декабря 2012 в 22:32 0
там слева фильтр
Крот 11 декабря 2012 в 22:37 0
ок, посмотрю
Крот 11 декабря 2012 в 21:47 +2
чуток скринов, чтобы не быть голословным
Добавление новой записи в доску объявлений (тестовый вариант)
""
Изображение уменьшено. Щелкните, чтобы увидеть оригинал.


2 админки
приложения
""
Изображение уменьшено. Щелкните, чтобы увидеть оригинал.

настройка прав
""
Изображение уменьшено. Щелкните, чтобы увидеть оригинал.
lezginka.ru 11 декабря 2012 в 21:59 +10
+
хотя смутно понял, что предлагает товарищ крот, но видно, что-то очень умное :))
Dost 11 декабря 2012 в 22:40 +2
Порадовал, не один я такой))
universe 11 декабря 2012 в 22:33 +1
с этого и надо было начинать писать Инстант=) Как я понял в 2 будет это реализовано. Если будет все по умному и без багов то продавайте....
Dost 11 декабря 2012 в 22:41 0
Плюс однозначно!
Harconen 12 декабря 2012 в 04:07 +1
все на пальцах показал вы дайте пошупать посмотреть что почем ваш Компонент TreeCat.
Марат 12 декабря 2012 в 07:16 +3
+ просто молодец
Для тех, кто не понимает. Подобное уже реализовано в версии 2.0(пока ещё в демо версии). Разработка Крота помогает внести данную концепцию(один компонент - разный контент) в более ранние версии(1.9 и 1.10). Пока ещё не вникал ни в 2.0, ни в данный компонент. Просто разжевываю то, что сам понял. Ну, если правильно понял, конечно )))
Zau4man 12 декабря 2012 в 08:35 0
Отлично. Типа мои любимых iblock в битрикс smile ждем ждем smile часть сайтов все равно останется на 1.10
AndroS 12 декабря 2012 в 19:36 0
Мегаплюсую! ориентировочно в свет когда выйдет сие чудо?
Крот 12 декабря 2012 в 21:21 +1
ну вы понимаете же, что работы там достаточно)
Первым будет демо - статьи, доска объявлений, блоги. Далее посмотрим.
Azura 12 декабря 2012 в 19:51 0
Супер!!!! Будем ждать!!! Вот я понимаю оптимизация будет....=)))
Крот 12 декабря 2012 в 21:19 +2
спасибо за поддержку
да, после написания еще оптимизация будет обязательно)
еще сегодня получилось настроить php-отладчик, быстрее дело пойдет smile
Александр I 13 декабря 2012 в 20:19 0
В мемориз. Однозначно!
eoleg 17 декабря 2012 в 16:33 0
Чё там, как успехи? :=)
Крот 20 декабря 2012 в 00:46 0
в процессе, закончу с подписками, продолжу
Harconen 20 декабря 2012 в 11:19 0
да посмотреть что тут получилось )
Константин Г. 10 января 2013 в 16:35 -1
вкратце можно чо за компонент?
Крот 10 января 2013 в 18:09 0
выше в комментах тов. Лезгинка объяснил)
AndroS 10 января 2013 в 18:21 0
Что-то очень умное? :)
Константин Г. 10 января 2013 в 18:57 0
Та я ж непонял. Чем-то похожее на друпал? те по блокам сайт делать?
Константин Г. 10 января 2013 в 19:00 0
кстати ссылки неработают
Крот 10 января 2013 в 19:04 +1
они и не должны)
это фильтр сработал просто
Константин Г. 10 января 2013 в 19:00 -1
кстати ссылки неработают
Константин Г. 10 января 2013 в 19:38 -1
Дак чо за плагин-компонент?
Крот 10 января 2013 в 19:53 +1
еще раз - компонент, позволяющий создать любую структуру данных - под статьи, блоги, доску объявлений, каталог фирм и так далее...
Константин Г. 27 февраля 2013 в 21:15 -1
я не понял что за структуру. структуру чего? что это такое?
Александр I 25 февраля 2013 в 21:18 0
Крот, как дела продвигаются с компонентом?
universe 22 мая 2013 в 20:55 0
Походу совсем забросил
Александр I 22 мая 2013 в 20:59 0
Очень жаль, если так и есть.
AndroS 22 мая 2013 в 21:00 0
Обещал продолжить работы после окончания работа на рассылками. Рассылки почти закончены, значит скоро ждем трикат - это явно быстрее двушки будет )))
Александр I 23 июня 2013 в 20:28 0
Крот, как дела с TreeCat?
Будьте добры, напишите, вы занимаетесь этим компонентом или уже нет?
Крот 23 июня 2013 в 22:24 0
да, он у меня в ближайших планах (планирую приступить через 2-3 недели)
ждите, все будет круто smile
Крот 2 августа 2013 в 01:10 0
я тут подумал, почему бы не "заюзать" шаблонизатор twig...
он и в браузере может шаблонизировать...

кто нибудь сталкивался с ним?
Константин Г. 4 августа 2013 в 10:14 0
нет.
AndroS 4 августа 2013 в 20:10 0
Не знаю такого... по теме: что с трикатом, процесс идет?
Крот 5 августа 2013 в 09:43 0
да, идет