Сниппеты. Modx docs
modDevTools / Компоненты / docs.modx.pro
Компонент, который помогает разработчикам быстрее и проще работать в админке MODX Revolution.
Возможности компонента
На странице редактирования чанка добавляются вкладки, в которых можно изменять связанные объекты:
- "Шаблоны" - код шаблонов, в которых выводится данный чанк. Если установлен Ace, появляется выделение чанка в коде шаблонов.
- "Чанки" - код чанков, которые вызываются в данном чанке. Параметры сниппетов, указанные при вызове и по умолчанию, и которые являются чанками, тоже выводятся здесь.
- "Сниппеты" - код сниппетов, которые вызываются в данном чанке. Под кодом сниппетов можно развернуть описание их параметров по умолчанию.
- "Ресурсы" - список ресурсов, в шаблоне или контенте которых вызывается тем или иным образом данный чанк. Можно перейти на редактирование ресурса, открыть его в браузере, быстро изменить шаблон, статус публикации или удалить в корзину.
На странице редактирования шаблона добавляются следующие вкладки:
- "Чанки" - код чанков, которые вызываются в данном шаблоне.
- "Сниппеты" - код сниппетов, которые вызываются в данном шаблоне.
- "Ресурсы" - список ресурсов с данным шаблоном.
На странице редактирования сниппета добавляется вкладка с ресурсами, в шаблоне или контенте которых вызывается данный сниппет.
На странице редактирования ресурса добавляются так называемые "Хлебные крошки" (BreadCrumbs).
Они сделаны на основе ExtJS-компонента хлебных крошек из установщика пакетов дополнений и вписываются в общее оформление админки независимо от версии.
Так же хлебные крошки показываются в "Обзоре ресурса" (его можно увидеть при клике правой кнопки на ресурсе в дереве, или просто не имея прав на редактирование ресурса, но имея на просмотр). В этом случае производится переход на обзор ресурса родителя, а не на его редактирование.
Поддерживаются контексты, т.е. в каком контексте ресурс, в этом контексте показываются и его родители.
Поиск и замена строк в чанках и шаблонах.
Для этого появился подраздел modDevTools в меню «Приложения». Все довольно просто. Вводите строку и нажимаете кнопку «Найти». Ниже есть фильтры в контенте каких элементов осуществлять поиск.
После того, как поиск произошел, выводится код всех найденных элементов с подсветкой искомой строки. Замена производится в каждом элементе отдельно. Для этого после кода элемента идет панель с 3 кнопками: «Заменить», «Заменить все» и «Пропустить».
Кнопка «Заменить» меняет искомую строку, на которой установлен курсор (более темная подсветка), на строку замены. Кнопка «Пропустить» передвигает курсор на следующее совпадение. После первоначального поиска можно изменить строку поиска, и тогда кнопки замены оперируют уже с этой новой строкой только для конкретного элемента, после которого они расположены.
Права пользователей для доступа к функциям modDevTools:
Компонент сам не добавляет, но во всю использует стандартные права пользователей.
view_chunk И view_template | Для доступа к разделу поиска и замены строк (пункт меню modDevTools) |
save_chunk | Для замены строк в чанках в этом разделе. |
save_template | Для замены строк в шаблонах в этом разделе. |
view_chunk | Для показа вкладки "Чанки" |
view_template | Для показа вкладки "Шаблоны" |
view_snippet | Для показа вкладки "Сниппеты" |
resource_tree | Для показа вкладки "Ресурсы" |
edit_document | Для показа кнопки "Редактировать" в таблице на вкладке "Ресурсы" |
save_document | Для изменения шаблона ресурса в таблице на вкладке "Ресурсы" |
publish_document | Для изменения статуса публикации в таблице на вкладке "Ресурсы" |
delete_document | Для удаления ресурса в корзину в таблице на вкладке "Ресурсы" |
save_chunk/save_template/save_snippet | Используются стандартные процессоры MODX, поэтому для редактирования элементов нужны соответствующие права. |
Внимание: нет поддержки групп ресурсов (пока?), т.е. если какая-то группа ресурсов скрыта от менеджера в админке, то он сможет ее увидеть в списке ресурсов элементов.
Дополнительная информация:
- Если элемент, показывающийся в новых вкладках, находится в фокусе и изменен, то с помощью Ctrl-s сохраняется он, если не в фокусе - то родительский элемент (при этом изменения в дочернем потеряются).
- Кнопка "Сохранить" у родительского элемента неактивна, если дочерний элемент оказывался в фокусе для предотвращения случайного сохранения. Включается переходом на другую вкладку.
- Поддерживается AjaxManager
- Поддерживаются версии MODX Revolution 2.3.x (в первую очередь, разработка ведется на нем) и 2.2.x (минимальная поддержка, только чтобы все работало и выглядело не совсем страшно).
- Некоторые второстепенные функции поддерживаются только при наличии редактора Ace
docs.modx.pro
Быстрый старт / miniShop2 / Компоненты / docs.modx.pro
miniShop2 поставляется со всеми необходимыми сниппетами и чанками. Для работы вам нужен MODX не ниже 2.3 и PHP не ниже 5.3.
Установка
- Подключите наш репозиторий
- Установите pdoTools - это библиотека для быстрой работы с БД и оформлением, необходима для многих компонентов
- Установите Theme.Bootstrap - а это тем оформления Twitter Bootstrap для MODX, под неё заточены стандартные чанки магазина
- Установите сам miniShop2
Для тестирования можно использовать наш хостинг, на нём эти дополнения можно выбрать прямо при создании сайта.
Шаблоны
Theme.Bootstrap устанавливает 2 шаблона, которые вы можете менять по своему усмотрению. Вы можете переименовать и использовать их, или создать новые.
Всего нам нужно 3 шаблона.
Общий
Это шаблон для вывода содержимого обычных ресурсов
<!DOCTYPE html> <html lang="en"> <head> [[$Head]] </head> <body> [[$Navbar]] <div> <div> [[*content]] </div> [[$Footer]] </div> </body> </html>Он будет использоваться для главной страницы и корзины.
Категория
Шаблон вывода категории с постраничным выводом товаров
<!DOCTYPE html> <html lang="en"> <head> [[$Head]] </head> <body> [[$Navbar]] <div> <div> [[!pdoPage? &element=`msProducts` ]] [[!+page.nav]] </div> [[$Footer]] </div> </body> </html>Товар
Шаблон товара, вместо содержимого вызывается чанк из комплекта ms2
Созданные шаблоны можно указать в системных настройках:
- default_template - здесь указываем наш общий шаблон
- ms2_template_category_default - шаблон категории
- ms2_template_product_default - шаблон товара
Разделы
Главная страница у нас уже есть, просто назначаем ей "Общий" шаблон и пишем в контент:
[[!pdoMenu]]Это покажет нам все документы сайта на главной, чтобы не заблудиться.
Затем создаём категорию товаров и проверяем, чтобы у неё был шаблон "Категория".
После создания категории, добавляем в неё несколько товаров и проверяем их шаблон тоже.
Теперь осталось только создать корзину. Для этого создаём новую страницу с шаблоном "Общий" в корне сайта, и пишем там:
[[!msCart]] [[!msOrder]] [[!msGetOrder]]Эти сниппеты выведут нам корзину, оформление заказа и покажут созданный заказ.
Они сделаны таким образом, чтобы что-то выводить только когда это нужно. Например, msCart и msOrder прячутся, если в адресе страницы есть параметр msorder=id заказа, а вот msGetOrder наоборот, реагирует только на него.
Миникорзина
Всё, первичная настройка магазина окончена и уже можно заказывать товары.
В качестве финального штриха можно еще зайти в чанк Navbar и добавить там вывод миникорзины. Например, вот так:
<div> <!-- Это вывод меню, он есть по умолчанию --> <ul> [[pdoMenu? &startId=`0` &level=`1` &tplOuter=`@INLINE {{+wrapper}}` ]] </ul> <!-- А вот здесь добавляем миникорзину --> <ul> <li>[[!msMiniCart]]</li> </ul> </div>docs.modx.pro
Сниппеты / easyComm / Компоненты / docs.modx.pro
ecForm
Сниппет выводит форму добавления нового сообщения.
Сниппет можно вызывать кешированным, так как его назначение - только вывести html код формы и новую цепочку. При первом вызове сниппет создает в базе новую цепочку сообщений (объект ecThread), привязанную к текущему ресурсу. При любом вызове сниппета (а не только при первом) в поле properties объекта ecThread записываются в формате json все параметры сниппета, что бы в дальшейшем можно было их использовать.
Параметры сниппета
thread | resource-[[*id]] | Имя цепочки сообщений. Должно быть уникальным. |
formId | как thread | Используется на фронтенд для идентификации формы при наличии нескольких форм на одной странице. |
allowedFields | user_name, user_email, user_contacts, subject, rating, text | Список разрешенных для заполнения полей в форме. |
requiredFields | user_name, text | Список обязательных полей. |
antispamField | address | Имя поля, используемого как антиспам. Это поле должно быть скрыто от пользователя через css, и он его не заполнит, в то время, как спам-роботы будут его заполнять. |
autoPublish | 0 | Автопубликация сообщений. Возможны варианты "пустое значение" - автопубликация отключена, "OnlyLogged" - автопубликация, если пользователь авторизован в текущем контексте, "All" - автопубликация сообщений от всех пользователей. |
tplForm | tpl.ecForm | Чанк с формой |
tplFormReCaptcha | tpl.ecForm.ReCaptcha | Чанк с ReCaptcha |
tplSuccess | tpl.ecForm.Success | Чанк с сообщением об успешной отправке сообщения. |
mailManager | E-mail администратора для уведомлений о новых сообщениях, перекрывает настройку ec_mail_manager. Используя этот параметр вы можете указать разные адреса для разных вызовов сниппета ecForm | |
newEmailSubjUser | Тема email письма пользователю о том, что он оставил сообщение, перекрывает настройку ec_mail_new_subject_user | |
tplNewEmailUser | tpl.ecForm.New.Email.User | Чанк с шаблоном email письма пользователя о том, что он оставил сообщение. Если параметр пуст - письмо отправлено не будет. |
newEmailSubjManager | Тема email письма менеджеру о новом сообщении на сайте, перекрывает настройку ec_mail_new_subject_manager | |
tplNewEmailManager | tpl.ecForm.New.Email.Manager | Чанк с шаблоном email письма менеджеру о новом сообщении на сайте. Если параметр пуст - письмо отправлено не будет. |
updateEmailSubjUser | Тема email письма пользователю о публикации сообщения или ответе на него, перекрывает настройку ec_mail_update_subject_user | |
tplUpdateEmailUser | tpl.ecForm.Update.Email.User | Чанк с шаблоном email письма пользователю о публикации сообщения или ответе на него. Если параметр пуст - письмо отправлено не будет. |
Зависимости
Важно! Для работы формы отправки сообщения необходимо наличие подключенного на странице jquery и плагина jquery.form (не поставляется с компонентом, необходимо подключать вручную!). Если последний не подключен - вы увидите сообщение "Can`t find jQuery ajaxForm plugin!".
ecMessages
Сниппет выводит сообщения из определенной цепочки. Обязательно вызывать некешированным, т.к. при публикации сообщений из админки кеш сайта не очищается.
Параметры сниппета
thread | resource-[[*id]] | Имя цепочки сообщений. |
threads | Список цепочек, из которых необходимо выводить сообщения, через запятую (например "resource-1,resource-2"). Укажите *, что бы вывести сообщения из всех цепочек. Параметр имеет приоритет над параметром thread. | |
messages | Id конкретных Сообщений для вывода. | |
subject | Отфильтровать сообщения по Теме (поле subject) | |
tpl | tpl.ecMessages.Row | Чанк для вывода одного сообщения. В чанке доступны поля сообщения, цепочки (с префиксом thread_). Используя параметр resourceFields, можно включить в выборку и поля ресурса. |
tplWrapper | Чанк обертка. Используйте в нем плейсхолдер [[+output]]. Кроме того, если используется вывод сообщений только из одной цепочки, то будут доступны все поля thread как плейсхолдеры, а также рейтинг цепочки в отформатированном виде [[+rating_wilson_percent]] и [[+rating_simple_percent]] | |
tplEmpty | Чанк для отображения, если нечего выводить. | |
sortby | date | Поле для сортировки |
sortdir | DESC | Направление сортировки |
limit | 10 | Ограничение выборки |
showUnpublished | 0 | Показывать неопубликованные сообщения |
showDeleted | 0 | Показывать удаленные сообщения |
resourceFields | Добавить в выборку поля ресурса (с префиксом resource_), например: "id,pagetitle,longtitle,introtext". Поля id и pagetitle добавляются всегда, но лучше их явно указать, т.к. это поведение может быть изменено в будущем. | |
outputSeparator | \n | Разделитель вывода строк |
toPlaceholder | Если указан этот параметр, то результат будет сохранен в плейсхолдер, вместо прямого вывода на странице. | |
toSeparatePlaceholders | Задать плейсхолдер для каждого сообщения | |
showLog | 0 | Показывать лог |
ecMessagesCount
Сниппет выводит количество сообщений из определенной цепочки (или цепочек). Обязательно вызывать некешированным, т.к. при публикации сообщений из админки кеш сайта не очищается.
Параметры сниппета
thread | resource-[[*id]] | Имя цепочки сообщений. |
threads | Список цепочек, из которых необходимо выводить сообщения, через запятую (например "resource-1,resource-2"). Укажите *, что бы вывести сообщения из всех цепочек. Параметр имеет приоритет над параметром thread. | |
subject | Отфильтровать сообщения по Теме (поле subject) | |
showUnpublished | 0 | Показывать неопубликованные сообщения |
showDeleted | 0 | Показывать удаленные сообщения |
ecThreadRating
Сниппет выводит рейтинг указанной цепочки. Обязательно вызывать некешированным, т.к. при публикации сообщений из админки кеш сайта не очищается. С версии 1.5.1-pl в стандартном чанке добавлена микроразметка http://schema.org/AggregateRating
Параметры сниппета
thread | resource-[[*id]] | Имя цепочки сообщений. |
tpl | tpl.ecThreadRating | Чанк для вывода рейтинга. Доступны плейсхолдеры rating_simple, rating_simple_percent, rating_wilson, rating_wilson_percent, а также все поля объекта ecThread |
toPlaceholder | Если заполнить параметр, то результат будет установлен в плейсхолдет с таким именем |
docs.modx.pro
VoteForms / Компоненты / docs.modx.pro
Система голосования и опросов для MODX Revolution
GithubПоcледние версии
Возможности
- конструктор форм для голосования в modx manager
- вывод результaтов голосования с сортировкой и поиском в modx manager
- вывод форм и результатов для голосования на сайте, обновление на лету через ajax
- возможность привязать результаты голосования к ресурсу или любому другому объекту создав новый thread
Системные настройки
voteforms_assets_url | {assets_url}components/voteforms/ | Url к файлам фронтенда |
voteforms_core_path | {core_path}components/voteforms/ | Путь к компоненту |
voteforms_frontend_css | [+cssUrl]]web/voteforms.css | Путь к файлу со стилями. Если вы хотите использовать собственные стили - укажите путь к ним здесь, или очистите параметр и загрузите их вручную через шаблон сайта. |
voteforms_frontend_js | [[+jsUrl]]web/voteforms.js | Путь к файлу со скриптами. Если вы хотите использовать собственные скрипты - укажите путь к ним здесь, или очистите параметр и загрузите их вручную через шаблон сайта. |
Параметры вызова сниппета VoteForm
id | Id формы, обязательный параметр | |
thread | resource-[[*id]] | Имя ветки для записи результатов. По умолчанию, "resource-[[*id]]" |
tplRow | tpl.VoteForms.row | Чанк оформления для каждого поля |
tplOuter | tpl.VoteForms.outer | Чанк оформления всего содержимого |
sortby | index | Поле для сортировки. |
sortdir | ASC | Направление сортировки |
submit | false | Использовать кнопку отправить в форме |
Параметры вызова сниппета getVoteFormRating
form | Id формы, обязательный параметр | |
resource | Id ресурса. По умолчанию текущий ресурс | |
field | Id поля - вывести результаты голосования только по этому полю | |
thread | resource-[[*id]] | Имя ветки для записи результатов. По умолчанию, "resource-[[*id]]" |
tpl | tpl.VoteForms.rating | Чанк оформления |
stars | true | Выводить виджет с результатами голосования или нет |
Способы вызова
[[VoteForm?&id=`1`]] [[getVoteFormRating?form=1]] [[getVoteFormRating?form=1&field=2]]Испрользование вместе с pdoResources : сортировка ресурсов по рейтингу из формы c id 1
[[pdoResources? &class=`modResource` &parents=`0` &tpl=`@INLINE <li>[[+pagetitle]] - <span>[[+rating]]</span> </li>` &leftJoin=`{ "VoteFormThread": { "class": "VoteFormThread", "on": "modResource.id = VoteFormThread.resource AND VoteFormThread.form = 1" } }` &select=`{ "modResource": "*", "VoteFormThread": "rating" }` &sortby=`VoteFormThread.rating` &sortdir=`DESC` ]]Плейсхолдеры доступные в чанках компонента
VoteForm - tpl.VoteForms.outer
output, rating_max, параметры вызова сниппета
VoteForm - tpl.VoteForms.row
- поля объекта VoteFormField: id, index, form, name, description, type
- результат голосования пользователя: record, rating_max
getVoteFormRating - tpl.VoteForms.rating
- поля объекта VoteFormThread: id, resource, form, name, rating, users_count
- поля объекта VoteFormForm: form.id, form.name, form.description, form.active, form.rating_max
- при указанном параметре field:
- поля объекта VoteFormField: field.id, field.index, field.form, field.name, field.description, field.type
- rating и users_count рассчитываются для конкретного поля
- виджет для голосования: stars
Разработка дополнения
О предложениях и ошибках в работе VoteForms сообщайте на Github.
docs.modx.pro
pdoSitemap / Сниппеты / pdoTools / docs.modx.pro
- Параметры
- Примеры
Быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml). Понимает параметры сниппета GoogleSitemap (конвертирует в собственные) и легко его заменяет.
Главная особенность - очень высокая скорость, по сравнению с аналогом. На сайте bezumkin.ru при 1700 страниц скорость генерации возросла в 12 раз, с 8.4 сек. до 0.7.
По умолчанию отключена проверка прав на доступ к документам. Это легко исправить включением параметра &checkPermissions (Внимание: замедляет работу!):
[[!pdoSitemap? &checkPermissions=`list` ]]По возможности ресурсы лучше исключать из карты параметрами сниппета.
Параметры
pdoSitemap принимает все параметры pdoTools и некоторые свои:
&sitemapSchema | http://www.sitemaps.org/schemas/sitemap/0.9 | Схема карты сайта. |
&forceXML | 1 | Принудительно выводить страницу как XML. |
&priorityTV | Дополнительное поле, в котором указывается приоритет документа. Нужно добавить его в параметр &includeTVs |
Шаблоны
&tpl
@INLINE <url>\n\t <loc>[[+url]]</loc>\n\t <lastmod>[[+date]]</lastmod>\n\t <changefreq>[[+update]]</changefreq>\n\t <priority>[[+priority]]</priority>\n </url>&tplWrapper
@INLINE <?xml version=\"1.0\" encoding=\"[[++modx_charset]]\"?>\n<urlset xmlns=\"[[+schema]]\">\n[[+output]]\n</urlset>Приоритет и частота обновления для поисковиков устанавливаются в зависимости от последней даты изменения документа:
Менее суток назад | 1.0 | daily |
Более суток и менее недели назад | 0.75 | weekly |
Более недели и менее месяца назад | 0.5 | weekly |
Более месяца назад | 0.25 | monthly |
Инструкция по созданию файла sitemap.xml
- Создайте новый документ в корне сайта. На вкладке Документ выберите пустой шаблон, укажите Заголовок документа (не важно какой), и псевдоним sitemap. Проверьте, чтобы стояли галочки «Опубликован» и «Не показывать в меню».
- Перейдите на вкладку Настройки и укажите «Тип содержимого» - «XML».
- Уберите галочку с «Использовать HTML-редактор» и сохраните документ.
- В содержимом ресурса вызовите только сниппет pdoSitemap (см. Примеры ниже).
Примеры
Обычный вывод карты сайта для текущего контекста. В большинстве случаев этого может быть достаточно:
[[pdoSitemap]]Генерируем карту сайта только из определённый контейнеров:
[[pdoSitemap? &parents=`10` ]]Исключаем ресурсы с id = 15 и 25, вместе с их потомками:
[[pdoSitemap? &parents=`10, -15,-25` ]]А теперь исключаем id = 15 с потомками, а 25 - без:
[[pdoSitemap? &resources=`-25` &parents=`-15,10` ]]Добавляем еще один контекст:
[[pdoSitemap? &resources=`-25` &parents=`-15,10` &context=`web,catalog` ]]А вот так можно посмотреть лог выборки карты:
[[pdoSitemap? &resources=`-25` &parents=`-15,10` &context=`web,catalog` &showLog=`1` &forceXML=`0` ]]docs.modx.pro
pdoCrumbs / Сниппеты / pdoTools / docs.modx.pro
Сниппет для построения навигации в стиле хлебных крошек.
Хорошо заменяет BreadCrumb, работает с документами из любых контекстов и позволяет указывать различные условия для выборки ресурсов.
Сниппет обладает очень высокой скоростью работы, за счет выборки всех нужных элементов из БД за один запрос.
Параметры
Принимает все параметры pdoTools и некоторые свои:
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr». |
&from | 0 | Id ресурса, от которого строить хлебные крошки. Обычно это корень сайта, то есть «0». |
&to | Id ресурса для которого строятся хлебные крошки. По умолчанию это id текущей страницы. | |
&exclude | Список id ресурсов, которые нужно исключить из выборки. | |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. | |
&outputSeparator | \n | Разделитель между крошками |
&tpl | Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. | |
&tplCurrent | Чанк оформления текущего документа в навигации. | |
&tplMax | Чанк, который добавляется в начало результатов, если их больше чем &limit. | |
&tplHome | Чанк оформления ссылки на главную страницу. | |
&tplWrapper | Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &toSeparatePlaceholders. | |
&wrapIfEmpty | Включает вывод чанка-обертки &tplWrapper даже если результатов нет. | |
&showCurrent | 1 | Выводить текущий документ в навигации. |
&showHome | 0 | Выводить ссылку на главную в начале навигации. |
&showAtHome | 1 | Показывать хлебные крошки на главной странице сайта. |
&hideSingle | 0 | Не выводить результат, если он один единственный. |
&direction | ltr | Направление навигации: слева направо «ltr» или справа налево «rtl», например для Арабского языка. |
Шаблоны
&tpl | @INLINE <li><a href="[[+link]]">[[+menutitle]]</a></li> |
&tplCurrent | @INLINE <li>[[+menutitle]]</li> |
&tplMax | @INLINE <li> ... </li> |
&tplHome | |
&tplWrapper | @INLINE <ul>[[+output]]</ul> |
Примеры
Генерация хлебных крошек для текущей страницы:
[[pdoCrumbs]]Генерация в ограничением по количеству пунктов:
[[pdoCrumbs? &limit=`2` ]]Сниппет хорошо работает при вызове из pdoResources. Например, вот такой чанк:
<h4>[[+pagetitle]]</h4> <p>[[+introtext]]</p> [[pdoCrumbs? &to=`[[+id]]` &showCurrent=`0` ]]Демо
Рабочий пример генерации хлебных крошек в результатах поиска mSearch3.
docs.modx.pro
FileAttach / Компоненты / docs.modx.pro
Модуль для загрузки файлов к ресурсам в менеджере сайта
- Поддерживается ограничение доступа к загрузке и скачиванию политиками;
- Есть административное управление всеми загруженными файлами на сайте;
- Для обзора загруженных файлов есть медиа источник, он доступен при глобальной регистрации пакета во время установки;
- Список файлов хранится в таблице
К каждому файлу можно указывать описание, режим приватности (доступность по прямой ссылке), количество скачиваний, контрольную сумму SHA1.
Файлы доступны для скачивания по прямой ссылке. Для "закрытых" файлов генерируется длинное название, не соответствующее изначальному имени файла. У "открытых" файлов имя сохраняется.
Произвольный порядок файлов в списке можно задать перетягиванием записей в редакторе на нужное место.
Поддерживает работу в СУБД MySQL и SQLSrv DB.
Разработка компонента ведется на странице: https://github.com/13hakta/FileAttach
Чанк FileAttachTpl
Позволяет задать произвольное оформление для вывода записей файлов.
&description | Описание |
&docid | Идентификатор ресурса, для которого загружен файл |
&download | Количество скачиваний |
&hash | Контрольная сумма SHA1 |
&id | Идентификатор файла |
&internal_name | Внутреннее имя. Содержит имя файла в файловой системе |
&name | Имя файла. Совпадает с internal_name когда private=нет |
&path | Путь внутри медиа источника |
&private | Признак закрытости файла |
&rank | Порядок в списке. Можно использовать для сортировки |
&size | Размер файла в байтах |
Изначальное содержание чанка:
<p>[[+description:notempty=`<strong>[[+description]]</strong><br/>`]] <a href="[[+url]]">[[+name]]</a> <span>[[+download]]</span> [[+size:notempty=`<br/><small>Size: [[+size]] bytes</small>`]] [[+hash:notempty=`<br/><small>SHA1: [[+hash]]</small>`]]</p>Сниппет FileAttach
Выводит список файлов.
&limit | 0 | Ограничение вывода файлов на странице. Если не указано, то вывод всех прикрепленных файлов |
&makeURL | false | Создавать ссылку для скачивания файла |
&outputSeparator | Разделитель вывода записей | |
&privateUrl | false | Форсировать использование обработчик скачиваний, что позволяет считать скачивания даже для открытых файлов |
&resource | 0 | Показать файлы для документа с номером id, если не указано, то вывод только для текущего документа |
&showSize | false | Получать размер файла |
&sortBy | name | Сортировать по полю |
&sortDir | ASC | Направление сортировки |
&toPlaceholder | false | Сохранять результат в плейсхолдер, вместо прямого вывода на странице |
&tpl | FileAttachTpl | Чанк оформления каждого ряда файлов |
Класс FileItem
Методы
generateName | Сгенерировать новое имя файла | length (int) = 32 |
getFullPath | Получить полный путь к файлу | |
getPath | Получить путь к файлу относительно корня медиа источника | |
getSize | Получить размер файла | |
getUrl | Получить ссылку на файл | |
rename | Переименовать файл | name (str) |
sanitizeName | Отфильтровать недопустимые комбинации символов в имени файла | name (str) |
setPrivate | Установить режим приватности | private (bool) |
Системные настройки
calchash | false | Вычислять контрольную сумму SHA1 при загрузке файла |
download | true | Считать количество скачиваний |
files_path | Путь | Путь файла относительно корня медиа источника. Завершается на "/". |
mediasource | 1 | Идентификатор медиа источника |
private | false | Делать файл закрытым при загрузке |
put_docid | false | Размещать файл в подкаталоге ресурса |
templates | Список шаблонов документов, в которых будет активирован модуль. Перечисление через запятую | |
user_folders | false | Размещать файл в подкаталоге пользователя |
Коннектор для скачивания файлов
Закрытые файлы скачиваются через коннектор, что позволяет скрыть прямую ссылку на файл и произвести подсчет количества скачиваний. Можно скачивать открытые файлы через коннектор, указав в вызове сниппета &privateUrl=`1`, при этом коннектор сделает перенаправление на прямую ссылку.
Ссылка на коннектор имеет вид: MODX_ASSETS_URL/components/fileattach/connector.php?action=web/download&ctx=web&id=file_id, где file_id - порядковый номер файла в таблице БД.
Политики доступа
Список разрешений
fileattach.doclist | Управление файлами в документе |
fileattach.download | Возможность скачивать файлы |
fileattach.totallist | Управление всеми файлами |
Пример использования
В простом случае можно просто вызвать сниппет:
[[FileAttach]]Чтобы для всех файлов считалось количество скачиваний надо чтобы они открывались через приватную ссылку:
[[FileAttach? &privateUrl=`1`]]Сортировка по порядку, заданному вручную:
[[FileAttach? &sortby=`rank`]]Снимки экрана
docs.modx.pro