Grav-plugin-admin: Opsi tambahkan halaman khusus

Dibuat pada 13 Apr 2017  ·  16Komentar  ·  Sumber: getgrav/grav-plugin-admin

Seperti yang saya jelaskan di getgrav/grav#421, akan sangat bagus jika memiliki kemungkinan untuk menambahkan jenis halaman khusus berdasarkan cetak biru di Menu Tambah Halaman.

Misalnya menu secara default memiliki pilihan berikut:

  • Tambah halaman
  • Tambah Folder
  • Tambahkan Modular
    Saya ingin dapat menambahkan thins seperti:
    Tambahkan Postingan Blog
    Tambahkan Galeri
    Tambahkan jenis halaman khusus lainnya.

Opsi ini akan secara otomatis mengatur segalanya sehingga halaman misalnya akan dibuat di dalam blog/ direktori dengan templat halaman "Item" untuk membuat posting blog, dll.

Ini akan menjadi fitur yang sangat berguna, terutama saat menyerahkan situs kepada klien yang tidak perlu khawatir tentang templat halaman dan struktur folder.

enhancement

Komentar yang paling membantu

Saya pikir kita bisa membuat konfigurasi untuk ini.
Saya memiliki ini di versi lokal saya jika kami dapat menyetujui struktur konfigurasi, saya dapat refactor menjadi PR.

Secara default, ini menggunakan template yang digunakan oleh Add Page.

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

Contoh cetak biru. Di blog saya, saya memiliki lebih dari 1 penulis sehingga dengan getNewPostRoute saya dapat membuat rute untuk pengguna, misalnya untuk akun saya menghasilkan: "/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

Beberapa gambar

screenshot from 2017-04-26 11-45-05
screenshot from 2017-04-26 11-45-26

Semua 16 komentar

Saya akan membutuhkan ini segera untuk klien
apakah Anda memiliki indikasi tentang bagaimana saya bisa menerapkan ini sendiri?

Nah ketika Anda memberi tahu klien untuk menambahkan halaman, yang harus mereka lakukan hanyalah memilih Template untuk hal yang benar. Jika Anda mengatur blog, galeri, dll akan semudah itu. Namun, jika Anda benar-benar ingin menambahkan tombol, cukup duplikat tombol tambahkan halaman tetapi letakkan templat bidang yang telah dipilih sebelumnya dan disembunyikan (jika diinginkan)

@ricardo118 Saya berharap saya bisa memberi tahu mereka untuk memilih templat yang tepat dan folder yang tepat, sayangnya karena cara modal saat ini dirancang, kotak pilihan folder mencantumkan semua halaman situs, yang bermasalah karena berurutan untuk menemukan folder yang tepat, mereka perlu menelusuri ratusan halaman yang berpotensi. Oleh karena itu modals yang telah ditentukan.

Saya berharap solusi yang lebih elegan untuk mengimplementasikan ini daripada sekadar menyalin & menempelkan modal, dan langsung mengedit file plugin. (Karena pembaruan)
Saya memang mencoba melakukannya, tetapi saya mengalami masalah ketika mencoba menentukan nilai default kotak pilih: Anehnya saya tidak pernah mendapatkan opsi yang tepat secara default.

Apakah ada cara untuk memperpanjang plugin admin tanpa mengubah kodenya untuk melakukan apa yang saya inginkan?

Saya pikir kita bisa membuat konfigurasi untuk ini.
Saya memiliki ini di versi lokal saya jika kami dapat menyetujui struktur konfigurasi, saya dapat refactor menjadi PR.

Secara default, ini menggunakan template yang digunakan oleh Add Page.

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

Contoh cetak biru. Di blog saya, saya memiliki lebih dari 1 penulis sehingga dengan getNewPostRoute saya dapat membuat rute untuk pengguna, misalnya untuk akun saya menghasilkan: "/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

Beberapa gambar

screenshot from 2017-04-26 11-45-05
screenshot from 2017-04-26 11-45-26

@ david-szabo97 Inilah tepatnya yang ada dalam pikiran saya. Kerja bagus! Konfigurasi ini terlihat cukup masuk akal bagi saya. Saya terutama suka show_in: bar|dropdown, rapi. Bagaimana Anda menangani bagian nama folder?

Sambil menunggu tim menawarkan kesannya untuk PR, apakah Anda memiliki versi kode Anda di suatu tempat online ?

@fireraccoon Saya telah mengedit bagian javascript dari halaman tambah untuk secara otomatis membuat judul menjadi lambat. Sama seperti ketika Anda membuat halaman. Meskipun dalam hal ini Anda tidak dapat melihat folder karena tersembunyi. Tapi itu akan melakukan hal yang sama ketika Anda membuat halaman normal, cukup salin judul yang dihilangkan ke dalam kotak teks folder.

Karena ini menempatkan halaman (folder) baru ke dalam rute, Anda dapat menentukan rute khusus, seperti yang saya lakukan data-default@: '\Grav\Plugin\MyPlugin::getNewPostRoute dan pada akhirnya Anda akan memiliki efek yang sama. ($rute . $folder)

Saya belum memilikinya di mana pun, tetapi saya dapat mengunggahnya untuk Anda jika Anda mau.

@ david-szabo97 Oke saya mengerti! Saya bertanya-tanya apakah Anda melakukannya dengan cara JS atau dengan semacam pengait pemrosesan formulir pos. Ya, saya akan senang melihatnya jika Anda punya waktu, terima kasih!

@fireraccoon Itu bisa dilakukan dengan kait acara tetapi cara JS tampaknya lebih baik.
Saya melampirkan file zip, cukup ganti plugin/admin Anda dengan folder admin ini.
Anda dapat mencari perubahan yang saya buat dengan mencari * MessedCode (Ini blog saya yang akan datang berdasarkan Grav)
Saya memiliki beberapa perubahan lain di dalamnya jadi saya harap saya menghapus yang lainnya dan berfungsi dengan baik.

Kode yang akan Anda temukan di admin.min.js disalin dari add.js. Ini hanya cara saya dapat menghindari pengemasan ulang seluruh proyek JS.

Kami memiliki beberapa pengguna di blog saya, jadi saya harus membuat banyak perubahan untuk membuat postingan menjadi nyaman bagi semua orang. Ini adalah salah satu perubahan yang sangat kita butuhkan.
admin.zip

@david-szabo97 Terima kasih banyak! Anda menyelamatkan hari saya. Saya berhasil membuatnya bekerja dengan versi terbaru dengan cukup mudah. Bekerja seperti pesona. Saya pikir ini adalah kasus penggunaan yang cukup penting, dan saya sangat berharap untuk segera melihatnya terintegrasi dalam plugin. Ditambah perubahannya sangat sederhana.

PR akan bagus. Saya lebih suka jika tidak mengandalkan JS untuk melakukannya.

@rhukster , saya ingin meneruskan data frontmatter sewenang-wenang dari modal. Ini sepertinya tidak berhasil saat ini. Bisakah Anda menyarankan di mana saya harus mencari di basis kode untuk mengatasinya? Apakah saya salah arah tentang tujuan modals ini?

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
Saya dapat mengkonfirmasi bahwa itu tidak berfungsi seperti yang diharapkan. Saat ini hanya bidang direktori dan templat yang berfungsi, tetapi semua atribut materi depan khusus tidak akan diisi.

Saya tidak yakin bagaimana bidang with meneruskan data ke halaman aktual yang dihasilkannya. Saya telah membuat modal kustom; seperti di bawah ini - mencoba mengatur bidang di tajuk, tetapi tidak ada yang muncul di tajuk, juga tidak ada kesalahan yang diajukan?

``` bentuk:
validasi: longgar
bidang:
bagian:
jenis: bagian
judul: Tambahkan Item Media

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

```

Modal muncul, dan membuat konten, tetapi tidak ada data dari bidang yang diteruskan?

@sjclark , seperti yang saya katakan dalam komentar saya di atas komentar Anda, saat ini melewatkan data dari modal tidak diterapkan, saya memeriksa dengan Tim Pengembang Grav.

Mudah-mudahan, seseorang akan segera membuat PR untuk ini!

+1 pada ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat