كيفية إنشاء مُنشئ تخطيط مخصص في دروبال 8

نشرت: 2019-10-15

دروبال 8 يجعل الأمور أسهل بكثير لمؤلفي المحتوى. أحد أهم الأسباب هو إضافة وحدة Layout Builder في Core Drupal 8. مع واجهة السحب والإفلات السهلة ، وإمكانيات المعاينة والتخصيص ، أصبح منشئ التخطيط قريبًا الأداة المفضلة لبناء الصفحات وتصميمها.

في مقالتي السابقة ، كتبت عن كيف يمكنك البدء في تثبيت واستخدام مُنشئ تخطيط Drupal 8. هنا ، أرغب في مشاركة معرفتي حول تخصيص منشئ تخطيط للمتطلبات الفريدة.

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

الشروع في العمل مع Layout Builder:

سننشئ أولاً وحدة منشئ التخطيط المخصص لمنشئ التخطيط المخصص الخاص بنا ، وسنسمي المجلد باسم custom_layout. بعد ذلك ، سننشئ ملف info.yml. يجب أن نحدد المفاتيح الأساسية لذلك. سيكون لمنشئ التخطيط المخصص في دروبال 8 تبعية على وحدة منشئ التخطيط. دعونا نحددها هنا.

تخطيط مخصص
 رمز:
الاسم: "تخطيط مخصص"
النوع: وحدة
الوصف: "يوفر طريقة لإنشاء تخطيط"
النواة: 8.x
الحزمة: "مخصص"
التبعيات:
 - layout_builder: layout_builder

بعد ذلك سننشئ ملف layouts.yml لتحديد المناطق لتخطيطنا المخصص.

  • custom_layout: مفتاح لتخطيط منشئ التخطيط المخصص.
  • التسمية: تسمية لتخطيط منشئ التخطيط المخصص الخاص بنا.
  • الفئة: فئة لتخطيط منشئ التخطيط المخصص لدينا.
  • default_region: المنطقة الافتراضية هي المناطق الافتراضية في كل أنواع التخطيط.
  • icon_map: الرمز الذي سيظهر أثناء اختيار التصميم الخاص بنا.

على سبيل المثال:

تخطيط مخصص

لإنشاء خريطة الرمز أعلاه ، نحتاج إلى اتباع الخطوات أدناه.

1. الصف الأول هو "رأس يسار" و "رأس يمين"
لقد حددنا - [ header_left، header_left، header_right ] - header_left هو
تم تحديده مرتين ، لذا سيستغرق الأمر جزأين من العرض الكلي للشاشة ، ثم يأخذ header_right باقي الجزء ، لذا ستكون النسبة "75٪ / 25٪".
2. الصف الثاني هو "المحتوى" و "الشريط الجانبي"
لقد حددنا - [ المحتوى ، المحتوى ، الشريط الجانبي ] نفس المنطق المطبق هنا.
3. الصف الثالث هو "التذييل الأيسر" و "التذييل الأيمن"
لقد حددنا - [ footer_left، footer_right] - نظرًا لوجود منطقتين فقط ، سيستغرق الأمر 50٪ لكل منهما.

  • المناطق: المناطق التي نحتاجها لتخطيطنا. لدينا header_left ، header_right ، الشريط الجانبي ، المحتوى ، footer_left ، footer_right.
منشئ التخطيط المخصص

رمز:

 تخطيط مخصص:
 التسمية: "تخطيط مخصص"
 الفئة: "التنسيقات المخصصة"
 default_region: المحتوى
 icon_map:
   - [header_left، header_left، header_left]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [footer_left، footer_right]

 المناطق:
   header_left:
     التسمية: رأس اليسار
   رأس_حق:
     التسمية: رأس اليمين
   الشريط الجانبي:
     التسمية: الشريط الجانبي
   المحتوى:
     التسمية: المحتوى
   footer_left:
     التسمية: تذييل اليسار
   التذييل_الحق:
     التسمية: التذييل الأيمن

بعد ذلك ، دعنا ننشئ بنية html لتخطيطنا. سننشئ مجلدًا باسم "Layouts" داخل وحدتنا. سننشئ في المجلد مجلدًا آخر باسم "custom_layout"

وضمن هذا المجلد ، سننشئ ملفًا باسم "custom-layout.html.twig".

منشئ التخطيط المخصص


يتعين علينا تحديد ملف الغصين في layouts.yml

  • المسار: يحدد في أي مجلد سيتم كتابة هيكل html الخاص بك
  • template: يحدد أي قالب غصين لاستخدامه لهذا التخطيط أسفل المسار.

تخطيط مخصص
 رمز:

تخطيط مخصص:
 التسمية: "تخطيط مخصص"
 المسار: تخطيطات / custom_layout
 الفئة: "التنسيقات المخصصة"
 النموذج: تخطيط مخصص
 default_region: المحتوى
 icon_map:
   - [header_left، header_left، header_left]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [footer_left، footer_right]

 المناطق:
   header_left:
     التسمية: رأس اليسار
   رأس_حق:
     التسمية: رأس اليمين
   الشريط الجانبي:
     التسمية: الشريط الجانبي
   المحتوى:
     التسمية: المحتوى
   footer_left:
     التسمية: تذييل اليسار
   التذييل_الحق:
     التسمية: التذييل الأيمن

بعد ذلك سنكتب بنية html لمناطقنا في ملف “custom-layout.html.twig”.
سنقوم بتعيين الفئات بها "تخطيط" و "تخطيط - تخطيط مخصص" وسنقوم بتغليف المحتوى بالكامل بداخله.
سنحدد المناطق التي تم تحديدها في layouts.yml ، يمكننا الوصول إلى تلك المناطق مثل "{{content.header_left}}"

منشئ التخطيط

رمز:

{٪ مجموعة فئات = [
'نسق'،
"تخطيط - تخطيط مخصص" ،
]٪}
{٪ if content٪}
<div {{attributes.addClass (class)}}>
{٪ if content.header_left٪}
<div {{region_attributes.header_left.addClass ('layout__region'، 'layout__region - header_left')}}>
{{content.header_left}}
</div>
{٪ إنهاء إذا ٪}
{٪ if content.header_right٪}
<div {{region_attributes.header_right.addClass ('layout__region'، 'layout__region - header_right')}}>
{{content.header_right}}
</div>
{٪ إنهاء إذا ٪}
{٪ if content.content٪}
<div {{region_attributes.content.addClass ('layout__region'، 'layout__region - content')}}>
{{content.content}}
</div>
{٪ إنهاء إذا ٪}
{٪ if content.sidebar٪}
<div {{region_attributes.sidebar.addClass ('layout__region'، 'layout__region - sidebar')}}>
{{content.sidebar}}
</div>
{٪ إنهاء إذا ٪}
{٪ if content.footer_left٪}
<div {{region_attributes.footer_left.addClass ('layout__region'، 'layout__region - footer_left')}}>
{{content.footer_left}}
</div>
{٪ إنهاء إذا ٪}
{٪ if content.footer_right٪}
<div {{region_attributes.footer_right.addClass ('layout__region'، 'layout__region - footer_right')}}>
{{content.footer_right}}
</div>
{٪ إنهاء إذا ٪}
</div>
{٪ إنهاء إذا ٪}

بعد كتابة بنية html ، سيتعين علينا كتابة css لكل منطقة. سنقوم الآن بإنشاء مكتبات libraries.yml في الوحدة النمطية الخاصة بنا.

منشئ التخطيط

رمز:

 تخطيط مخصص:
الإصدار: VERSION
المغلق:
   سمة:
     css / custom_layout.css: {}

سوف نحدد تلك المكتبة في layouts.yml

مخطط البناء

رمز:

 تخطيط مخصص:
 التسمية: "تخطيط مخصص"
 المسار: تخطيطات / custom_layout
 الفئة: "التنسيقات المخصصة"
 النموذج: تخطيط مخصص
 المكتبة: custom_layout / custom_layout
 default_region: المحتوى
 icon_map:
   - [header_left، header_left، header_left]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [محتوى ، محتوى ، شريط جانبي]
   - [footer_left، footer_right]

 المناطق:
   header_left:
     التسمية: رأس اليسار
   رأس_حق:
     التسمية: رأس اليمين
   الشريط الجانبي:
     التسمية: الشريط الجانبي
   المحتوى:
     التسمية: المحتوى
   footer_left:
     التسمية: تذييل اليسار
   التذييل_الحق:
     التسمية: التذييل الأيمن

الآن لنبدأ بتصميم كتلة مناطقنا. سنحدد هيكل لكل منطقة على النحو التالي-

منشئ التخطيط

رمز:

 .layout - تخطيط مخصص {
 عرض: -webkit-box.
 عرض: -ms-flexbox.
 عرض: فليكس ؛
 -ms- فليكس التفاف: التفاف.
 التفاف المرن: التفاف.
}

شاشةmedia و (الحد الأدنى للعرض: 40em) {
 .layout - تخطيط مخصص .layout__region - header_left {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 70٪ ؛
   المرن: 0 1 70٪ ؛
 }

 .layout - تخطيط مخصص .layout__region - header_right {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 30٪ ؛
   المرن: 0 1 30٪ ؛
 }

 .layout - تخطيط مخصص .layout__region - محتوى {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 70٪ ؛
   المرن: 0 1 70٪ ؛
 }

 .layout - تخطيط مخصص .layout__region - شريط جانبي {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 30٪ ؛
   المرن: 0 1 30٪ ؛
 }

 .layout - تخطيط مخصص .layout__region - footer_left {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 50٪ ؛
   المرن: 0 1 50٪ ؛
 }

 .layout - تخطيط مخصص .layout__region - footer_right {
   -webkit-box- فليكس: 0 ؛
   -ms- فليكس: 0 1 50٪ ؛
   المرن: 0 1 50٪ ؛
 }
}

بعد ذلك ، دعنا نقوم بتمكين الوحدة المخصصة الخاصة بنا

تخطيط-باني وحدة

دعنا ننتقل إلى الهيكل -> أنواع المحتوى وانقر على " إدارة العرض " لأي نوع من أنواع المحتوى. في الوقت الحالي سوف نستخدم نوع المحتوى " مقال ".

تحرير تخطيط باني

بعد أن نختار تخطيطنا المخصص-

تخطيط مخصص