Кто-нибудь знает, где в CKEditor я могу настроить, чтобы все добавленные ссылки имели rel="nofollow", даже если пользователи этого не указали?
Nofollow для ссылок в CKEditor
Ответы (4)
Вы можете создать фильтр данных, как описано на этой странице, который проверяет каждую ссылку: http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor
Этот (непроверенный) код должен быть более или менее тем, что вам нужно:
editor.dataProcessor.htmlFilter.addRules(
{
elements :
{
a : function( element )
{
if ( !element.attributes.rel )
element.attributes.rel = 'nofollow';
}
}
});
person
AlfonsoML
schedule
03.08.2011
Спасибо, это было именно то, что я искал.
- person Dofs; 03.08.2011
Вы должны добавить этот код в тело события instanceReady.
CKEDITOR.on('instanceReady', function( ev ) { .... });
- person hkulekci; 16.10.2013
Как добавить rel=nofollow только внешние ссылки? @AlfonsoML
- person hakiko; 09.09.2016
Я вижу, что вы уже создали отдельный вопрос, и у него есть правильный ответ stackoverflow.com/questions/39416655/
- person AlfonsoML; 10.09.2016
Нужна обертка:
editor.on('instanceReady',function(){...})
person
Sergey
schedule
06.03.2012
Поместите код на страницу, где загружается ckeditor
CKEDITOR.on('dialogDefinition', function(ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules(
{
elements :
{
a : function( element )
{
if ( !element.attributes.rel )
element.attributes.rel = 'nofollow';
}
}
});
})
person
Vijay Chouhan
schedule
15.07.2015
Как добавить rel=nofollow только внешние ссылки?
- person hakiko; 09.09.2016
Я использую PHP Codeigniter с CKEditor, и если вы хотите добавить rel="nofollow" только для внешних ссылок, вы можете изменить вывод CKEditor, прежде чем сохранять его в базе данных. Вот функция PHP, которую я использую для изменения:
function addNofollow($content) {
$dom = new DOMDocument();
@$dom -> loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
$x = new DOMXPath($dom);
// Add rel="nofollow"
foreach ($x -> query("//a") as $node) {
$href = $node -> getAttribute("href");
if (!strpos($href, site_base())) {
$node -> setAttribute("rel","nofollow");
} else {
$node -> removeAttribute("rel");
}
}
// Remove <script> tag
$script = $dom->getElementsByTagName('script');
$remove = [];
foreach ($script as $item) {
$remove[] = $item;
}
foreach ($remove as $item) {
$item -> parentNode -> removeChild($item);
}
$newHtml = $dom -> saveHtml($dom->getElementsByTagName('div')->item(0));
return $newHtml;
}
person
user7057468
schedule
22.10.2016