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


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.