getgrav/grav#421μμ μ€λͺ νλ―μ΄ νμ΄μ§ μΆκ° λ©λ΄μμ μ²μ¬μ§μ κΈ°λ°μΌλ‘ μ¬μ©μ μ μ νμ΄μ§ μ νμ μΆκ°ν μ μλ κ°λ₯μ±μ΄ μμΌλ©΄ μ’μ κ²μ λλ€.
μλ₯Ό λ€μ΄ κΈ°λ³Έμ μΌλ‘ λ©λ΄μλ λ€μκ³Ό κ°μ μ ν μ¬νμ΄ μμ΅λλ€.
μ΄λ¬ν μ΅μ μ μλ₯Ό λ€μ΄ λΈλ‘κ·Έ κ²μλ¬Ό λ±μ λ§λ€κΈ° μν΄ "νλͺ©" νμ΄μ§ ν νλ¦Ώμ΄ μλ blog/ λλ ν 리 λ΄λΆμ νμ΄μ§κ° μμ±λλλ‘ μλμΌλ‘ μ€μ ν©λλ€.
μ΄κ²μ νΉν νμ΄μ§ ν νλ¦Ώκ³Ό ν΄λ ꡬ쑰μ λν΄ κ±±μ ν νμκ° μλ ν΄λΌμ΄μΈνΈμκ² μ¬μ΄νΈλ₯Ό λκ²¨μ€ λ λ§€μ° μ μ©ν κΈ°λ₯μ λλ€.
λλ ν΄λΌμ΄μΈνΈλ₯Ό μν΄ μ΄κ²μ 곧 νμλ‘ ν κ²μ΄λ€
μ΄κ²μ μ§μ ꡬνν μ μλ λ°©λ²μ λν νμκ° μμ΅λκΉ?
κ³ κ°μκ² νμ΄μ§λ₯Ό μΆκ°νλΌκ³ λ§ν λ κ³ κ°μ΄ ν΄μΌ ν μΌμ μ μ ν ν νλ¦Ώμ μ ννλ κ²λΏμ λλ€. λΈλ‘κ·Έ, κ°€λ¬λ¦¬ λ±μ μ€μ νλ©΄ κ°λ¨ν©λλ€. κ·Έλ¬λ μ λ§λ‘ λ²νΌμ μΆκ°νκ³ μΆλ€λ©΄ νμ΄μ§ μΆκ° λ²νΌμ 볡μ νκ³ νλ ν νλ¦Ώμ 미리 μ ννκ³ μ¨κΉλλ€(μνλ κ²½μ°).
@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
μ λ§μ°¬κ°μ§λ‘ μ¬μ©μ μ§μ κ²½λ‘λ₯Ό μ§μ ν μ μμΌλ©° κ²°κ΅ λμΌν ν¨κ³Όλ₯Ό μ»μ μ μμ΅λλ€. ($κ²½λ‘ . $ν΄λ)
μμ§ κ΅¬ν μ μλ κ³³μ΄ μμ§λ§ μνμλ©΄ μ¬λ €λ릴 μ μμ΅λλ€.
@david-szabo97 μκ² μ΅λλ€! JS λ°©μμΌλ‘ νλμ§ μλλ©΄ μΌμ’ μ ν¬μ€νΈ νΌ νλ‘μΈμ± ν μΌλ‘ νλμ§ κΆκΈν©λλ€. λ€ μκ°λμλ©΄ κΌ λ³΄κ³ μΆμ΅λλ€ κ°μ¬ν©λλ€!
@fireraccoon μ΄λ²€νΈ ν
μΌλ‘ ν μ μμ§λ§ JS λ°©μμ΄ λ λμ κ² κ°μ΅λλ€.
zip νμΌμ 첨λΆνμ΅λλ€. νλ¬κ·ΈμΈ/κ΄λ¦¬μλ₯Ό μ΄ κ΄λ¦¬μ ν΄λλ‘ λ°κΎΈμΈμ.
* MessedCode
λ₯Ό κ²μνμ¬ λ΄κ° λ³κ²½ν μ¬νμ μ‘°νν μ μμ΅λλ€.
λ€λ₯Έ λ³κ²½ μ¬νμ΄ μμΌλ―λ‘ λ€λ₯Έ λͺ¨λ κ²μ μ κ±°νκ³ μ μλνκΈ°λ₯Ό λ°λλλ€.
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:
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 , μμ λ΄ μ견μμ λ§νλ―μ΄ νμ¬ λͺ¨λ¬μμ λ°μ΄ν°λ₯Ό μ λ¬νλ κ²μ΄ ꡬνλμ§ μμμΌλ―λ‘ Grav Dev Teamμ νμΈνμ΅λλ€.
λ°λΌκ±΄λ λκ΅°κ°κ° 곧 μ΄λ₯Ό μν΄ PRμ ν κ²μ λλ€!
μ΄κ²μ +1.
κ°μ₯ μ μ©ν λκΈ
μ΄μ λν ꡬμ±μ ν μ μλ€κ³ μκ°ν©λλ€.
λλ μ΄κ²μ PRλ‘ λ¦¬ν©ν λ§ν μ μλ κ΅¬μ± κ΅¬μ‘°μ λμν μ μλ€λ©΄ λ΄ λ‘컬 λ²μ μ μ΄κ²μ κ°μ§κ³ μμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ νμ΄μ§ μΆκ°μμ μ¬μ©νλ ν νλ¦Ώμ μ¬μ©ν©λλ€.
admin.yaml
μμ μ²μ¬μ§. λ΄ λΈλ‘κ·Έμλ 1λͺ μ΄μμ μμ±μκ° μμΌλ―λ‘ getNewPostRouteλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ λν κ²½λ‘λ₯Ό μμ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄ "/dave/posts"λ₯Ό μμ±νλ λ΄ κ³μ μ λν κ²½λ‘λ₯Ό μμ±ν μ μμ΅λλ€.
new_post.yaml
μΌλΆ μ΄λ―Έμ§