كما أوضحت في getgrav / grav # 421 ، سيكون من الرائع أن تتوفر لديك إمكانية إضافة أنواع صفحات مخصصة بناءً على المخططات في قائمة إضافة صفحة.
على سبيل المثال ، تحتوي القائمة افتراضيًا على هذه الخيارات:
ستعمل هذه الخيارات على ضبط الأشياء تلقائيًا بحيث يتم إنشاء صفحة على سبيل المثال داخل مدونة / دليل مع قالب صفحة "عنصر" من أجل إنشاء منشور مدونة وما إلى ذلك.
ستكون هذه ميزة مفيدة للغاية ، خاصة عند تسليم الموقع للعملاء الذين لن يضطروا إلى القلق بشأن قوالب الصفحات وهيكل المجلد.
سأحتاج هذا قريبا لعميل
هل لديكم أي دلائل على كيفية تنفيذ ذلك بنفسي؟
حسنًا ، عندما تطلب من العميل إضافة صفحة ، فكل ما عليه فعله هو اختيار قالب للشيء الصحيح. إذا قمت بإعداد المدونة والمعرض وما إلى ذلك ، فسيكون الأمر بنفس السهولة. ومع ذلك ، إذا كنت تريد حقًا إضافة أزرار ، فما عليك سوى تكرار زر إضافة صفحة ولكن ضع قالب الحقل محددًا مسبقًا ومخفيًا (إذا كنت ترغب في ذلك)
@ 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
بعض الصور
@ 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 للقيام بذلك.
تم دمج الميزة في 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.
نأمل أن يقوم شخص ما بعمل علاقات عامة قريبًا من أجل هذا!
+1 على هذا.
التعليق الأكثر فائدة
أعتقد أنه يمكننا عمل تكوين لهذا.
لدي هذا في إصداري المحلي إذا تمكنا من الاتفاق على هيكل التكوين يمكنني إعادة بنائه وتحويله إلى علاقات عامة.
بشكل افتراضي ، يستخدم القالب الذي تستخدمه إضافة صفحة.
admin.yaml
مخطط مثال. في مدونتي ، لدي أكثر من مؤلف واحد ، لذا باستخدام getNewPostRoute يمكنني إنشاء مسار للمستخدم ، على سبيل المثال لحسابي الذي ينشئه: "/ dave / posts"
new_post.yaml
بعض الصور