مرجع واجهة الخطافات.
يملك DXPR Builder خمسة خطافات. يوثّق dxpr_builder.api.php خمسها،
مع مثال لكل منها.
| الخطاف | يُستدعى من | الأثر |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
يضيف فئات إلى قائمة فئات HTML في المحرّر |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
يضيف مجموعات أيقونات في منتقي الأيقونات أو يغيّرها أو يزيلها |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
يغيّر مصفوفة العرض لكل حقل يُعرَض بمُنسِّق DXPR Builder |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
لا أثر مرئي؛ انظر أدناه |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
لا أثر مرئي؛ انظر أدناه |
hook_dxpr_builder_classes_alter
يضيف مدخلات إلى قائمة الفئات التي يعرضها حقل فئات HTML الخاص
بكل عنصر. تستدعيه الشيفرة عبر
$this->moduleHandler->alter('dxpr_builder_classes', ...)، فينتهي اسم
الدالة بـ _alter؛ فدالة باسم
mymodule_dxpr_builder_classes() لا تُستدعى أبدًا.
/**
* Implements hook_dxpr_builder_classes_alter().
*/
function mymodule_dxpr_builder_classes_alter(&$dxpr_builder_classes) {
// Start a new option group.
$dxpr_builder_classes['optgroup-brand'] = t('Brand styles');
$dxpr_builder_classes['brand-primary-bg'] = t('Primary background');
$dxpr_builder_classes['brand-accent-text'] = t('Accent text colour');
}
&$dxpr_builder_classes(مصفوفة): المفتاح اسم فئة واحد، أو عدة أسماء مفصولة بمسافات؛ والقيمة هي التسمية. والمفتاح الذي يبدأ بـoptgroup-يبدأ مجموعة خيارات.
تحمل المصفوفة أصلًا فئات كل قالب مفعّل يضبط
dxpr_builder_classes في .info.yml الخاص به، فلا يحتاج القالب إلى PHP.
انظر فئات الأدوات.
hook_dxpr_builder_icon_sets_alter
يعمل بعد دمج الوحدة كل ملف *.dxpr_icon_sets.yml الخاص
بالوحدات والقوالب المفعّلة. فضّلوا ملف YAML؛ واستخدموا الخطاف
عندما تعتمد القائمة على منطق زمن التشغيل.
/**
* Implements hook_dxpr_builder_icon_sets_alter().
*/
function mymodule_dxpr_builder_icon_sets_alter(array &$icon_sets) {
$module_path = \Drupal::service('extension.list.module')
->getPath('mymodule');
$icon_sets['material'] = [
'label' => t('Material Symbols'),
'prefix' => 'material-symbols',
'css' => $module_path . '/vendor/material-symbols.css',
'library' => 'mymodule/material_symbols',
'icons' => [
'material-symbols material-symbols-star',
'material-symbols material-symbols-home',
],
];
}
يعمل الخطاف بعد حل مسارات css النسبية من ملفات YAML،
فتحتاج المجموعة المضافة هنا مسارًا من جذر Drupal، كما في المثال. ومفاتيح مجموعة الأيقونات والمجموعات الـ 14
المدمجة مُدرجة في مجموعات الأيقونات المخصصة.
hook_dxpr_builder_view_elements
يُستدعى مع invokeAll() في نهاية
DxprBuilderFormatter::viewElements()، بعد أن يرفق المُنسِّق
مكتباته وإعداداته وملفه. و$element هي مصفوفة عرض
الحقل، مُمرَّرة بالمرجع. وهو يعمل لكل مشاهِد،
محرّرًا كان أم لا.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
خطافات دون أثر مرئي
hook_dxpr_builder_element_buttons_folders_alter()يستقبل قائمة مجلدات تصف ملفات.htmlالخاصة بها أنماط الأزرار. وتصل النتيجة إلىdrupalSettings.dxprBuilder.buttonStyles. لكن عنصر الزر يقرأ قائمته الثابتة الخاصة من أنماط Bootstrap بدل ذلك، فلا تغيّر المجلدات الإضافية شيئًا في المحرّر.hook_dxpr_builder_elements_folders_alter()من شأنه تغيير قائمة مجلداتelementsفي القوالب، لكن لا شيء يستدعيgetDxprElementsFolders()، فلا يعمل الخطاف أبدًا. وهو لا يسجّل عناصر؛ ولإضافة عنصر، انظر العناصر المخصصة.