Grav-plugin-admin: خيارات صفحة الإضافة المخصصة

تم إنشاؤها على ١٣ أبريل ٢٠١٧  ·  16تعليقات  ·  مصدر: getgrav/grav-plugin-admin

كما أوضحت في getgrav / grav # 421 ، سيكون من الرائع أن تتوفر لديك إمكانية إضافة أنواع صفحات مخصصة بناءً على المخططات في قائمة إضافة صفحة.

على سبيل المثال ، تحتوي القائمة افتراضيًا على هذه الخيارات:

  • إضافة صفحة
  • أضف المجلد
  • أضف وحدات
    أود أن أتمكن من إضافة أشياء مثل:
    أضف منشور مدونة
    أضف معرض
    أضف نوع صفحة خاص آخر.

ستعمل هذه الخيارات على ضبط الأشياء تلقائيًا بحيث يتم إنشاء صفحة على سبيل المثال داخل مدونة / دليل مع قالب صفحة "عنصر" من أجل إنشاء منشور مدونة وما إلى ذلك.

ستكون هذه ميزة مفيدة للغاية ، خاصة عند تسليم الموقع للعملاء الذين لن يضطروا إلى القلق بشأن قوالب الصفحات وهيكل المجلد.

enhancement

التعليق الأكثر فائدة

أعتقد أنه يمكننا عمل تكوين لهذا.
لدي هذا في إصداري المحلي إذا تمكنا من الاتفاق على هيكل التكوين يمكنني إعادة بنائه وتحويله إلى علاقات عامة.

بشكل افتراضي ، يستخدم القالب الذي تستخدمه إضافة صفحة.

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

مخطط مثال. في مدونتي ، لدي أكثر من مؤلف واحد ، لذا باستخدام 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

بعض الصور

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

ال 16 كومينتر

سأحتاج هذا قريبا لعميل
هل لديكم أي دلائل على كيفية تنفيذ ذلك بنفسي؟

حسنًا ، عندما تطلب من العميل إضافة صفحة ، فكل ما عليه فعله هو اختيار قالب للشيء الصحيح. إذا قمت بإعداد المدونة والمعرض وما إلى ذلك ، فسيكون الأمر بنفس السهولة. ومع ذلك ، إذا كنت تريد حقًا إضافة أزرار ، فما عليك سوى تكرار زر إضافة صفحة ولكن ضع قالب الحقل محددًا مسبقًا ومخفيًا (إذا كنت ترغب في ذلك)

@ ricardo118 أتمنى لو كان بإمكاني أن أخبرهم ببساطة بتحديد القالب الصحيح والمجلد الصحيح ، لسوء الحظ ، بسبب الطريقة التي تم بها تصميم النموذج حاليًا ، يسرد مربع التحديد الخاص بالمجلد جميع صفحات الموقع ، وهو أمر يمثل مشكلة لأنه بالترتيب للعثور على المجلد الصحيح ، يحتاجون إلى التمرير عبر مئات الصفحات المحتملة. ومن هنا الوسائط المحددة مسبقًا.

كنت آمل في الحصول على حل أكثر أناقة لتنفيذ هذا من مجرد نسخ ولصق النماذج وتحرير ملفات البرنامج المساعد مباشرة. (بسبب التحديثات)
لقد حاولت فعل ذلك على الرغم من ذلك ، لكنني واجهت مشاكل عند محاولة تحديد القيمة الافتراضية لمربعات التحديد: من الغريب أنني لم أحصل على الخيار الصحيح افتراضيًا.

هل هناك أي طريقة لتمديد البرنامج المساعد المسؤول دون تغيير رمزه ليفعل ما أريد؟

أعتقد أنه يمكننا عمل تكوين لهذا.
لدي هذا في إصداري المحلي إذا تمكنا من الاتفاق على هيكل التكوين يمكنني إعادة بنائه وتحويله إلى علاقات عامة.

بشكل افتراضي ، يستخدم القالب الذي تستخدمه إضافة صفحة.

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

مخطط مثال. في مدونتي ، لدي أكثر من مؤلف واحد ، لذا باستخدام 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

بعض الصور

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

@ david-szabo97 هذا بالضبط ما كان يدور في خلدي. عمل عظيم! هذا التكوين يبدو معقولًا جدًا بالنسبة لي. يعجبني بشكل خاص show_in: bar | القائمة المنسدلة ، الأنيقة. كيف تتعامل مع جزء اسم المجلد؟

أثناء انتظار الفريق لتقديم انطباعه عن العلاقات العامة ، هل لديك نسخة من الكود الخاص بك في مكان ما عبر الإنترنت؟

fireraccoon لقد قمت بتحرير جزء جافا سكريبت من صفحة الإضافة لتصغير العنوان تلقائيًا. تمامًا كما ستفعل عند إنشاء صفحة. رغم أنه في هذه الحالة لا يمكنك رؤية المجلد لأنه مخفي. ولكنه سيفعل الشيء نفسه عند إنشاء صفحة عادية ، ما عليك سوى نسخ العنوان المقيد في مربع نص المجلد.

نظرًا لأنه يضع الصفحة الجديدة (المجلد) في المسار ، يمكنك تحديد مسار مخصص ، تمامًا كما فعلت data-default@: '\Grav\Plugin\MyPlugin::getNewPostRoute وفي النهاية سيكون لديك نفس التأثير. (المسار $. المجلد $)

لا يتوفر لدي أي مكان حتى الآن ، ولكن يمكنني تحميله لك إذا كنت تريد ذلك.

@ david-szabo97 طيب فهمت! كنت أتساءل عما إذا كنت قد فعلت ذلك بطريقة JS أو مع نوع من ربط معالجة النماذج اللاحقة. نعم ، أود أن أراها إذا كان لديك الوقت ، شكرًا!

fireraccoon يمكن أن يتم ذلك باستخدام خطاف حدث لكن طريقة JS تبدو أفضل.
لقد أرفقت ملفًا مضغوطًا ، فقط استبدل الإضافات / المسؤول بمجلد المسؤول هذا.
يمكنك البحث عن التغييرات التي أجريتها من خلال البحث عن * MessedCode (إنها مدونتي القادمة بناءً على Grav)
لقد أجريت بعض التغييرات الأخرى فيه ، لذا آمل أن أزيل كل شيء آخر ويعمل بشكل جيد.

يتم نسخ الكود الذي ستجده في admin.min.js من add.js. إنها مجرد طريقة يمكنني من خلالها تجنب إعادة تعبئة مشروع JS بأكمله.

لدينا بعض المستخدمين على مدونتي ، لذا اضطررت إلى إجراء العديد من التغييرات لجعل النشر مريحًا للجميع. هذا هو أحد التغييرات التي نحتاجها بشدة.
admin.zip

@ david-szabo97 شكرا جزيلا لك! لقد أنقذت يومي. تمكنت من تشغيله مع أحدث إصدار بسهولة تامة. يعمل كالسحر. أعتقد أن هذه حالة استخدام مهمة جدًا ، وآمل حقًا أن أراها مدمجة في المكون الإضافي قريبًا. بالإضافة إلى أن التغييرات بسيطة للغاية.

العلاقات العامة ستكون جيدة. أفضل لو لم أكن أعتمد على JS للقيام بذلك.

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.

نأمل أن يقوم شخص ما بعمل علاقات عامة قريبًا من أجل هذا!

+1 على هذا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات