|
mzeddd
Зарегистрирован: 2025-03-29
Сообщений: 2
|
Подскажите пожалуйста как создать структуру сайта типа файлов и папок на диске.
В качестве файлов и папок конечно же другие сущности, но для простоты буду называть их так. В корне находятся только папки, в папках находятся только файлы. Никаких файлов в корне и никаких папок в папках.
Допусти есть раздел на сайте где все это должно находиться, будем считать его корнем диска.
И вот, открывая в браузере корень диска я бы хотел видеть список папок, их названия и некоторые параметры.
Запрос
"/корень/"
Ответ:
Название " папка1" , создатель "Вася", комментарий "хлам"
Название " папка2" , создатель "Петя", комментарий "нужное"
Заходя в папку я хочу видеть параметры папки и список файлов
Запрос:
"/корень/папка1"
Ответ
Название " папка1" , создатель "Вася", комментарий "хлам"
Файлы:
- Название файл1 , комментарий "записи", и прочее
- Название файл111 , комментарий "не забыть", и прочее
Ну и переходя на уровень файла я хочу видеть все что с ним связано
Запрос:
"/корень/папка1/файл111"
Ответ
Название файл111 , комментарий "не забыть", и прочее
Очевидно что надо иметь 2 компонента для файлов и папок соответственно.
И собственно вопрос в том как эти компоненты связать о обвязать чтоб можно было к ним обращаться как в примере?
Чтоб можно было работать с папками и файлами точно так же как и с любыми компонентами.
Понятно что можно насоздавать сущностей вида /корень/папки/папка2 и /корень/файлы/файл111 и связать их. Тогда на странице можно выводить по ключу принадлежности файла к папке, но после перехода к файлу в строке браузера отображается что это файл из кучи файлов, а не из конкретной папки.
Набросайте пожалуйста идей как можно это сделать.
|
|
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
Документация, которая понадобится:
• Основные понятия. Архитектура • Компоненты • Типы полей • Класс навигации
|