Як створити та використовувати спеціальний гачок?


10

Я розмістив тут запитання , яке мало одну пропозицію, але жодної відповіді. Хтось має поради щодо того, як реалізувати користувацький гачок у Drupal 8, який дозволить іншим модулям оновлювати вміст, створений батьківським модулем? Зміст буде невпорядкованим списком.


2
Подивіться на розділ у розділі "Визначення гачка:" Тут це допомагає?
— Клайв

Лише частково. Це пояснює, як створити гачок для використання дочірньої функції, але нічого про те, як батьківський модуль надає вміст. Чи використовує батько контролер для додавання вмісту до, скажімо, $ output ['table_of_contents'], а потім батьківський гачок додає в цей масив дані, що повертаються від дитини?
— Кевін Новаччик

2
@KevinNowaczyk це залежить від призначення гачка. Гак не є специфічним для візуалізації, але його можна використовувати. Якщо ви хочете створити спеціальний гачок для надання вмісту, і ви викликаєте гачок у тому місці, де вам потрібен вміст, воно спрацює. А тому, що гачок є звичним та новим у вашій функції, ви повинні визначити, як гачок повинен забезпечувати його результати. Тоді, якщо ви викликаєте гачок під час функції батьківського візуалізації, ви можете отримати результати у використаному форматі.
— Neograph734

Відповіді:


8

Цей розділ знаходиться в контролері в батьківському модулі:

$plugin_items = [];
// Call modules that implement the hook, and let them add items.
\Drupal::moduleHandler()->alter('flot_examples_toc', $plugin_items);
if (count($plugin_items > 0)) {
  $output['plugins'] = [
    '#title' => 'Plugins',
    '#theme' => 'item_list',
    '#items' => $plugin_items,
  ];
}

І це знаходиться у дочірньому [модулі] .module файлі.

use Drupal\Core\Url;

function mymodule_flot_examples_toc_alter(&$item_list) {
  $options = [
    ':one' => Url::fromRoute('flot_spider_examples.example')->toString(),
  ];
  $item_list[] = t('<a href=":one">Spider Chart</a> (with spider plugin)', $options);
}

Батько створює масив і передає його дітям за посиланням. Вони можуть змінювати масив, додаючи до нього елементи. Потім батьків додає його до масиву візуалізації.


5

Просто для простоти, якщо ви хочете створити та використовувати користувацький гачок в drupal 8 для використання іншими розробниками

спочатку, щоб допомогти іншим визначити використання вашого гака у файлі mymodule.api.php, цей гачок може діяти на будь-що, що потрібно.

приклад:

 // my hook 
 function hook_mymodule_alter_something(array &$data) {
   // here others will make a module that will call this to alter "$data"
 }

то за потреби у вашому модулі.

 \Drupal::moduleHandler()->invokeAll('mymodule_alter_something', [&$data]);

тоді інший розробник може скористатися цим, зателефонувавши

function MYOTHERMODULE_mymodule_alter_something($data) {
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.