J'utilise le plugin d'intégration de médias pour ckeditor. Cela fonctionne bien, le code est correctement enregistré dans la base de données et youtube, soundcloud etd. les joueurs s'affichent bien sur la page. Mais lorsque l'utilisateur se rend dans son administration, où il peut modifier les informations, le texte à l'intérieur et avec les balises ne s'affiche pas, donc lorsque l'utilisateur clique sur le bouton Enregistrer, tous les iframes précédemment enregistrés seront "effacés" et seuls les autres du texte formaté sera enregistré. Existe-t-il un moyen d'afficher le code iframe dans le ckeditor?
Je suppose que vous utilisez CKEditor 4.1.x qui est fourni avec Advanced Content Filter (ACF). Le plus probable est que vous utilisez différents éditeurs pour l'édition frontend/backend.
Chaque plugin étend la propriété allowedContent avec ses propres règles pour les balises, les attributs et les classes. À l'aide de ces règles, l'éditeur supprime automatiquement le contenu indésirable, par exemple, si votre éditeur frontal autorise <iframe>
car il a un plugin mediaembed chargé, alors votre éditeur backend sans ce plugin supprimera votre <iframe>
du contenu.
De plus, ACF observe également la configuration de votre barre d'outils, donc même si vous incluez le plugin mais que vous ne voulez pas que le bouton dans la barre d'outils, tout contenu fourni par le bouton (par exemple <iframe>
) sera également interdit dans la sortie de l'éditeur.
Vous pouvez facilement vérifier si votre éditeur accepte <iframes>
. Appelez simplement ce qui suit et voyez le résultat:
CKEDITOR.instances.yourInstance.filter.check( 'iframe' );
>>> true // it's allowed
Si c'est false
, il existe plusieurs solutions à votre problème:
config.extraAllowedContent
pour le récupérer.Alors que le premier la solution est simple , le second peut être délicat pour vous. allowedContent
la règle pour le plugin mediaembed est la suivante (voir code du plugin ):
allowedContent: 'iframe[*]' // stands for: iframe element with any attribute
Si vous ajoutez ce qui suit à la configuration de votre éditeur d'arrière-plan, vous aurez des iframes de retour dans votre contenu sans charger le plugin mediaembed:
config.extraAllowedContent = 'iframe[*]'
Si cette solution ne fonctionne pas pour vous, veuillez fournir les configurations de l'éditeur et la version de CKEditor afin que les gens puissent vous aider.
CKEDITOR.config.allowedContent = true;
travaille pour moi.
Pour permettre à CKEditor de stocker du code HTML personnalisé sans qu'il ne disparaisse, vous devez définir l'indicateur de contenu autorisé sur true.
var allowedContent = true; // to allow custom html like iframe or div's
CKEDITOR.replace('yourEditorWindowsId', {
allowedContent
},