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:
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'; } }