загрузка и прикрепление Файлов, Документов, Картинок, Изображений на Cotonti к модулям, плагинам маркетплейса или фриланс биржи

«Files» — Модуль для Cotonti

«Files» — Модуль для CMF Cotonti by Alex300
Личное файловое хранилище, альбомы пользователей, прикрепление изображений и файлов, создание фото галерей на страницах и постах.

Автор статьи: Алексей Кальнов. Источник материала.

Модуль совмещает в себе персональное файловое хранилище пользователей, файловое хранилище сайта для администраторов, управление аватарами и альбомами пользователей, а также, управление вложениями к страницам, постам и любым другим объектам.
Он является заменой модуля PFS, плагина «User images», входящих в «коробку» Cotonti и плагина «Attach2».

Code=files
Name=Files
Description=Personal File Space and attach files to posts and pages
Category=files-media
Version=1.0.5
Date=Aug 31, 2021
Author=Cotonti Team, Kalnov Alexey <[email protected]>
Copyright=(c) Cotonti Team, 2014-2021 Lily Software https://lily-software.com (ex. Portal30 Studio)
Notes=DO NOT FORGET to create a writable folder for the files
Auth_guests=R
Lock_guests=12345A
Auth_members=RW
Recommends_modules=page,users

Авторство.

Над модулем PFS, плагинами «User images» и «Attach2» работало так много народу, а моя работа является итогом и обобщением работы всех этих людей, так что автором модуля является Cotonti Team.

1. Особенности

Современный механизм загрузки основанный на jQuery File Upload
Поддержка мультизагрузки.
Петаскивание файлов мышью прямо на форму загрузки.
Загрузка файлов по-частям («Чанками») позволяет обойти ограничение на загрузку файла через $_POST в 2 мб.
Уменьшение больших изображений до указанных размеров при загрузке.
Использование водяного знака (watermark) для изображений.
Простая интергация через обратный вызов функций из шаблона.
Загрузки подсчитываются и происходят с оригинальным именем файла.
Создание изображений для предпросмотра (thumbnail) и простая его настройка.
Поддержка экстраполей.
Специальные ББкоды для вставки изображений и галлерей в текст страниц вне зависимости от выбранного парсера.

2. Системные требования и ограничения:

Установленная Cotonti Siena версии не ниже 0.9.18. (Files v. 1.0.0 совместим с более ранними версиями Siena)
PHP версии 5.3 и выше. Работа с PHP версии 5.2.х и ниже невозможна.
Наличие на Вашем сайте установленной библиотеки Cotonti Lib версии 2.0.x
Модуль не совместим с модулем PFS и плагином «User images». Их не следует устанавливать, если Вы собираетесь использовать модуль «Files».
Шаблоны «в коробке» рассчитаны на использование темы, реализованной на фреймворке Bootstrap v3 (Устанавливается отдельно)

Замечание. В силу значительно отличающейся структуры БД и способа хранения файлов, модуль «Files» не подхватит автоматически присутствующие на сайте файлы из модуля «PFS» и плагинов «User images» и «Attach2».

2.1 Перенос данных из модуля «PFS» и плагинов «User images» и «Attach2».

Если Вы хотите использовать модуль «Files» для уже существующего сайта, Вам следует использовать конвертер для переноса данных между модулями. Вы можете заказать его здесь. В настоящий момент существует конвертер для переноса данных из этих трех расширений, т.к. они одни из самых часто используемых. Но можно сделать конвертер для любого другого модуля или плагина.

3. Установка

Загрузить архив и распаковать в папку с модулями вашего сайта.
В меню «Управление сайтом > Расширения» произвести установку нажав «установить».
В настройках модуля выберите подходящие Вам установки.
В шаблонах панели управления «admin.users.tpl» и «admin.users.tpl» а также в некоторых других создайте теги в соотвествии с рекомендациями на настранице модуля в панели управления. (http://<ваш_домен>/admin/extensions?a=details&mod=files)
При необходимости на странице редактирования групп пользователей установите ограничения на размер загружаемого файла, общее файловое пространство пользователя и максимальное количество вложений для одного объекта. Для каждой группы пользователей могут действовать свои разрешения.
Обратите внимание, что размеры указываются в байтах, ноль означает «безлимит», а -1 — запрет.
Создайте каталог для файлов на вашем сервере (по умолчанию используется «datas/files») и установите права на запись для PHP (например CHMOD 775 или CHMOD 777).
Используйте в Вашей теме Resources::setAlias() для объявления алиясов для файлов Bootstrap, если Вы планируете его использовать и он установлен в папку, отличную от объавленной в классе Resources.

4. Использование

Этот раздел рассказывает об основных моментах использования модуля на страницах (pages) c минимальными изменениями сайта. Аналогично можно настроить его для применения с другими разделам сайта, как например темы форума или комментарии.

Большинство примеров указаны для темы оформления c подключенным Bootstrap, т.к. его использует jQuery File Upload, но Вы всегда можете сделать свои CSS стили не используя bootstrap. Вы можете переопределить шаблоны для решения Ваших задач.

4.1 Личное файловое хранилище. Альбомы пользователей.

Модуль Файлов предоставляет пользователям персональное файловое хранилище ( и файловое хранилище сайта для администраторов ). Файлы можно хранить по папкам и альбомам. Публичные папки и альбомы пользователя доступны для просмотра другим пользователям. Также Вы можете вставить на страницу, точнее прямо в редактор (CKEditor или MarkitUp или другой), ссылку на файл, изображение, его миниатюру или весь альбом в виде галереи.

Чтобы иметь возможность вставлять файлы в редактор из личного файлового хранилища или файлового хранилища сайта,

в шаблон редактирования страницы page.edit.tpl нужно добавить теги

{PAGEEDIT_FORM_PFS} {PAGEEDIT_FORM_SFS}

в шаблон добавления страницы page.add.tpl помещаем теги

{PAGEADD_FORM_PFS} {PAGEADD_FORM_SFS}

Также мои файлы доступны на отдельной странице: http://<ваш_домен>/files?m=pfs — можно добавить ее в меню пользователя как «Мои файлы»

Файловый архив сайта: http://<ваш_домен>/files?m=pfs&uid=0

 

Публичные файлы и альбомы пользователя другим пользователям доступны по ссылкам:
http://<ваш_домен>/files?a=files&uid=<id_пользователя> — файлы
http://<ваш_домен>/files?a=album&uid=<id_пользователя> — альбомы

Можно добавить их в профиль пользователя.

4.2 Аватары пользователей

В стандартных шаблонах модуля пользователей Cotonti — users.profile.tpl и users.edit.tpl уже есть теги {USERS_PROFILE_AVATAR} и {USERS_EDIT_AVATAR} соотвественно. Модуль на их место выводит форму загрузки аватара пользователя. А тегом {USERS_DETAILS_AVATAR} (или {PAGE_OWNER_AVATAR} или {ЛЮБОЙ_ПРЕФИКС_AVATAR}, если тег генерируется функцией cot_generate_usertags() ) аватар выводится в шаблон. Кроме того, для вывода аватара в шаблон Вы можете использовать например такую конструкцию:

<img src="{PHP.usr.profile.user_avatar|cot_files_user_avatar_url($this)}" alt="{PHP.usr.profile.user_name}" />

или

<img src="{PHP.urr.user_avatar|cot_files_user_avatar_url($id, 200, 140, 'crop')}"  />

Функция

cot_files_user_avatar_url($file_id, $width = 0, $height = 0, $frame = '')

как видите принимает 4 параметра, из которых обязательным является только первый — id файла — аватара. Также Вы можете указать длину, ширину и способ кадрирования, если Вы не хотите использовать настройки модуля по-умолчанию.

Также для вывода аватаров доступна функция

cot_files_user_avatar($file_id, $urr = 0, $width = 0, $height = 0, $frame = '')

в отличие от cot_files_user_avatar_url, она возвращает полный html код аватара включая тег <IMG> и если у пользователя не установлен аватар, она выводит аватар по-умолчанию.

 

4.3 Вложения

Это самая сложная, самая гибкая и самая интересная возможность использования этого модуля. На ней стоит остановиться подробнее. Модуль Файлов позволяет не только вставлять ссылки и миниатюры в редактор, как это было описано выше, но и позволяет прикреплять к любым объектам, например страницам или постам на форуме, вложения, файлы для скачивания и галереи изображений. Кроме того, модуль умеет загружать файлы к еще пока не существующим объектам, например к странице, которая только создается. И не стоит беспокоиться о том, что останутся бесхозные файлы, если пользователь так и не сохранит страницу, система уборки вычистит файлы, если объекты для которых они предназначались, так и не были созданы.

При удалении страницы или поста на форуме модуль также сам удалит все прикрепленные к ним файлы. А вот для любых других объектов (а также если Вы используете модуль в своих модулях или плагинах) при удалении объектов, нужно позаботиться об удалении и прикрепленных к нему файлов. Но эта процедура крайне проста. Можно действовать по аналогии со скриптом files.page.delete.php, который удаляет все вложения при удалении страницы.

 

Прежде, чем мы сможем использовать вложения, нам нужно их добавить. Сделать это можно несколькими способами:

 

4.3.1 Добавление элемента загрузки файла на форму создания/редактирования объекта

В шаблон page.add.tpl добавте код

{PHP|cot_files_filebox('page', 0)}

А в шаблон page.edit.tpl

{PAGEEDIT_FORM_ID|cot_files_filebox('page', $this)}

Для добавления вложений к страницам этого достаточно. На месте тегов будет выведен загрузчик как на иллюстрации ниже. Хотите большего? Тогда дочитайте этот параграф до конца.

ID пока несуществующих объектов всегда указывается равным 0.

Функция

cot_files_filebox($source, $item, $name = '', $type = 'all', $limit = -1, $tpl = 'files.filebox');

Принимает следующие параметры:

$source — тип объекта или имя модуля. Например: page
$item — id объекта. К примеру, это ID страницы, ID поста на форуме или ID комментария. Ключевое слово шаблонизатора CoTemplate «$this» позволяет передать в этот параметр значение тега.
$name — имя поля. Можно оставить пустым. Но мы можем для одной страници прикреплять отдельно логотип, отдельно остальные файлы. Или придумать более замысловатую схему прикрепления вложений.
$type — тип загружаемых файлов. ‘all’ — все сайлы или ‘file’ или ‘image’
$limit — Ограничение на количество загружаемых файлов. Если указан -1 — то будут использованы ограничения, действующие для группы, которой принадлежит пользователь. 0 — не ограничено.
$tpl — шаблон виджета загрузки файлов.

Обратите внимание. Шаблон виджета по умолчанию использует библиотеку Bootstrap но сам его не загружает. Вы должны подключить bootstrap самостоятельно. Или добавте свои CSS стили. По своему усмотрению.

Загрузка файлов в форму

На этой иллюстрации на форме редактирования страницы присутствует два загрузчика файлов. Первый для загрузки картинки для вывода в списках страниц (логотипа с параметром $name = ‘logo’), а второй для формирования галери с названием поля — ‘gallery’. Конечно для вывода в списки страниц можно было взять первую (или последнюю) картину из поля ‘gallery’ и обойтись одним загрузчиком. Но нужно было иметь возможность поставить в качестве логотипа произвольное изображение.

Вот как это реализовано:

В шаблон page.add.tpl добавлен код:

{PHP|cot_files_filebox('page', 0, 'logo')}
{PHP|cot_files_filebox('page', 0, 'gallery')}

а в шаблон page.edit.tpl

{PAGEEDIT_FORM_ID|cot_files_filebox('page', $this, 'logo')}
{PAGEEDIT_FORM_ID|cot_files_filebox('page', $this, 'gallery')}

Картинку из первого загрузчика можно выводить, например в списках страниц или сверху страницы:

<!-- IF {LIST_ROW_ID|cot_files_count('page',$this,'logo','images')} > 0 -->
<div class="pull-left marginright10 marginbottom10">
    <a href="{LIST_ROW_URL}" title="{LIST_ROW_SHORTTITLE}" rel="bookmark" class="thumbnail"><img
                alt="{LIST_ROW_SHORTTITLE}" src="{LIST_ROW_ID|cot_files_get('page',$this,'logo')|cot_files_thumb($this,195,130,'crop')}" /></a>
</div>
<!-- ENDIF -->

а со второго — использовать как галерею на самой странице:

<!-- IF {PAGE_ID|cot_files_count('page',$this,'gallery','images')} > 0 -->
{PAGE_ID|cot_files_gallery('page',$this,'gallery')}
<!-- ENDIF -->

Интерфейс загрузчика файлов достаточно стандартен и понятен. Он позволяет выбрать один или несколько файлов за 1 раз, загрузить их, позволяет удалять загруженные, заменять файлы и редактировать описания посредством. Для настройки необходимой последовательности файлов просто перетащите соответствующую строку (Drag & Drop).

 

И еще один важный момент. Возможность загружать файлы к создаваемому объекту не будет работать при «массовом создании» объетов. Только одна форма создания одного объекта на странице. Это не относится к массовому редактированию объектов.

Если Вы используете модуль Файлов с другими объектами (или в своих модулях / плагинах) и используете загрузку файлов к пока не существующим объектам, Вам нужно сразу после сохранения объекта и до любого редиректа вызвать функцию

cot_files_linkFiles($source, $item)

Она выполняет привязку уже загруженных файлов к только что созданному объекту. Принимает 2 параметра:

$source — тот же $source, что был передан для функции cot_files_filebox(),
$item — id только что созданного объекта

Для модуля страниц вызывать cot_files_linkFiles($source, $item) не нужно. Это уже сделано в файле files.page.add.add.done.php. С другими объектами следует действовать по аналогии с ним.

При сохранении существующих объектов после редактирования (объектов у которых уже есть свой id, который передавался в функцию cot_files_filebox() вызывать cot_files_linkFiles() также не нужно. Файлы к таким объектам «привязываются» сразу, в момент загрузки.
4.3.2 Добавление загрузчика в iframe

В шаблон page.edit.tpl

{PAGEEDIT_FORM_ID|cot_files_widget('page', $this)}

Это добавит iframe с загрузчиком файлов для существующего объекта.

Функция

function cot_files_widget($source, $item, $field = '', $tpl = 'files.widget', $width = '100%', $height = '300')

Эта функция используется для создания виждета прикрепления файлов. Давайте взглянем на параметры:

$source — определяет тип содержимого к которому прикрепляются файлы или код модуля или плагина. Например ‘page’, ‘forums’, ‘comments’, и т.п..
$item — ID объекта, к которому прикрепляются файлы.
$field — имя поля. Можно оставить пустым. Позволяет к одному объекту прирепить несколько групп файлов.
$tpl — Код шаблона, содержащего html код виджета. Например, если Вы укажете ‘files.my_widget‘, система попытается срендерить файл «themes/your_theme/modules/files/files.my_widget.tpl». Шаблоны по умолчанию можно найти в папке «modules/files/tpl», Вы можете использовать их как образец. «files.widget» вставляет диалог в iframe, а «attach2.link» (см. далее) добавляет ссылку на всплывающий диалог с загрузчиком.
$width — Ширина iframe.
$height — Высота iframe.

Загрузка файлов в iframe

Замечание. Т.к. подключаемый виджет содержится в iframe, то хоть он по умолчанию и использует Bootstrap, но на дизайне Вашего сайта это никак не скажется, если Вы Bootstrap не используете. Виджет сам подключает Bootstrap, так что никаких дополнительных действий предпринимать не требуется

4.3.3 Добавление ссылки и диалога загрузки файлов.

Модуль позволяет добавлять файлы не только во время редактирования объекта, но и прямо во время просмотра.

Добавим ссылку «Прикрепить файлы» в меню администрирования страницы, в шаблон page.tpl

<!-- IF {PHP|cot_auth('files', 'a', 'W')} -->
<li>{PAGE_ID|cot_files_widget('page',$this,'','files.link')}</li>
<!-- ENDIF -->

 

 

Эта ссылка будет видна только тем пользователям, которые имеют права на прикрепление файлов (которое определяется правом «записи» (Write access) в настойках прав этого модуля).

Если нажать на ссылку «Прикрепить файлы», откроется окно следующего окно:

Виджет загрузки файлов

После того как вы загрузили все необходиомое и написали описания нажмите «закрыть», после чего содержимое страницы обновится и вы увидите результат.

Также среди шаблонов по умолчанию в папке модуля «modules/files/tpl» есть шаблон виджета «files.link.bootstrap.tpl», который открывает загрузчик в модальном окне Bootstrap. По аналогии очень легко сделать так, чтобы загрузчик открывался в диалоговом окне jQuery.UI.

4.3.4. Просмотр прикрепленных файлов

Самый простой способ вывода прикрепленных к странице файлов это использовать виджет cot_files_display() в шаблоне «page.tpl»:

<!-- IF {PAGE_ID|cot_files_count('page',$this)} > 0 -->
<div class="block">
    <h3>{PHP.L.files_attachments}</h3>
    {PAGE_ID|cot_files_display('page',$this)}
</div>
<!-- ENDIF -->

 

Который отобразит примерно следующее:

Модуль файлов — показ файлов

4.3.5. Добавление простой галереи

Для добавления простой галереи на страницу, вы можете включить в шаблон «page.tpl» следующий код:

<!-- IF {PAGE_ID|cot_files_count('page',$this,'','images')} > 0 -->
<div class="block">
    {PAGE_ID|cot_files_gallery('page',$this)}
</div>
<!-- ENDIF -->

 

 

Он добавит галерею на страницу:

Модуль файлов — галерея

Для красивого открытия изображений во всплывающем окне, Вы можете использовать любой подходящий JavaScript. Например FancyBox.

4.3.6. Добавление списка файлов для скачивания

Еще одной растространненной задачей является добавление на страницу списка файлов для скачивания. Используйте функцию cot_files_downloads() в своем шаблоне(«page.tpl»):

<!-- IF {PAGE_ID|cot_files_count('page',$this,'','files')} > 0 -->
<div class="block">
    <h3>{PHP.L.files_downloads}</h3>
    {PAGE_ID|cot_files_downloads('page',$this)}
</div>
<!-- ENDIF -->

 

Стандартный блок выглядит так:

Список файлов для загрузки

4.4 Экстраполя

Как и большинство модулей и плагинов Cotonti, модуль файлов позволяет добавлять и использовать экстраполя для файлов и папкок (альбомов). Экстраполя типа «Файл» не поддерживаются. Для редактирования их значений через Ajax элементы формы экстраполей должны иметь класс «file-edit». Просто добавте атрибут «class» со значением «file-edit» в панеле управления — на странице редактирования экстраполей в поле «HTML-код поля» .

 

4.5 Расширенные возможности

Для решения большинства задач по выводу вложений этого достаточно. Хотите большего? Тогда этот раздел для Вас.

4.5.1 Вызов функций (виджетов) из TPL шаблонов и их параметры.

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

cot_files_display
/**
 * Renders attached items on page
 * @param  string $source   Target module/plugin code
 * @param  integer $item    Target item id
 * @param  string $field
 * @param  string $tpl      Template code
 * @param  string $type     Attachment type filter: 'files', 'images'. By default includes all attachments.
 * @param  int $limit
 * @param  string $order
 * @return string           Rendered output
 */
function cot_files_display($source, $item, $field = '',  $tpl = 'files.display', $type = 'all', $limit = 0, $order = '')

Этот виджет используется для отображения прикрепленых к объекту файлов. Он может выводить как все файлы, так отдельно изображения, отдельно файлы, не являющиеся изображениями. Упомянутые выше функции cot_files_gallery и cot_files_downloads по сути являются «обертками» для этой функции. Принимаемые параметры схожи с функциями, рассмотренными выше:

$source — определяет тип содержимого к которому прикреплены изображения. Аналогично соотвествующему параметру cot_files_filebox() и cot_files_widget(). Например ‘page’, ‘forums’, ‘comments’, и т.п…
$item — ID объекта, файлы которого мы выводим.
$field — имя поля.
$tpl — Код шаблона, содержащего html код виджета.
$type — тип. Этот параметр используется при необходимости вывода только изображений или только файлов, не не являющихся изображениями.

Стандартные шаблоны Вы можете найти в папке «modules/files/tpl». Используйте их как образец.
«files.display.tpl» и «files.downloads.tpl» представляют собой разные стили отображения файлов.
«files.gallery.tpl» — шаблон галереи.
«files.bootstrap-carousel_gallery.tpl» — Слайдшоу — карусель на базе bootstrap.

Обратите внимание, на то, что параметр $tpl функции принимает имя файла без расширения. (.tpl на конце указывать не нужно)
Пример ниже отобразит все файлы, прикрепленые к посту на форуме. Код следует разместить в шаблоне «forums.posts.tpl» в блоке FORUMS_POSTS_ROW:

{FORUMS_POSTS_ROW_ID|cot_files_display('forums',$this)}

cot_files_count
/**
 * Returns number of attachments for a specific item.
 * @param  string $source   Target module/plugin code
 * @param  integer $item    Target item id
 * @param  string $field    Target item field
 * @param  string $type     Attachment type filter: 'files', 'images'. By default includes all attachments.
 * @return integer          Number of attachments
 */
function cot_files_count($source, $item, $field = '', $type = 'all')

Возвращает количество файлов, присоединенных к объекту. Параметры аналогичны cot_files_display(), за исключением того, что параметр $field может принимать значение '_all_'. В этом случае фукнция вернет общее количество файлов, прикрепленных к объекту (ко всем «полям»)

Например, выводим список файлов, прикрепленных к посту на форуме только если хотя бы один файл был прикреплен:

<!-- IF {FORUMS_POSTS_ROW_ID|cot_files_count('forums',$this)} > 0 -->
<div class="block">
    {FORUMS_POSTS_ROW_ID|cot_files_gallery('forums',$this)}
</div>
<!-- ENDIF -->
cot_files_gallery
/**
 * Renders images only as a gallery.
 * @param  string $source   Target module/plugin code
 * @param  integer $item    Target item id
 * @param  string $field
 * @param  string $tpl      Template code
 * @param  int $limit
 * @param  string $order
 * @return string           Rendered output
 */
function cot_files_gallery($source, $item, $field = '', $tpl = 'files.gallery', $limit = 0, $order = '')

Функция обертка для cot_files_display() с параметром $type установленном в ‘images‘ и c кодом шаблона по умолчанию ‘files.gallery‘.

cot_files_downloads
/**
 * Renders files only as downloads block.
 * @param  string $source   Target module/plugin code
 * @param  integer $item    Target item id
 * @param  string $field
 * @param  string $tpl      Template code
 * @param  int $limit
 * @param  string $order
 * @return string           Rendered output
 */
function cot_files_downloads($source, $item, $field = '', $tpl = 'files.downloads', $limit = 0, $order = '')

Функция обертка для cot_files_display() с параметром $type установленном в ‘files‘ и c кодом шаблона по умолчанию ‘files.gallery‘.

Обычно используется для организации блоков файлов для скачивания.

cot_files_thumb

cot_files_thumb

/**
 * Returns attachment thumbnail path. Generates the thumbnail first if
 * it does not exist.
 * @param  mixed   $id     File ID or instance of files_model_File.
 * @param  integer $width  Thumbnail width in pixels
 * @param  integer $height Thumbnail height in pixels
 * @param  string  $frame  Framing mode: 'width', 'height', 'auto', 'border_auto' or 'crop'
 * @return string          Thumbnail path on success or false on error
 */
function cot_files_thumb($id, $width = 0, $height = 0, $frame = '')

 

Генерирует миниатюру для изображения и возвращает ее URL.

Принимаемые параметры:

$id — id файла или экземпляр класса files_model_File
$width — ширина миниатюры
$height — высота миниатюры
$frame — режим кадрирования. Может принимать следующие значения
— ‘width’ заполняет миниатюру по ширине и сохраняет соотношение сторон.
— ‘height’ заполняет миниатюру по высоте и сохраняет соотношение сторон.
— ‘auto’ (по-умолчанию) сохраняет соотношение сторон уменьшая изображение таком образом, чтобы его размеры не превысили заданых.
— ‘crop’ уменьшает изображение сохраняя соотношение сторон и обрезает изображение так, чтобы оно полностью заполнило указаные размеры. На примере галереи выше использован именно этот режим.

cot_files_get

/**
 * Fetches a single attachment object for a given item.
 * @param  string $source   Target module/plugin code.
 * @param  integer $item    Target item id.
 * @param  string $field    Target item field
 * @param  string $column   Empty string to return full row, one of the following to return a single value: 'id',
 *                              'user_id', 'path', 'name', 'ext', 'img', 'size', 'title', 'count'
 * @param  string $number   Attachment number within item, or one of these values: 'first', 'rand' or 'last'. Defines which image is selected.
 * @return mixed            Scalar column value, files_model_File object or NULL if no attachments found.
 */
function cot_files_get($source, $item, $field = '', $column = '', $number = 'first')

Параметры:

$source — определяет тип содержимого к которому прикреплены изображения. Аналогично соотвествующему параметру cot_files_display().
$item — ID объекта.
$field — аналогично соотвествующему параметру cot_files_display().
$column — если не передано, то возвращает экземпляр класса files_model_File, иначе вернет значение указанного поля этого объекта.
$number — Порядковый номер вложения или ‘first’ для вывода первого файла, ‘rand’ — для случайного или ‘last’ для последнего.

Пример вывода обложки страницы в шаблоне page.list.tpl:

<!-- IF {LIST_ROW_ID|cot_files_count('page', $this, '', 'images')} > 0 -->
<div class="pull-left">
    <a href="{LIST_ROW_URL}" title="{LIST_ROW_SHORTTITLE}" class="thumbnail marginright10 no-ico"><img alt="{LIST_ROW_SHORTTITLE}" src="{LIST_ROW_ID|cot_files_get('page', $this)|cot_files_thumb($this, 195, 130, 'crop')}" /></a>
</div>
<!-- ENDIF -->

 

Как видите, результат работы этой функции можно передать в cot_files_thumb().

 

4.5.2 BB-коды для вставки в контент

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

Для этого необходимо знать id файла (или папки). Синтаксис параметров bb-кода схож со строкуой URL запроса. Доступные bb-коды:

[files_thumb] — вставляет только миниатюру в тег <img/>.
[files_image] — вставляет a кликабельную миниатюру с ссылкой на большое изображение.
[pfs_gallery] — вставляет галерею, генереруемую из публичной папки файлового хранилища.

Пример использования:

[ files_thumb?id=15]
[ files_image?id=11&width=320&height=240&alt=Picture description&class=foo]
[ pfs_gallery?f=5&tpl=files.bootstrap-carousel_gallery]

Эти bb-коды работают независимо от парсера, включая HTML и Markdown. Если Вы хотите их отключить, просто приостановите выполнение части «parser» этого модуля в панели управления «Управление сайтом / Расширения / Files».

 

тип: модуль
Версия модуля: 1.0.4
Совместимость: Siena
GitHub: https://github.com/Alex300/files

Автор статьи: Алексей Кальнов. Источник материала.

 

Хостинг без головной боли

Тариф "Старт" - оптимально, не дорого, полностью готовый и проверенный хостинг для установки такого сайта, - сборка фриланс биржи и маркетплейс услуг, продукции, цифровых товаров.

1 месяц на тест бесплатно + сервисный домен
(свой домен прикрепить и протестирвать можно даже на бесплатном тестовом периоде хостинга)

Оставьте комментарий

Прокрутить вверх