Как я объяснил в getgrav / grav # 421, было бы здорово иметь возможность добавлять пользовательские типы страниц на основе чертежей в меню «Добавить страницу».
Например, в меню по умолчанию есть следующие варианты:
Эти параметры будут автоматически настраивать вещи таким образом, чтобы, например, внутри каталога blog / была создана страница с шаблоном страницы «Item» для создания сообщения в блоге и т. Д.
Это будет очень полезная функция, особенно при передаче сайта клиентам, которым не придется беспокоиться о шаблонах страниц и структуре папок.
Мне это скоро понадобится для клиента
есть ли у вас какие-нибудь указания, как я могу реализовать это сам?
Что ж, когда вы говорите клиенту добавить страницу, все, что ему нужно сделать, это выбрать подходящий шаблон. Если вы создадите блог, галерею и т. Д., Это будет так же просто. Однако, если вы действительно хотите добавить кнопки, просто продублируйте кнопку добавления страницы, но оставьте шаблон поля предварительно выбранным и скрытым (если хотите).
@ ricardo118 Я бы хотел просто сказать им, чтобы они выбрали правильный шаблон и правильную папку, к сожалению, из-за способа, которым в настоящее время спроектировано модальное окно, в поле выбора папки перечислены все страницы сайта, что проблематично, потому что по порядку чтобы найти нужную папку, им нужно пролистать потенциально сотни страниц. Отсюда и предопределенные модальные окна.
Я надеялся на более элегантное решение для реализации этого, чем просто копирование и вставка модальных окон и прямое редактирование файлов плагина. (Из-за обновлений)
Я все же пытался это сделать, но у меня возникают проблемы при попытке указать значение по умолчанию для полей выбора: как ни странно, я никогда не получаю правильный вариант по умолчанию.
Есть ли способ расширить плагин администратора, не изменяя его код, чтобы делать то, что я хочу?
Думаю, мы могли бы сделать для этого конфигурацию.
У меня это есть в моей локальной версии, если мы сможем согласовать структуру конфигурации, я могу преобразовать ее в PR.
По умолчанию он использует шаблон, используемый при добавлении страницы.
admin.yaml
add_modals:
post:
label: Add Post
blueprint: admin/pages/new_post
template: custom_template
link_classes: some_class
modal_classes: some_modal_class
with:
some_data: for the template
show_in: dropdown
image:
label: Add Image
blueprint: admin/pages/new_image
show_in: bar
Пример чертежа. В моем блоге у меня более 1 автора, поэтому с помощью getNewPostRoute я могу сгенерировать маршрут для пользователя, например, для моей учетной записи он генерирует: "/ dave / posts"
new_post.yaml
form:
validation: loose
fields:
section:
type: section
title: Add Post
title:
type: text
label: Post Title
validate:
required: true
folder:
type: hidden
route:
type: hidden
data-default@: '\Grav\Plugin\MyPlugin::getNewPostRoute'
name:
type: hidden
default: 'post'
visible:
type: hidden
default: ''
blueprint:
type: blueprint
Некоторые изображения
@ david-szabo97 Это именно то, что я имел в виду. Прекрасная работа! Мне такая конфигурация кажется довольно разумной. Мне особенно нравится этот show_in: bar | dropdown, аккуратно. Как вы обрабатываете часть имени папки?
В ожидании, когда команда предложит свое впечатление для PR, есть ли у вас где-нибудь в сети версия вашего кода?
@fireraccoon Я отредактировал часть javascript на странице добавления, чтобы автоматически поменять заголовок. Так же, как и при создании страницы. Хотя в этом случае вы не видите папку, потому что она скрыта. Но он будет делать то же самое, когда вы создаете обычную страницу, просто скопируйте краткий заголовок в текстовое поле папки.
Поскольку он помещает новую страницу (папку) в маршрут, вы можете указать собственный маршрут, как я сделал data-default@: '\Grav\Plugin\MyPlugin::getNewPostRoute
и в итоге вы получите тот же эффект. ($ route. $ папка)
У меня его пока нет, но я могу загрузить его для вас, если хотите.
@ david-szabo97 Хорошо, понятно! Мне было интересно, сделали ли вы это с помощью JS или с помощью какого-то механизма обработки почтовых форм. Да, я хотел бы увидеть это, если у вас будет время, спасибо!
@fireraccoon Это можно сделать с помощью
Я прикрепил zip-файл, просто замените ваши плагины / админку этой админ-папкой.
Вы можете просмотреть внесенные мной изменения, выполнив поиск по запросу * MessedCode
(это мой будущий блог, основанный на Grav)
У меня были некоторые другие изменения, поэтому я надеюсь, что удалил все остальное, и все работает нормально.
Код, который вы найдете в admin.min.js, скопирован из add.js. Это просто способ избежать перепаковки всего JS-проекта.
В моем блоге есть пара пользователей, поэтому мне пришлось внести много изменений, чтобы публикация была удобной для всех. Это одно из тех изменений, в которых мы остро нуждаемся.
admin.zip
@ david-szabo97 Большое спасибо! Ты спас мне день. Мне удалось довольно легко заставить его работать с последней версией. Работает как шарм. Я думаю, что это довольно важный вариант использования, и я очень надеюсь, что скоро он будет интегрирован в плагин. Плюс изменения очень простые.
PR было бы хорошо. Однако я бы предпочел, чтобы не полагался на JS.
Функция объединена в https://github.com/getgrav/grav-plugin-admin/issues/1104
@rhukster , я хотел бы передать произвольные данные фронтмейтера из модального окна. Похоже, что в данный момент это не работает. Не могли бы вы посоветовать, где мне следует искать в базе кода, чтобы решить эту проблему? Я заблуждаюсь относительно цели этих модальных окон?
form:
validation: loose
fields:
section:
type: section
title: Add Fancy Page
title:
type: text
label: Title
a_custom_attribute:
type: text
default: dummy
label: Won't pre-populate the corresponding field
header.another_custom_attr:
type: text
label: Neither will this
validate:
required: true
@ k8n
Могу подтвердить, что это работает не так, как можно было бы ожидать. В настоящий момент работают только поля каталога и шаблона, но все настраиваемые атрибуты основного материала не будут заполнены.
Я не уверен, как поле with передает данные на создаваемую страницу. Я сделал собственный модальный экран; как показано ниже - пытаетесь установить поля в заголовке, но в заголовке ничего не отображается, и не возникает никаких ошибок?
форма:
проверка: свободный
поля:
раздел:
тип: раздел
title: Добавить элемент мультимедиа
title:
type: text
label: Media Item Title
validate:
required: true
header.article_hyperlink:
type: text
label: Article Hyperlink (URL)
validate:
required: true
type: url
header.article_date:
type: date
label: Article Date
validate:
required: true
header.article_blurb:
type: textarea
label: Article Blurb
folder:
type: hidden
default: '@slugify-title'
route:
type: hidden
default: /media
name:
type: hidden
default: 'media-item'
blueprint:
type: blueprint
`` ''
Появляется модальное окно и создается контент, но никакие данные из полей не передаются?
@sjclark , как я сказал в своем комментарии над вашим, в настоящее время передача данных из модального
Надеюсь, скоро кто-нибудь сделает по этому поводу пиар!
+1 по этому поводу.
Самый полезный комментарий
Думаю, мы могли бы сделать для этого конфигурацию.
У меня это есть в моей локальной версии, если мы сможем согласовать структуру конфигурации, я могу преобразовать ее в PR.
По умолчанию он использует шаблон, используемый при добавлении страницы.
admin.yaml
Пример чертежа. В моем блоге у меня более 1 автора, поэтому с помощью getNewPostRoute я могу сгенерировать маршрут для пользователя, например, для моей учетной записи он генерирует: "/ dave / posts"
new_post.yaml
Некоторые изображения