Для отображения электронной библиотеки для начала нужно в панели управления сайтом создать страницу каталога файлов, с произвольным адресом страницы (например /files
) и с шаблоном страницы Каталог файлов (files.html)
. В settings.xml
необходимо добавить следующее:
<!-- Каталог файлов (библиотека) -->
<widget>
<type>dynamiclist</type>
<name>fileslist</name>
<label>Каталог файлов</label>
<search>1</search>
<fields>
<datatype>text</datatype>
<name>name</name>
<label>Название файла</label>
<search>1</search>
</fields>
<fields>
<datatype>file</datatype>
<name>document</name>
<label>Файл</label>
<maxSize>10485760</maxSize>
<extensions>png</extensions>
<extensions>jpeg</extensions>
<extensions>jpg</extensions>
<extensions>gif</extensions>
<extensions>bmp</extensions>
<extensions>svg</extensions>
<extensions>doc</extensions>
<extensions>docx</extensions>
<extensions>xls</extensions>
<extensions>xlsx</extensions>
<extensions>ppt</extensions>
<extensions>pptx</extensions>
<extensions>pdf</extensions>
<extensions>rtf</extensions>
<extensions>odt</extensions>
<extensions>txt</extensions>
<extensions>rar</extensions>
<extensions>zip</extensions>
</fields>
<uq>0</uq>
</widget>
Затем в шаблоне files.html
в месте, где необходимо вывести каталог файлов, нужно прописать следующий код:
{% set onpage = 30 %}
{% set start = (xget('page', 1) - 1) * onpage %}
{% if xget('pkid') != '' %}
{% else %}
{% set filter = {} %}
{% set text = xget('text') %}
{% if text != '' and text is not null %}
{% set filter = xadd(filter, '%text', text) %}
{% endif %}
{% set filter = xadd(filter, 'lang', {0: site.lang}) %}
{% set widgetname = 'fileslist' %}
{% set res = widgetDataByType(
'dynamiclist', {
widget_name: widgetname,
filter: filter,
start: start,
limit: onpage,
format: 2,
order: {
pos: 'desc',
},
}
) %}
{% set list = res.data %}
{% set list_count = res.count %}
{% if list|length == 0 %}
<div data-widget-name="{{widgetname}}"{% if user.isAdmin %} class="widget-render" data-href="{{link(urlGetAdd('/options/widget/settings/'~page.pkid~'/'~widgetname, 'account', user.adminAccount))}}"{% endif %}>
<center><i>{{translate['site.files.listempty']}}</i></center>
</div>
{% else %}
<div data-widget-name="{{widgetname}}"{% if user.isAdmin %} class="widget-render" data-href="{{link(urlGetAdd('/options/widget/settings/'~page.pkid~'/'~widgetname, 'account', user.adminAccount))}}"{% endif %}>
<style type="text/css">
.gbtn {
float: right;
margin: 0 3px;
padding: 5px 10px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
color: #fff;
}
.gbtn.download {
background: #008d0a;
color: #fff;
}
.gbtn.download:hover {
background: #06ac12;
color: #fff;
}
.gbtn.view {
background: #036096;
color: #fff;
}
.gbtn.view:hover {
background: #0075b9;
color: #fff;
}
</style>
<table style="width: 100%; border: none;" class="lib_tab">
{% for dt in list %}
{% set data = getLangData(dt) %}
{% if gettype(data.document) == 'string' %}
<tr class="sites2" style="border-bottom: 1px solid #ccc; padding: 5px 0; margin: 5px 0;">
<td style="width: 55px;">
<div class="img_wr">
<a href="{{data.document}}" target="_blank">
<img src="/img/fileformats/{{getExtensionsByString(data.document|lower)}}.png" width="50" height="50">
</a>
</div>
</td>
<td>
<b>{{data.name}}</b><br/>
<small>{{translate['site.files.lastchange']}}: {{dt.gmtimeChange | iostrtodate('d.m.Y', 'Asia/Almaty')}}</small>
<small>{{translate['site.files.filesize']}}: {{formatSizeUnits(data.document|filesize, 2, ['B', 'KB', 'MB', 'GB', 'TB', 'PB'])}}</small>
</td>
<td style="width: 75px;">
{% if(checkExtensionsByString(['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'odt'], data.document|lower)) %}
{% set dohref = "http://view.officeapps.live.com/op/view.aspx?src=" %}
<a href="{{dohref}}//{{site.domain}}{{data.document}}" class="gbtn view" target="_blank" style="color: #fff">{{translate['site.files.view']}}</a>
{% endif %}
{% if(checkExtensionsByString(['pdf'], data.document|lower)) %}
<a href="//{{site.domain}}{{data.document}}" class="gbtn view" target="_blank" style="color: #fff">{{translate['site.files.view']}}</a>
{% endif %}
</td>
<td style="width: 75px;">
<a href="{{data.document}}" class="gbtn download" style="color: #fff" download>{{translate['site.files.download']}}</a>
</td>
</tr>
{% endif %}
{% if i == 5 %}<div class="clr"></div>{% endif %}
{% set i = i + 1 %}
{% endfor %}
</table>
</div>
{% set page = max(xget('page', 0), 1) %}
{% set alfa = 1 %}
{% set count = (list_count / onpage) | ceil %}
{% if count > 1 %}
<div class="pagination">
<center>
<ul>
<li class="cursor" data-page="{{max(page - 1, 1)}}"><a><<</a></li>
{% set class="cursor" %}
{% if 1 == page %}
{% set class="disabled" %}
{% endif %}
<li class="{{class}}" data-page="1">
<a href="{{link(urlGetAdd(site.fulluri, 'page', 1))}}">1</a>
</li>
{% if (page - alfa > 2) %}
<li class="disabled"><a>...</a></li>
{% endif %}
{% set a1 = max(page - alfa, 2) %}
{% set a2 = min(page + alfa, count - 1) %}
{% if a2 >= a1 %}
{% for i in range(a1, a2) %}
{% set class="cursor" %}
{% if i == page %}
{% set class="disabled" %}
{% endif %}
<li class="{{class}}" data-page="{{i}}">
<a href="{{link(urlGetAdd(site.fulluri, 'page', i))}}">{{i}}</a>
</li>
{% endfor %}
{% endif %}
{% if (page + alfa < count - 1) %}
<li class="disabled"><a>...</a></li>
{% endif %}
{% if (count > 1) %}
{% set class="cursor" %}
{% if (count == page) %}
{% set class="disabled" %}
{% endif %}
<li class="{{class}}" data-page="{{count}}">
<a href="{{link(urlGetAdd(site.fulluri, 'page', count))}}">{{count}}</a>
</li>
{% endif %}
<li class="cursor" data-page="{{page + 1}}">
<a href="{{link(urlGetAdd(site.fulluri, 'page', page + 1))}}">>></a>
</li>
</ul>
</center>
</div>
{% endif %}
{% endif %}
{% endif %}
Добавить в словарь фраз:
{
"ru": {
"site.files.download": "Скачать",
"site.files.view": "Просмотр",
"site.files.lastchange": "Последнее изменение",
"site.files.filesize": "Размер файла",
"site.files.listempty": "Список пуст"
},
"kz": {
"site.files.download": "Көшіріп алу",
"site.files.view": "Қарап шығу",
"site.files.lastchange": "Соңғы өзгеріс",
"site.files.filesize": "Файл өлшемі",
"site.files.listempty": "Тізім бос"
},
"en": {
"site.files.download": "Download",
"site.files.view": "View",
"site.files.lastchange": "Last change",
"site.files.filesize": "File size",
"site.files.listempty": "List is empty"
}
}