Tout d'abord, je voudrais mentionner cette réponse n'est pas liée, j'utilise Drupal 8.6.1.
J'essaie de créer un plugin CKEditor avec un nouveau bouton. Dans la page /admin/config/content j'obtiens l'erreur mais le bouton apparaît bien:
Cependant, lorsque je vais sur la page /node/add/article , j'obtiens l'erreur et il y a un problème d'affichage sur les fenêtres CKEditor:
Vider le cache ne change rien.
L'erreur n'apparaît plus lorsque je désinstalle mon module D8 personnalisé.
modules/custom/inline_comment/js/plugins/inline_comment/plugin.js
CKEDITOR.plugins.add('comment', {
icons: 'comment',
// The plugin initialization logic goes inside this method.
init: function (editor) {
// Define the editor command that add a comment.
editor.addCommand('comment', {
// Define the function that will be fired when the command is executed.
exec: function (editor) {
...
}
});
// Create the toolbar button that executes the above command.
editor.ui.addButton('Comment', {
label: 'Add comment',
command: 'comment',
toolbar: 'insert'
});
modules/custom/inline_comment/src/Plugin/CKEditorPlugin/InlineComment.php
namespace Drupal\inline_comment\Plugin\CKEditorPlugin;
use Drupal\ckeditor\CKEditorPluginBase;
use Drupal\ckeditor\CKEditorPluginConfigurableInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\editor\Entity\Editor;
/**
* Defines the "inline_comment" plugin.
*
* @CKEditorPlugin(
* id = "inline_comment",
* label = @Translation("CKEditor Inline Comment")
* )
*/
class InlineComment extends CKEditorPluginBase implements CKEditorPluginConfigurableInterface {
public function getFile() {
return drupal_get_path('module', 'inline_comment') . '/js/plugins/inline_comment/plugin.js';
}
public function getButtons() {
return [
'Comment' => [
'label' => t('Linkit'),
'image' => drupal_get_path('module', 'inline_comment') . '/js/plugins/inline_comment/icons/comment.png',
],
];
}
L'emplacement de l'icône est: modules/custom/inline_comment/js/plugins/inline_comment/icons/comment.png
À tous ceux qui rencontrent ce problème:
* Defines the "inline_comment" plugin.
*
* @CKEditorPlugin(
* id = "machine_name_that_must_match_with_icons",
* label = @Translation("CKEditor Inline Comment")
* )
*/
et
getButtons()
doit renvoyer le même ID.
L'annotation est nouvelle pour moi et je suis sûr que ce n'est pas nouveau pour quiconque qui est Drupal 8 développeurs, mais cela pourrait aider quelqu'un qui est nouveau/en train d'apprendre sur le fonctionnement de Drupal 8.
https://www.drupal.org/docs/8/api/plugin-api/annotations-based-plugins