Модуль "Управление структурой" через базу данных

Рейтинг: -84.7048  
На голосовании
Предложил Пользователь 16182 27.10.2011 01:51:01

Модуль "Управление структурой" через базу данных

Предлагаю перенести статические страницы и разделы в базу данных, и отказаться от физических php файлов в папках.

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

Если же файлы у нас хранятся в базе, мы получаем выигрыш в скорости (не нужно читать файловую структуру в поисках файликов .menu_ext или включаемых областей для рзаделов), для редакторов упростится создание страниц и разделов, а так же добавление их в меню, и перенос разделов между папками. Сейчас без знания файловой структуры редактору лучше не лезть в модуль управления структурой, так как он может перенести раздел, но не перенести меню, а потом будет недоумевать куда все пропало.
Если файлы в базе, можно проще настраивать редиректы при перемещении страниц или при удалении страниц, проще делать мультиязычные переводы для статических страниц. Проще переносить сайт на другой хостинг, не нужно мучаться с настройкой прав доступа на файлы, проще настраивать права доступа на редактирование группами пользователей (если случайно удалить из папки файлик справами все перестанет работать).

Как-то все ненадежно и хлипко получается если структура на php-файлах, и сложно для понимания новичкам, клиенту сложно разобраться во всех понятиях "раздел", "страница", "привязать пункт меню к странице", "перенести раздел". Одно неверное движение - и все полетело, без знающего программиста уже не восстановить. Улучшения увроде "отменить последнее действие" не спасают, иногда действий 3-4 или больше, а откатиться назад без восстановления бекапа уже нельзя. Да и с историей записи, изменений страниц и разделов, тоже пожалуй, будет проще. Сейчас нельзя узнать кто создал эту страницу, кто и когда изменил. Вроде логирование добавили, но как с ним работать - можно ногу сломать пока разберешься.

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

Рейтинг: 6.3812  
Пользователь 42785 27.10.2011 08:59:25
Не это гониво. Иногда приходится работать через ftp и какое же решение будет в этом случае?
Есть чпу если кому не нравится много файлов.
Рейтинг: -5.1993  
Пользователь 16182 27.10.2011 10:21:55
Возможность редактировать шаблоны и компоненты, конечно, лучше оставить через FTP. Речь шла о редактировании статических страниц. Для них вполне можно обойтись визуальным html редактором.
Рейтинг: 3.5905  
Пользователь 17090 27.10.2011 10:22:03
Сергей Шаклеин, это точно, и так БД трещит по швам :)
Единственное неудобство структуры в виде файлов - это неочевидность для юзера при удалении разделов (их вообще надо удалять из файловой структуры и из меню отдельно, а по большей части вообще убирают только из меню и сайт становится помойкой)
Рейтинг: 0.4869  
Пользователь 16182 27.10.2011 10:23:09
Это точно, и так БД трещит по швам

Как показывает практика, трещит по швам именно файловая структура из за огромного количества файлов, а запросов к базе данных на странице вообще может и не быть если грамотно настроено кеширование.
Рейтинг: 0.3091  
Пользователь 16182 27.10.2011 10:37:53
Иногда приходится работать через ftp и какое же решение будет в этом случае?
Если так подумать - уже не вспомню когда я редактировал статическую страницу через php редактор. Просто жалко потом смотреть как коверкается верстка после пересохраниния страницы в виз. редакторе. Через FTP удобно редактировать шаблоны и компоненты - это да. Но редактировать через FTP статические страницы - бесполезный труд. Создавать папки и файлы через FTP тоже неудобно, так как потом обычно нужно еще ставить права на эти файлы и папки, а если забыл поставить - то через виз. редактор уже такую страницу не пересохранить.
Рейтинг: 38.0373  
Пользователь 10 27.10.2011 11:39:48
Можно же сделать структуру на инфоблоках хоть от корня. И не будет никаких статических файлов. Меню тоже из инфоблоков.
Рейтинг: 0.3091  
Пользователь 16182 27.10.2011 13:34:11
Можно же сделать структуру на инфоблоках хоть от корня. И не будет никаких статических файлов. Меню тоже из инфоблоков.


Мысль хорошая, думал раньше об этом, но это частное решение и оно неудобно для передачи клиенту в продакшн. Он будет нажимать "создать страницу" на панеле сверху, и может забыть что нужно зайти в инфоблок и создавать разделы и страницы там.

Если бы была поддержка этой технологии на уровне продукта, наверное, скорее всего мы бы таким образом и делали сттруктуру сайта.
Рейтинг: -18.7061  
Пользователь 23699 29.10.2011 22:29:21
Эта идея достойна быть как минимум в топ-10, если бы здесь такой рейтинг существовал

Осуществима ли она в рамках проекта 1С-Битрикс? Да, это вопрос, и скорее всего ответ на него отрицательный. Но это никак не умоляет достоинство самой идеи, поэтому для меня вообще не понятно наличие стольких голосов "против" и всего пара "за".

Несколько дней назад предложили мне посмотреть один самописец, парни ищут финансирование под него. Конечно, как и все подобное имеет массу ошибок и недостатков. Но разработка, с моей точки зрения, гениальна по своей простоте.

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

Автору сабжа - респект!
Рейтинг: 9.4305  
Пользователь 46422 09.11.2011 00:52:47
В Модексе так сделано. Я после него пришел в Битрикс и долго не мог понять, зачем разделили файловую структури и инфоблоки - ведь фактически файловую структуру можно сделать на инфоблоках, и количество сущностей уменьшится. Потом смирился.

Но действительно, удобно показывать пользователю только логическую структуру. Опять же, легко строится нормальное многоуровневое ЧПУ (в модексе оно включается галочкой)

PS идея - ТОП-10 Кто так круто заминусовал?
Рейтинг: 1.1979  
Пользователь 3447 11.11.2011 01:08:29
Мы делали один проект - http://presidentrb.ru/ там практически вся структура сайта на инфблоках и построена. В качестве страниц используются разделы инфоблока.
Рейтинг: -3.4127  
Пользователь 16182 16.07.2012 00:36:25
Иногда приходится работать через ftp и какое же решение будет в этом случае?
А как вы новость через фтп будете добавлять?

ФТП подходит для своих целей (редактирование шаблонов), а база для своего (новости с текстом, статические страницы с текстом).


Речь шла только о работе структуры сайта через базу данных.

Можно же сделать структуру на инфоблоках хоть от корня. И не будет никаких статических файлов. Меню тоже из инфоблоков.
А как потом на страницу (которая является элементом инфоблока) вставить компонент?

Насколько я знаю, компоненты в текст элемента инфоблока сейчас вставлять нельзя.

Единственное неудобство структуры в виде файлов - это неочевидность для юзера при удалении разделов (их вообще надо удалять из файловой структуры и из меню отдельно
Есть и другие минусы, чтобы добавить раздел, нужно создать папку, создать страницу index.php, создать файл меню, в файле меню создать пункт меню, в пункте меню прописать ссылку на ту страницу, которую создали. Потом если нужно переместить раздел - начинается карусель - скопировать папку (через управление файловой структурой) вместе с её содержимым, переименовать ссылку в пункте меню, еще в прописать правило 301 редиректа. Совсем не быстро, не просто и не эффективно.

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

А локализация и перевод на другие языки? Сначала пойди создай папку /about/ и создай пункт в .left_menu.php, потом пойти создай раздел /en/about/ и пункт в .left_menu.php в папке /en/ (плюс проследи, чтобы папки одинаково назывались, если нужно чтобы при переключении языка мы оставались на этой-же старнице. А если потом скажут "переименуйте папку в /about-us/, или еще хуже - перенесите её в раздел /companyy/about-us/? Вот тут и начинается геморой с копированием файлов по фтп, причем в двух языках (а бывает и в трех), вот тут как раз и чувствуешь всю прелесть структуры сайта на файлах.




P.S.

Я уже 5 лет работаю с битриксом и создал на нем более 30-ти сайтов различного уровня сложности,  и я прекрасно понимаю, что если эту идею реализовывать - нужно все полностью перекопать.

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