نقدم نوعًا جديدًا type: objects إلى الأنواع المدعومة لإعدادات الثيمات والذي يمكن استخدامه لاستبدال النوع json_schema الحالي الذي نعتزم إيقافه قريبًا.
تعريف إعداد ثيم من نوع الكائنات (objects)
لإنشاء إعداد ثيم من نوع الكائنات، قم أولاً بتعريف مفتاح على المستوى الأعلى تمامًا مثل أي إعداد ثيم والذي سيُستخدم كاسم للإعداد.
links: ...
بعد ذلك، أضف الكلمات المفتاحية type و default و schema إلى الإعداد.
links:
type: objects
default: []
schema: ...
يشير type: objects إلى أن هذا سيكون إعدادًا من نوع الكائنات بينما تحدد التعليقة default: [] القيمة الافتراضية للإعداد لتكون مصفوفة فارغة. لاحظ أنه يمكن أيضًا تعيين القيمة الافتراضية إلى مصفوفة من الكائنات والتي سنوضحها بمجرد تعريف schema.
لتحديد المخطط (schema)، قم أولاً بتعريف name للمخطط بهذه الطريقة:
links:
type: objects
default: []
schema:
name: link
بعد ذلك، سنضيف الكلمة المفتاحية properties إلى المخطط والتي ستسمح لنا بتعريف والتحقق من صحة شكل كل كائن.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
في المثال أعلاه، نذكر أن الكائن link يحتوي على خاصية name. لتحديد نوع البيانات المتوقع، يجب أن يحدد كل خاصية الكلمة المفتاحية type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
يحدد تعريف المخطط أعلاه أن الكائن link يحتوي على خاصية name من النوع string، مما يعني أنه سيتم قبول قيم السلسلة النصية فقط لهذه الخاصية. حاليًا، الأنواع التالية مدعومة:
string: يتم تخزين قيمة الخاصية كسلسلة نصية.integer: يتم تخزين قيمة الخاصية كعدد صحيح.float: يتم تخزين قيمة الخاصية كعدد عشري (float).boolean: قيمة الخاصية هيtrueأوfalse.uploads: قيمة الخاصية هي رابط المرفقenum: يجب أن تكون قيمة الخاصية واحدة من القيم المحددة في الكلمة المفتاحيةchoices.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: قيمة الخاصية هي مصفوفة من معرفات الفئات الصالحة.groups: قيمة الخاصية هي مصفوفة من معرفات المجموعات الصالحة.tags: قيمة الخاصية هي مصفوفة من أسماء العلامات الصالحة.
مع تعريف المخطط، يمكن الآن تعيين القيمة الافتراضية للإعداد عن طريق تعريف مصفوفة في YAML بهذه الطريقة:
links:
type: objects
default:
- name: link 1
title: link 1 title
- name: link 2
title: link 2 title
schema:
name: link
properties:
name:
type: string
title:
type: string
الخصائص المطلوبة (Required properties)
جميع الخصائص المحددة اختيارية بشكل افتراضي. لوضع علامة على خاصية كـ “مطلوبة”، قم ببساطة بإضافة التعليق required: true إلى الخاصية. يمكن أيضًا وضع علامة على خاصية كـ “اختيارية” عن طريق إضافة التعليق required: false إلى الخاصية.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
عمليات التحقق المخصصة (Custom Validations)
بالنسبة لأنواع خصائص معينة، يوجد دعم مدمج لعمليات التحقق المخصصة والتي يمكن الإعلان عنها عن طريق إضافة التعليق validations إلى الخاصية.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
عمليات التحقق لأنواع string
min_length: الحد الأدنى لطول الخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.max_length: الحد الأقصى لطول الخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.url: يتحقق من أن الخاصية هي عنوان URL صالح. يمكن أن تكون قيمة الكلمة المفتاحيةtrue/false.
عمليات التحقق لأنواع integer و float
min: الحد الأدنى لقيمة الخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.max: الحد الأقصى لقيمة الخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.
عمليات التحقق لأنواع tags و groups و categories
min: الحد الأدنى لعدد السجلات للخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.max: الحد الأقصى لعدد السجلات للخاصية. يجب أن تكون قيمة الكلمة المفتاحية عددًا صحيحًا.
هيكل الكائنات المتداخلة (Nested objects structure)
يمكن أن يحتوي الكائن أيضًا على خاصية تحتوي على مصفوفة من الكائنات. لإنشاء هيكل كائنات متداخل، يمكن أيضًا إضافة تعليق type: objects إلى خاصية مع تعريف المخطط schema المرتبط بها.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
وصف الإعداد والتعريب (Localization)
لإضافة وصف للإعداد في اللغة المحلية en، قم بإنشاء ملف locales/en.yml بالتنسيق التالي نظرًا لوجود إعداد ثيم من نوع الكائنات.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
en:
theme_metadata:
settings:
sections:
description: This is a description for the sections theme setting
schema:
properties:
name:
label: Name
description: The description for the property
links:
name:
label: Name
description: The description for the property
url:
label: URL
description: The description for the property
يتم التحكم في إصدار هذه الوثيقة - اقترح تغييرات على github.



