Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Структура раздела "файлы и папки на диске"

06.05.2025, 21:53
mzeddd

Зарегистрирован:
2025-03-29
Сообщений: 2

Подскажите пожалуйста как создать структуру сайта типа файлов и папок на диске.

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

Допусти есть раздел на сайте где все это должно находиться, будем считать его корнем диска.
И вот, открывая в браузере корень диска я бы хотел видеть список папок, их названия и некоторые параметры.
Запрос
"/корень/"
Ответ:
Название " папка1" , создатель "Вася", комментарий "хлам"
Название " папка2" , создатель "Петя", комментарий "нужное"

Заходя в папку я хочу видеть параметры папки и список файлов
Запрос:
"/корень/папка1"
Ответ
Название " папка1" , создатель "Вася", комментарий "хлам"
Файлы:
- Название файл1 , комментарий "записи", и прочее
- Название файл111 , комментарий "не забыть", и прочее

Ну и переходя на уровень файла я хочу видеть все что с ним связано
Запрос:
"/корень/папка1/файл111"
Ответ
Название файл111 , комментарий "не забыть", и прочее


Очевидно что надо иметь 2 компонента для файлов и папок соответственно.
И собственно вопрос в том как эти компоненты связать о обвязать чтоб можно было к ним обращаться как в примере?
Чтоб можно было работать с папками и файлами точно так же как и с любыми компонентами.

Понятно что можно насоздавать сущностей вида /корень/папки/папка2 и /корень/файлы/файл111 и связать их. Тогда на странице можно выводить по ключу принадлежности файла к папке, но после перехода к файлу в строке браузера отображается что это файл из кучи файлов, а не из конкретной папки.

Набросайте пожалуйста идей как можно это сделать.
09.05.2025, 11:34
VenZell
Карагодников Алексей Николаевич
VenZell

Зарегистрирован:
2014-07-25
Сообщений: 78

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

По вашему описанию полагаю, что "корень" и "папка" это разделы сайта, а "файл" это страница конкретного объекта у компонента "Файлы".

Получается, в разделе "корень" должен будет быть прикреплен пользовательский компонент "Папки", а в каждом разделе "папка" должен будет быть прикреплен инфоблок с пользовательским компонентом "Файлы".

В системной таблице "Разделы" понадобятся поля:
• Создатель папки - Author - поле типа "Строка"
• Комментарий к папке - Comment - поле типа "Текст"

В качестве имени папки возьмем имя раздела.

В компоненте "Папки" в префиксе объектов у вас будет что-то такое:
Код:

<?php $sub_list = $nc_core->nav->get_sub($sub); ?>
<?php if ($sub_list): ?><ul><?php endif; ?>
<?php foreach ($sub_list as $sub_item): ?>
<li>
<div>Название: <a href="<?= $sub_item->url; ?>"><?= $sub_item->name; ?></a></div>
<div>Создатель: <?= $sub_item->Author; ?></div>
<div>Комментарий: <?= $sub_item->Comment; ?></div>
</li>
<?php endforeach; ?>
<?php if ($sub_list): ?></ul><?php endif; ?>


Теперь определим набор полей компонента "Файлы". Исходя из вашего описания, получается, что понадобятся поля:

• Создатель файла - Author - Поле типа "Строка" у компонента.
• Название файла - Name - Поле типа "Строка" у компонента
• Файл - File - Поле типа "Файл" у компонента
• Комментарий к файлу - Comment - Поле типа "Текст" у компонента

В префиксе объектов у вас будет что-то такое:
Код:

<div>Папка: <?= $current_sub['Subdivision_Name']; ?></div>
<div>Создатель папки: <?= $current_sub['Author']; ?></div>
<div>Комментарий к папке: <?= $current_sub['Comment']; ?></div>
<?php if ($totRows):?><ul><?php else: ?><div>Папка пуста</div><?php endif; ?>


В списке объектов у вас будет что-то такое:
Код:

<li>Файл: <a href="<?= $fullLink; ?>"><?= $f_Name; ?></a>, <?= $f_Comment; ?></li>


В суффиксе объектов у вас будет что-то такое:
Код:

<?php if ($totRows):?></ul><?php endif; ?>
<?php if ($totRows > $recNum): ?>
<?= nc_browse_messages($cc_env, 10); ?>
<?php endif; ?>


В полном просмотре объекта у вас будет что-то такое:
Код:

<div>Файл: <a download href="<?= $f_File; ?>"><?= $f_Name; ?></a></div>
<div>Создатель файла: <?= $f_Author; ?></div>
<div>Комментарий к файлу: <?= $f_Comment; ?></div>


На странице Маршруты описано, как с помощь модуля маршрутизации сделать пути к объектам без суффикса .html

Документация, которая понадобится:
Основные понятия. Архитектура
Компоненты
Типы полей
Класс навигации
10.05.2025, 18:53
mzeddd

Зарегистрирован:
2025-03-29
Сообщений: 2

Спасибо большое за ответ.
Попробую все обмозговать и применить. Мне, как для новичка, это очень полезно и приятно.
Отдельное спасибо за дополнительные ссылки.
198 196 2025-05-10 18:53:02 15392
Описание проекта