Comment puis-je append rel = “nofollow” à un lien dans CKEditor s’il s’agit d’un lien externe

je veux donner rel="nofollow" à mes liens externes dont le contenu est géré par ckeditor.

example.com = mon site

externallink.com = tout lien externe

Par exemple:

 

Lorem ipsum dolar sit amet.

Cette solution:

 editor.dataProcessor.htmlFilter.addRules( { elements : { a : function( element ) { if ( !element.atsortingbutes.rel ) element.atsortingbutes.rel = 'nofollow'; } } }); 

à partir de https://stackoverflow.com/a/6930940/1848929 ajoute nofollow à tous les éléments a.

Comment puis-je filtrer uniquement les liens externes?

Voir aussi la documentation détaillée sur le processeur de données CKEditor: http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor


Remarque: L’éditeur de texte de Stackoverflow utilise la réponse à cette question. Vérifiez l’atsortingbut rel de deux liens dans cette question.


J’utilise partir de CDN sur mes pages.

Je l’ai résolu comme;

 CKEDITOR.on('instanceReady', function(ev) { var editor = ev.editor; editor.dataProcessor.htmlFilter.addRules({ elements : { a : function( element ) { if ( !element.atsortingbutes.rel ){ //gets content's a href values var url = element.atsortingbutes.href; //extract host names from URLs var hostname = (new URL(url)).hostname; if ( hostname !== window.location.host && hostname !=="youranothersite.com") { element.atsortingbutes.rel = 'nofollow'; } } } } }); }) 

Cette solution fonctionne également dans Internet Explorer:

 CKEDITOR.on('instanceReady', function(ev) { var editor = ev.editor; editor.dataProcessor.htmlFilter.addRules({ elements : { a : function( element ) { if ( !element.atsortingbutes.rel ){ //gets content's a href values var url = element.atsortingbutes.href; //extract host names from URLs (IE safe) var parser = document.createElement('a'); parser.href = url; var hostname = parser.hostname; if ( hostname !== window.location.host) { element.atsortingbutes.rel = 'nofollow'; element.atsortingbutes.target = '_blank'; } } } } }); }) 

Donc, vous devez comparer les hôtes, quelque chose comme cela devrait fonctionner.

 a : function( element ) { if ( element.host !== window.location.host ) { element.atsortingbutes.rel = 'nofollow'; } }