MODX. Публикации из фронт энда, компонент NewsPublisher
Отредактировано: 19 Апреля 2018
NewsPublisher — компонент для публикации ресурсов из фронт-енда. Работает с деревом ресурсов, дополнениями Collections и Articles.
Для работы компонента, необходимо разместить его в контентной части ресурса, который будет контейнером для всех публикаций извне, вызов сниппета:
[[!NewsPublisher]]
Если будет использоваться дополнение Articles, то вызов должен содержать как минимум такие параметры:
[[!NewsPublisher?
&parentid — `1` // ID страницы контейнера
&templateid — `1` //ID шаблона дочерних ресурсов
&classkey — `Article`
&hidemenu — `1`
]]
Для указания полей, которые должны выводиться на странице, используется свойство
- &show=`pagetitle,description,pub_date,introtext,TV1,TV2`
На странице поля будут выводиться в порядке, указанном в этом свойстве.
Настройка доступа
Админ может использовать NewsPublisher по умолчанию, тогда как остальным пользователям необходимо дать разрешение на публикацию, добавив пользователю или группе политику NewsPublisherEditor. Если пользователь не авторизован, NewsPublisher перенаправляет его на страницу входа, что, впрочем, можно отключить, параметром &np_login_redirect (No,Yes). Если редирект разрешен, в параметре &np_login_id надо указать ID страницы для входа.
Работа с ресурсами
Редактирование существующих ресурсов
Для добавления возможности редактирования, в шаблоне страницы необходимо разместить тег [[NpEditThisButton]].
По умолчанию, кнопка расположена в нижней правой части страницы, и имеет несколько параметров:
- &right — расстояние от правого края (по умолчанию 20%);
- &bottom — расстояние от нижнего края (по умолчанию 20%);
- &noShow — отображение кнопки можно отключить на выборочных страницах, указав идентификаторы в этом параметре;
- &ownpagesonly — отображение кнопки только для страницы созданной пользователем;
Создание дубликата ресурса
При установке параметра &duplicatebutton = `1` появляется кнопка «дублировать ресурс», при нажатии на нее, текущий ресурс сохраняется, а пользователь перемещается на страницу редактирования новой копии ресурса.
Удаление ресурса
При установке параметра &deletebutton = `1` появляется кнопка «удалить ресурс», при нажатии на нее, текущий ресурс удаляется, так же как и потомки ресурса. При установке параметра &confirmdelete = `1` (по умолчанию 1) — появляется всплывающее окно с подтверждением решения удалить ресурс и его дочерние страницы. Если поставить 0, ресурсы будут удаляться без вопроса.
Параметры страницы для нового документа
&published_default
&hidemenu_default
&cacheable_default
&searchable_default
&richtext_default
Это настройки для ресурсов которые будут созданы. Каждая из них может принимать значения `1`, `0`, `Parent`, или`System Default`. Если установлено значение `parent`, будет использоваться родительское значение (в этом случае &parentid должно быть установленно
). Если параметры не устанавливать, будут использоваться системные настройки.
Настройка &published_default может быть переопределена пользователем, если он проставит поля pub_date или unpub_date.
Вкладки
Поля NewsPublisher можно разделять по вкладкам, настраивая отображение подобно админ панели MODX. Для этого надо установить параметры:
&usetabs=`1`
&tabs=`{
"Main" : ["pagetitle","introtext","content"],
"Dates" : ["pub_date", "unpub_date"],
"Publish" : ["publish"],
"TVs" : ["MyTv1","MyTv2"]
}`
Параметры вкладок составляются в формате json, который имеет некоторые особенности. Ниже описано несколько правил которым стоит следовать во избежании ошибок:
- Следует использовать двойные кавычки;
- Название вкладок — слева, название полей — справа;
- Название вкладок и полей должны разделяться двоеточием;
- Все поля должны быть указаны в параметре &show;
- Все названия должны заключаться в двойные кавычки;
- Названия полей обрамляются квадратными скобками;
- Названия полей разделяются запятыми, но последнее поле отделять запятой не надо;
- Все строки с вкладками разделяются запятыми;
- Конструкция списка должна быть заключена в фигурные скобки (`{ }`);
Несколько страниц с NewsPublisher
Если есть необходимость в создании нескольких страниц NewsPublisher, с разными настройками и полями, просто создайте несколько страниц и разместите там соответствующие теги. Сниппет NpEditThisButton по умолчанию запускает страницу указанную в свойстве &np_id. Чтобы сниппет запускал правильную форму редактирования NewsPublisher, создайте, для страниц на которых установлен сниппет, дополнительное поле с именем NpId и пропишите там соответствующие ID.
Вызов сниппета кнопки при этом должен быть таким
[[!NpEditThisButton? &np_id=`[[*NpId]]`]]
NewsPublisher и get/pdoResources
Кнопку редактирования ресурса можно подключить в чанках вызываемых get/pdoResources. При таком использовании, надо удалить все вызываемые теги NpEditThisButton, и создать чанк шаблона вроде этого
<div class="MyItem">
[[+pagetitle]]
[[+introtext]] . . . [[!NpEditThisButton? &np_edit_id=`[[+id]]`]]
</div>
Теги MODX
Из соображений безопасности, теги MODX запрещены в NewsPublisher, специальной настройкой allow_tags_in_post и удаляются из $_POSTмассива при отправке формы. Но, в NewsPublisher 2.0, при установке нужного разрешения, теги MODX работают при вызове через фигурные скобки {{ ... }}.
Настройки и параметры
NewsPublisher системные настройки
Параметр | Описание | По умолчанию |
---|---|---|
NewsPublisher | ||
np_login_redirect | Если установлено 1, не авторзованные пользователи будут перенаправляться на страницу авторизации. Используйте &loginResourceId=`##` (где ## это ID страницы с NewsPublisher) для возврата пользователей обратно на страницу newspublisher после регистрации | 1 |
np_login_id | ID страницы авторизации. Используется для редиректа неавторизованных пользователей | |
TinyMCE | ||
np_tinymce_skin | Интерфейс для TinyMCE. Каталог доступных интерфейсов находится по адресу assets/components/newspublisher/tinymceskins; Встроенный выбор: modxPericles, fairOphelia, fallenMacbeth, light | modxPericles |
elFinder | ||
np_elfinder_tmb_size | Размер привью для elFinder в NewsPublisher (в пикселях) | 48 |
np_elfinder_remember_last_dir | (string, true или false) elFinder запоминает последнюю открытую директорию | false |
np_elfinder_theme | Тема для elFinder использующаяся в NewsPublisher. По умолчанию присутствуют темы: osx, windows-10, moono, material | osx |
np_elfinder_height | Высота окна elFinder в процентном соотношении от окна экрана | 80 |
np_elfinder_width | Ширина окна elFinder в процентном соотношении от окна экрана | 80 |
np_media_source_var | Имя типа медиа ресурса отправляющееся $_GET запросом от NewsPublisher к файловому менеджеру | media_source |
NewsPublisher настройки сниппета
Параметр | Описание | По умолчанию |
---|---|---|
Параметры NewsPublisher | ||
activetab (activetabs) ? | (string, опционально) Если установлено, определяет вкладку, отображающуюся при загрузке формы. Если не установлено, отображаются все вкладки | (пусто) |
allowedtags | (опционально) HTML тэги доступные в текстовом поле | <p>, |
badwords | (string, опционально) Разделенный запятыми список слов, которые должны фильтроваться в полях | (пусто) |
cancelid | (integer, опционально) ID страницы на которую пользователь должен пересылаться для отмены. Если вам не нужна кнопка отмены, просто удалите ее из чанка npOuterTpl | http_referer |
captions | (опционально) Пользовательские описания — разделенный запятыми список типа ИмяПоля:ОписаниеПоля. Пример: &captions=`introtext:Резюме,content:Введите вашу должность` | (пусто) |
clearcache | (опционально) Когда установлено 1, NewsPublisher будет чистить кеш сайта после сохранения ресурса | 1 |
contentcols | (опционально) Столбцы для контентного поля | 60 |
contentrows | (опционально) Строки в контентном поле | 10 |
cssfile | (string, опционально) Путь до пользовательского CSS файла. Установите `0` если нет CSS файла, если вы хотите использовать ваш основной CSS файл. Файл по умолчанию находится по адресу assets/newspublisher/css/ | newspublisher.css |
groups | (опционально) Список групп ресурсов, разделенных запятыми, для назначения новым страницам. Может быть установлено значение `Parent` для использования родительских групп | (пусто) |
hoverhelp | (0/1, опционально) Всплывает подсказка когда мыш наводится на описание поля (но не на само поле). В MODX подсказки показываются для полей ресурсов, для дополнительных TV полей отображается описание | 1 |
initdatepicker | (опционально) Инициализирует выбор даты. Устанавливается при наличииполя с датой | 1 |
initfilebrowser | Инициализирует файловый менеджер для использования текстового редактора и файловых полей | 0 |
initrte | (опционально) Инициализирует текстовый редактор. Устанавливайте, если есть какая либо текстовая область | 0 |
intmaxlength | (integer, опционально) Максимальная длинна для числового поля | 10 |
language | (string, опционально) Язык который должен использоваться в форме | (в порядке очереди) cultureKey, manager_language, en |
listboxmax | (integer, опционально) Максимальное значение поля списка, все что не уместилось будет доступно с помощью скрола | 8 |
multiplelistboxmax | (опционально) Максимальная длинна для мульти списков | 20 |
notifychecked |
(0/1, опционально) Если установлено, вместе с опцией &shownotify , уведомления будут появлятся по умолчанию |
0 |
parents | Разделенный запятыми список родительских ID для выбора пользователем (должен быть IDs или Контекстный ключ). Если &parentid установлен, он будет появлятся в списке. Примечание: для новых ресурсов могут потребоваться права new_document_in_root | (пусто) |
postid | (опционально) ID документа подгружаемого при успешной отправке | Страница создания или редактирования |
prefix | (string, опционально) Пользовательский префикс для использования плейсхолдеров; По умолчанию: `np`. Это свойство необходимо если плейсхолдеры могут вступить в конфликт с другими плейсхолдерами на странице. Важно: не используйте точки в пользовательских префиксах | np |
readonly | (string, опционально) Разделенный запятыми список полей доступных только для чтения.Не работает со списками, чекбоксами, радиокнопками, текстовыми редакторами. ID поле всегда доступно только для чтения | (пусто) |
required | (string, опционально) Разделенный запятыми список обязательных полей | pagetitle,content |
rtcontent | (опционально) Использовать текстовый редактор для поля контента | 0 |
rtsummary | (опционально) Использовать текстовый редактор анонсного поля (introtext) | 0 |
show | (опционально) Разделенный запятыми список полей для показа | pagetitle, |
stopOnBadTv | (0/1, опционально) Остановится и выведет сообщение об ошибке, если указанное в &show поле не прикреплено к используемому шаблону. Если установлено `0`, неприкрепленное поле проигнорируется, и форма отобразится без него | 1 |
stopOnNoRte | (опционально)Если установлен 0, &show может включать текстовые области без ошибки при провале инициализации виз редактора | 1 |
summarycols | (опционально) Количество колонок в анонсном поле (introtext) | 60 |
summaryrows | (опционально) Количество строк в анонсном поле (introtext) | 10 |
shownotify |
(0/1, опционально) Если установлено, включается опция уведомления. Если включено, Уведомление появится при успешном добавлении ресурса | 0 |
tabs | (JSON string. Требуется если установлен параметр &usetabs) JSON строка указывающая какие поля на каких вкладках отображать. Не указанные поля окажутся на вкладке «Другие» | (пусто) |
templates | (опционально) Разделенный запятыми список ID шаблонов, доступный для выбора пользователям. Если &template установлен, он будет доступен в списке | (пусто) |
textmaxlength | (integer, опционально) Максимальная длинна для текстовых полей | 60 |
tinyheight | (string, опционально) Высота области текстового редактора | 400px |
tinysource | Источник для подгрузки TinyMCE | //cdn.tinymce.com/4/tinymce.min.js |
tinywidth | (string, опционально) Ширина области виз редактора | 95% |
usetabs | (0/1, опционально) Если установлено, поля отображаются на отдельных вкладках | 0 |
which_editor | Какой визуальный редактор использовать; На текущий момент TinyMCE единственный доступный выбор | TinyMCE |
Настройки полей ресурса | ||
aliasdateformat | (опционально) Формат строки для авто проставления даты | PHP date + time format |
aliasprefix | (опционально) Префикс для ссылок новых ресурсов с пустым полем Псевдоним (alias). Пседоним будет иметь вид aliasprefix-timestamp | (пусто) |
aliastitle | (опционально) Если установлено 1, в качестве псевдонима (alias) используется заголовок страницы приведенный в нижний регистр, и разделенный дефисами. Если установлено 0, используется 'article-(date created)'. Игнорируется если поле псевдонима заполнено в форме | 1 |
cacheable | (опционально) Установка флага, определяющего, будет ли кешироваться новый ресурс. Если установить `parent` то будет соответствовать статусу публикации родителя | System Default |
classkey | (string, опционально) Class key, указывающий на особые условия создания новых ресурсов. Например если вы расширили обьект создания ресурса или используете плагины вроде Articles (установите Article) | modDocument |
hidemenu | (опционально) Установка флага, определяющего, будут ли новые ресурсы отображаться в меню. Если установить `parent` то будет соответствовать статусу публикации родителя | System Default |
parentid | (опционально) ID папки, где новые документы будут храниться | Папка где установлен NewsPublisher. Для принудительного создания родителя, установите это значение и не отображайте родительское поле (?) |
presets | Предустановленные значения для новых полей документа: `content:Какой-либо текст,introtext | `introtext` |
published | (опционально) Устанавливает новые ресурсы как опубликованные или нет (переопределяется полями: "дата публикации" и "дата снятия с публикации"). Если установить `parent` то будет соответствовать статусу публикации родителя | System Default |
richtext | (опционально) Устанавливает флаг, использовать ли визуальный редактор при редактировании из панели менеджера. Для новых ресурсов, установка параметра `Parent` будет использовать параметры родителя | System Default |
searchable | (опционально) Устанавливает флаг, который определяет участвует ли новая страница в поиске по сайту. Для новых ресурсов,установка параметра `Parent` будет использовать параметры родителя | System Default |
template | (опционально) Имя или ID шаблона, который используется для новых документов. Для новых ресурсов, установленное значение `Parent` указывает что надо использовать шаблон родителя. Для того чтобы работало значение `parent`, должен быть установлен параметр &parentid | шаблон по умолчанию, установленный системой |
Шаблоны | ||
booltpl | (опционально) поле стандартных полей типа boolean (галки опубликовано, скрыто из меню и т.п.) | npBoolTpl |
datetpl | (опционально) поле даты | npDateTpl |
elfinderinittpl | (опционально) инициализация elFinder (файловый менеджер) | |
errortpl | (опционально) шаблон чанка ошибки для формы. Должен содержать плейсхолдеры | npErrorTpl |
fielderrortpl | (опционально) шаблон чанка ошибки для поля. Должен содержать плейсхолдеры | npFieldErrorTpl |
filetpl | (опционально) шаблон загрузки файла | |
imagetpl | (опционально) шаблон загрузки изображения | |
inttpl | (опционально) числовое поле | npIntTpl |
listoutertpl | (опционально) обертка списка | |
listoptiontpl | (опционально) пункты списка | npListOptionTpl |
optionoutertpl | (опционально) обертка tv полей типа boolean | npOptionOuterTpl |
optiontpl | (опционально) чанк единицы значения tv полей типа boolean | npOptionTpl |
outertpl | (опционально) обертка формы с полями | npOuterTpl |
richtexttpl | (опционально) визуальный редактор | |
textareatpl | (опционально) текстовое поле | |
texttpl | (опционально) текстовая строка | npTextTpl |
tinymceinittpl | (опционально) инициализация tinyMCE (визуальный редактор) |
Параметры сниппета NpEditThisButton
Параметр | Описание | По умолчанию |
---|---|---|
bottom | (опционально) расстояние от низа окна до кнопки. Может принимать любое доступное в CSS значение | 20% |
debug | (опционально) Показывает кнопку на всех страницах, с описанием, обьясняющим почему сниппет не будет отображаться | 0 |
editHome | (опционально) показывать кнопку редактирования на главной странице | 0 |
language | (опционально) язык для сообщений об ошибке | (пусто) |
noShow | разделенный запятыми список ID документов, на которых кнопка не отображается | ID главной страницы и страниц на которых установлен NewsPublisher |
np_edit_id | ID страницы для редактирования (настройки параметров bottom и right игнорируются, кнопка отображается инлайново). Вы можете использовать это для тега кнопки редактирования, в чанке шаблона вызова getResources, чтобы иметь несколько кнопок на странице | (пусто) |
np_id | ID страницы NewsPublisher (устанавливается автоматически, при первом запуске); Если вы смените имя страницы NewsPublisher, понадобиться установить этот параметр вручную | (пусто) |
right | (опционально) расстояние от правого края до кнопки. Может принимать любое доступное в CSS значение | 20% |
ownpagesonly | (опционально) показать кнопку только для страниц созданных текущим пользователем (используется поле ресурса — createdby ) |
Здравствуйте!
Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи.