Вопросы Дмитрия про битрикс предлагаю перенести сюда)
NET-girls
|
04.02.2009 17:56:35
Дмитрий, начните, плиз, с начала. Зачем вы решили синхронизировать папку update с таблицей b_file? И что именно вы делали? Вы работаете с каким-то стандартным модулем? Что значит из структуры на основе инфоблоков? Это инфоблоки, или это свой модуль, который скопирован с модуля инфоблоков? |
|
|
|
07.02.2009 14:05:56
Светлана, я очень признателен Вам за желание помочь!
Имеется в виду закачанных механизмами сайта (не через консоль администратора). Например, инфоблоком. табла b_file, столб: module_id содержит имя типа модуля, через который была закачка. Там, же в b_file хранится как начальное имя файла (с которым его пытались закачать), текущее имя и путь размещения относительно корня upload. ЗАЧЕМ: Спустя 4 месяца сервиса, портал превратился в файловую памойку. при анализе (сопоставлении) 1. существующих инфоблоков, 2. записей в b_file 3. фактического наличия файлов было найдено большое кол старых записей в БД, и файлов. т.е. фактически - мусор. Общий размер составил несколько Гб! С одной стороны если массив 4 Тб - то не вопрос. Одно не понятно Зачем так делать? - это вопрос скорее к идеологам bitrix Возвращаясь к вашему вопросу зачем? - Чтобы навести порядок. Т.е. определить что является мусором и убрать его. По моему это обычное дело - поддерживать в порядке жильё, рабочее место, свой авто...
- Я управлял сайтом через стандартную косоль админа. "Административный раздел"/"Панель управления" (вероятно ответ не о чём...) В общем, работал штатными средствами БУС
Панель "Контент" С помощью оснастки "Типы информационных блоков" был создан тип "Папки". В списке "Структура сайта" есть элемент "Папки" (пиктограммка голубой квадратик на зеленом), в котором есть подраздел "Папки" в котором есть элементы - записи папок пользователей (разделы), и элементы - файлы (просто элементы) Т.е. я работаю со структурой на основе инфоблоков. где к элемент инфоблока "файл" имеет поле с file_id таблы b_file. т.е. связан с закаченным файлом Откуда взялся мусор: 1. Удаление элемента инфоблока "файл" не вызывает удаление соответствующей записи в табле b_file, и самого файла из папки upload. 2. Удаление файла через Админскую кансоль "Контен": "Структура сайта"/"файлы и папки" не проверяет наличие ссылок на этот файл в b_file и соответственно не проверяется его задействование в инфоблоках по b_files.id. Меня "слегка" поразило что в коммерческой CMS, где существуют шаблоны, сильно развиты и применяются механизмы парсеры, нет элементарной проверки на поддержание целостности файловой структуры и уборки "мусора"! Однажды я этому посвятил почти день ~ 3 часов вычищая всё в полу-ручную.... (небыл уверен в своей правоте) Сейчас понимаю, что нужно сделать скрипт. что в принципе -не проблема. Поразил сам факт! Собственно, возвращаясь к заданному мной вопросу: В bitrix управление сайтом редакция стандарт есть ли встроенный механизм контроля целостности файловой системы и базы данных. не контроля целостности таблиц, а именно базы данных в целом! т.е. перекрёстная проверка ссылок на записи в различны таблах. Изменено: energosib - 07.02.2009 14:10:39 |
|||||||
|
|
07.02.2009 14:15:19
Вопрос №2. С чего начать копать для того чтобы создать... возможно компонент или модуль (пока непонятно как его обозвать) суть - некий набор скриптов и таблов, интегрированных в битрикс, имеющих с ним связи на уровне: 1. пользователи, 2. группы пользователей 3. поиск 4. применение шаблонов битрикс 5. возможность встраивать интерфейсы(представления) в шаблон дизайна(ны) других рубрик сайта. вероятно п.4 и п.5 - одно и тоже. |
|
|
|
07.02.2009 14:16:58
Вопрос №3 Ресуры: Где взять шаблоны (не коммерческие). а. на сайты. б. на bitrix и его модули. |
|
|
|
07.02.2009 14:34:09
Вопрос №4 Как из среды Bitrix адресоваться к файловым ресурсам, находящемся за пределами корня сайта (папки www)? другая формулировка того-же вопроса: Как в настройках типа-инфоблок указать путь сохранения загружаемых файлов выше чем корень размещения сайта? |
|
|
|
07.02.2009 22:36:37
Дмитрий, вот теперь стало несколько понятнее) Судя по всему у вас на сайте есть какой-то сервис, который дает пользователям возможность закачивать и хранить файлы. Все это работает на инфоблоках, где файл, видимо, это свойство элемента инфоблока. Т.е. при закачке пользователем файла, создается элемент инфоблока, к которому привязан файл. Соответственно, далее пользователь считает, что управляет файлом, но фактически он управляет элементом инфоблока. Далее, тот кто создавал этот сервис и разрабатывал алгоритмы его работы не предусмотрел, что при удалении элементов инфоблока (на что судя по всему есть права у пользователей сервиса) необходимо удалять еще и сами прикрепленные файлы. Если сейчас вы вручную все лишние файлы почистили и удалили, то чтобы избежать такой ситуации в дальнейшем, надо повесить обработчик на событие удаления элемента инфоблока, который и будет удалять привязанный к этому элементу файл. Здесь описание события, которое вызывается каждый раз перед удалением элемента инфоблока Т.е. реализовать нужный вам функционал можно и без написания собственного модуля. По вопросу № 2 - ссылки на документацию, про создание собственных модулей я уже дала, попробуйте спросить на форуме статью с примером создания собственного модуля, может быть у кого-то она есть. По вопросу №3 - таких шаблонов очень мало. Если кто-то и создает свои модули, компоненты, шаблоны, то распространяет их, как правило, платно. Кстати, есть группа называется "Рынок", где можно найти такие предложения. Там же был по крайней мере один компонент отдаваемый бесплатно - Гостевая книга от Романа Забродина. Вопрос № 4 - не уверена, но в настройках это сделать по-моему невозможно - битрикс работает с папками, начиная с корня сайта. Хотя, если будете делать свой компонент, то можно реализовать такую схему: сначала загружается файл в нужную вам папку стандартными средствами php потом создается элемент инфоблока в свойстве элемента сохраняется путь к загруженному файлу. При этом загруженные выше корня сайта файлы модулем Управление структурой учитываться не будут. И если вам нужно будет реализовать функционал удаления, то это надо делать через обработчик, а дальше удалять опять-таки стандартными функциями php. Похожий механизм, например, приходилось делать на сайте corbina.tv - все видео-ролики при добавлении редактором сохраняются на отдельном сервере, а в битрикс создаются для них элементы инфоблоков, с описаниями, счетчиком показов, голосованием и т.д. |
|
|
|
12.02.2009 07:40:09
Пользователь, оперируя публичной частью сайта выполняет все действия от создания до удаления корректно. Т.е. скриптами отрабатывается и удаление файла. Есть косяки с формированием журнала работы с документами (лог кто, когда, откуда и т.д.) А вот если админ из админского интерфейса в инфоблоках типа "личные папки" удаляет элементы, то связанные файлы не удаляются. Вчера я досконально изучил мануал "Руководство по интеграции" и ряд других связанных с ним мануалов. Наступило просветление... Разработчик (кстати фигурирует в первой 4-ке официальных партнёров bitrix на сайте) реализовал данный сервис старым дедовским образом. - комплект несвязанных скриптов, в папке раздела сайта. (т.е. даже не удосужились сделать единую библиотеку по работе с "ядром Api bitrix", в результате не обеспечивается целостность журнала работы с документами/файлами). В качестве хранения используют свой тип на базе стандартного инфоблока. --- Насколько я понял (из изучения документации), они должны были сделать ряд компонентов 2.0 для работы с ядром на основе инфоблока. Правильно? Или я сделал не правильный вывод... Ещё один момент, в котором бы я хотел до конца разобраться. Правильно ли я понял, что если данные хранятся в некоем хранилище, созданном на основе и инфоблока и в его таблице, то необходимо разрабатывать компонент (или дорабатывать стандартные компоненты, если они не устраивают) Если же предлагаемый формат таблицы инфоблока не устраивает по причине своей избыточности полей или неэффективности, то необходимо разрабатывать свой модуль? Т.е. Модуль, это совокупность набора таблиц в БД bitrix и компонентов 2.0 для админской части и публичной части. Так?
А так чтоб все что касается сервиса находилось физически в папки со скриптами данного сервиса/компонента/модуля. Ну т.е. возможно ли добиться целостности физического размещения скриптов и фрагментов кода относительно реализации сервиса?
P.S. Светлана, я искренне благодорю вас за вашу отзывчивость! |
|||||||||||
|
|
12.02.2009 09:26:46
А модуль - это не только набор таблиц в БД и компонентов. Это еще и папка в каталоге /bitrix/modules/ с файлами, где описаны все функции, которые используются в публичной и административной части. Т.е. на уровне компонентов уже прямых запросов к базе и всяких служебных функций быть не должно - только функции, которые описаны в файлах модуля. А! еще страницы в админке тоже должны быть свои - раз свои таблицы.
|
|||||||||||||||
|
|
12.02.2009 11:35:55
а. хватило усидчивости прочитать доки, б. хватило благоразумия и дальновидности понять (и принять!) структуру и идеологию, заложенную разработчиками в bitrix. Пока я не прочел инструкцию по интеграции, меня 80% из того что сделано - устраивало. Теперь - совсем ничего. - даже шаблон дизайна сделан некорректно. Вот тебе и партнёр bitrix...
Свои страницы в админке это круть! Кстати, как задействовать все фишки оформления консоли bitrix? Я имею ввиду таблички с закруглёнными краями, DHTML всплывающие окна и прочие крассивые штучки, делающее данное решение bitrix во истину ПРОДУКТОМ!? Может тоже статейка какая была? Поиск не помог Про /bitrix/php_interface/init.php тоже понял. Вот видите, с точки зрения компактности и целостности частей кода, необходим модуль! Спасибо! Вот что бы я без вас делал!!!! в общим, я для себя набрасал план действий. 1. Переделать шаблон дизайна. 2. Переделать разрозненные скрипты, перегруппировав их: а. - интерфей б. - логика работы в. - блиотека а-ля myAPI. 3. На базе стандартных компонентов и и модуля сделать свой родной модуль. сервис полезный, если портал будет обрастать такими во полезными сервисами и неминуемо захочется перейти на более новые решения bitrix, то это будет проще... - чем чёрт не шутит... А вот ещё один вопрос: Закачка файла на портал. - необходим информативная форма процесса закачки. Т.е. типа растущего градусника. Прошлый "партнёр" говорил что это невозможно! Но когда я сам разворачивал БУС штатными средствами, там "градусник" был! 8) Вопрос: В bitrix случайно нет такого компонента? Доки по нему просмотрел - глазу зацепиться не за что было. |
|||||
|
|
12.02.2009 11:57:38
Вобще, видела всякие решения с градусником с подключением функций perl или с формой во флеше. Сама не делала, но наверняка, если повозиться, то можно и их интегрировать в Битрикс. Если с градусником из обновлений почему-либо не сложится. |
|||||
|
|
12.02.2009 12:22:24
Да. статейка и впрямь полезная. А я всё больше скаченной с сайта документашкой пользовался. - намного интереснее... Интересно, как скоро появится его аналог в chm? Про градусник, понял, спасибо. Кстати, на мои вопросы только вы одна и отвечаете. Остальные учатники форума - просто как так, для "кворума" существуют? |
|
|
|
12.02.2009 13:48:16
Чему то сами учимся, на что-то у нас свои методы решений и взгляды. Светлана Вам все качественно рассказала-встревать смысла нет, только уведем от основной темы, начнем опять "все мужики сво..., скоро весна..., да как трудно жить девушкой программером...." Зачем вам это? |
|||
|
|
12.02.2009 13:50:59
|
|||
|
|
12.02.2009 14:41:22
Надо прямо сказать. До уровня продукта с которым не стыдно выйти на рынок он безусловно дорос. Однако, пока ещё далёк от совершенства. - Книга жалоб и предложений просто ломится... - Есть необходимость "доработки напильником"... смотрите как активно используются ресурс dev.1c-bitrix.ru в целом. Да и вопросы то в общем не тривиальные, вызванные нежеланием читать доки, а именно имеющимися проблемами. Одно радует - положительные изменения в продукте от версии к версии есть. К тому же и вы, очаровательницы наши, не спроста же здесь "уши греете".... |
|||||
|
|
12.02.2009 17:48:24
А вот я еще помню четверку. Есть тут динозавры, которые и еще более ранние повидали. Так вот по сравнению с тем, что было- прогресс удивителен... поверьте на слово) и все это за 3 года(4 была весной 2006). |
|||
|
|
12.02.2009 21:53:15
/истина где-то рядом....
|
|||
|
|
19.02.2009 12:28:34
Добрый день! В продолжении самообразования в bitrix, снова обращаюсь с вопросом. Как вы (Светлана) советовала, повесил обработчик события OnBeforeIBlockElementDelete, в котором проверяю есть ли в инфоблоке поле "file_mane", не пустое ли оно, и существует ли файл с таким ID. Если да - то del-аю его. Всё работает прекрасно! спасибо большое за столь красивый совет! А вот следующей вопрос в продолжении... сейчас я всё это делаю так: function OnBeforeIBlockElementDeleteHandler($ID) { if ($Element = CIBlockElement::GetProperty(13,$ID,array(),array("CODE" => "file_name"))) { $ID_File = $Element->Fetch(); if (($ID_File["VALUE"]>0)&&(CFile::GetByID($Prop["VALUE"]))) CFile::Delete($ID_File["VALUE"]); } } Вопрос: можно ли сделать то же самое но с более компактным кодом? Я имею в виду получение IDфайла из пользовательского поля инфоблока... Уж очень всё как-то не просто получается... Может есть способ упростить конструкцию if ($Element = CIBlockElement::GetProperty(13,$ID,array(),array("CODE" => "file_name"))) { $ID_File = $Element->Fetch(); .... } ? |
|
|
|
20.02.2009 15:56:20
|
||||
|
|
|||
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».