Блок загрузки файла модуля Page
Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.24.2, ЧПУ, Font Face
- 253 просмотра
- 20 июня, 2024
- Обновлено: 22 июня, 2024
- admin
- Время чтения: 3 минуты
- 1 (Подробно)
Загрузка файла со страницы сайта aka download – это всегда востребованный функционал для проекта любой тематики. Есть он и в Cotonti Siena. Впрочем, был и в Генуе и в давно почившем в бозе Seditio. Сейчас уже сложно сказать, насколько этот функционал был улучшен по сравнению с исходным, но и в настоящее время в таком виде он все еще вполне востребован.
Мы не будем сейчас обсуждать вопрос реализации способа выгрузки (upload). Каждый решит его по-своему. Для кого-то подойдет выгрузка через FTP-клиент, кто-то укажет ссылку из облачного хранилища (Google Disk, Dropbox и проч). Сегодня мы рассмотрим только вопрос верстки и настройки блока скачивания.
Как настраивается скачивание файла в модуле Page
Все предельно просто: в шаблоне правки или создания страницы необходимо указать отвечающие за загрузку TPL-теги:
- PAGEEDIT_FORM_FILE – состояние блока загрузки (выключено (0) || включено (1) || включно только для зарегистрированных пользователей (2)),
- PAGEEDIT_FORM_URL – URL файла для скачивания,
- PAGEEDIT_FORM_SIZE – размер скачиваемого файла в байтах,
- PAGEEDIT_FORM_FILE_DOWNLOADS – количество закачек.
В шаблоне page.edit.tpl это будет выглядеть примерно так:
... <tr> <td>{PHP.L.Download}:</td> <td>{PAGEEDIT_FORM_FILE}</td> </tr> <tr> <td>{PHP.L.URL}:</td> <td>{PAGEEDIT_FORM_URL}</td> </tr> <tr> <td>{PHP.L.Size}:</td> <td>{PAGEEDIT_FORM_SIZE}</td> </tr> <tr> <td>{PHP.L.Count}:</td> <td>{PAGEEDIT_FORM_FILE_DOWNLOADS}</td> </tr> ...
Как это включается
Если значение поля $pag['page_file'] (редактируется с помощью указанного выше тега PAGEEDIT_FORM_FILE) больше нуля, в шаблоне page.tpl будет парситься блок PAGE_FILE:
<!-- BEGIN: PAGE_FILE --> ... <!-- BEGIN: MEMBERSONLY --> ... <!-- END: MEMBERSONLY --> <!-- BEGIN: DOWNLOAD --> ... <!-- END: DOWNLOAD --> ... <!-- END: PAGE_FILE -->
Поскольку названия блоков [пока еще] не совсем очевидны, поясним:
- блок MEMBERSONLY увидят незарегистрированные и неавторизованные пользователи если загрузка ограничена (значение “2”),
- блок DOWNLOAD увидят те, кто имеет допуск к скачиванию файла.
Теперь по доступным TPL-тегам:
- PAGE_FILE_SIZE – размер сайта в килобайтах (deprecated, пока сохраняется для совместимости),
- PAGE_FILE_SIZE_BYTES – размер файла в байтах,
- PAGE_FILE_SIZE_READABLE – человекопонятный размер файла, результат выполнения функции cot_build_filesize(),
- PAGE_FILE_COUNT – количество скачиваний,
- PAGE_FILE_ICON – иконка скачивания (кастомизируется через ресурсную строку),
- PAGE_FILE_NAME – имя файла без пути к нему,
- PAGE_FILE_COUNTTIMES – количество скачиваний,
- PAGE_FILETITLE – при доступности это ссылка для скачивания, без доступа – сообщение “Этот файл доступен только для зарегистрированных пользователей”,
- PAGE_FILE_URL – при доступности это URL файла, без доступа – ссылка для регистрации
cot_url('users', 'm=register')
.
Как оформляется блок скачивания файла
Я предложу свой вариант разметки, унифицированный с плагином Attach2 и использующий классы фреймворка Bootstrap. Вы же можете реализовать эту историю таким способом, который ближе вам по стилю или духу.
Итак, мой вариант:
<!-- BEGIN: PAGE_FILE --> <ul class="list-unstyled mb-0"> <li class="d-flex align-items-center"> {PAGE_FILE_ICON} <div class="mx-2"> <!-- BEGIN: MEMBERSONLY --> <p class="text-white mb-0"> {PAGE_FILETITLE} </p> <!-- END: MEMBERSONLY --> <!-- BEGIN: DOWNLOAD --> <a href="{PAGE_FILE_URL}" class="d-block">{PAGE_FILETITLE}</a> <!-- END: DOWNLOAD --> <span class="d-block"> {PAGE_FILE_SIZE_READABLE} ({PHP.L.Downloaded}: {PAGE_FILE_DOWNLOADS_TIMES}) </span> </div> </li> </ul> <!-- END: PAGE_FILE -->
Если структурно, то слева расположена иконка, справа – название файла, а под ним размер и количество скачиваний. По умолчанию в качестве иконки используется изображение по следующему пути:
$R['page_icon_file_default'] = Cot::$cfg['icons_dir'] . '/' . Cot::$cfg['defaulticons'] . '/24/page.png';
Меня не устроила иконка размером 24x24, поэтому в php-файле темы я переопределил ее на иконку из комплекта плагина Attach2:
$R['page_icon_file_default'] = Cot::$cfg['plugins_dir'] . '/attach2/img/types/48/zip.png';
Родительскому элементу ul
необходимо назначить свой класс и кастомизировать в соответствии с дизайном сайта. Как вариант – изменить схему ul > li
на, например, div > div
или что-то иное. Я использовал маркированный список только для унификации с уже созданными стилями Attach2, в котором вложений может быть несколько.
И последнее. Если есть желание вывести более информативное сообщение при отсутствии доступа, это можно сделать примерно так:
... <!-- BEGIN: MEMBERSONLY --> <p class="text-white mb-0"> {PAGE_TITLE} – <a href="{PHP|cot_url('users', 'm=register')}" rel="nofollow">зарегистрируйтесь</a> или <a href="{PHP|cot_url('login')}" rel="nofollow">войдите</a> для скачивания </p> <!-- END: MEMBERSONLY --> ...
На этом сегодня все. Нескучной верстки!
Ранее мы обсуждали верстку блока администрирования страницы.
Новый комментарий