Для чего и принцип работы
Для вас наверное не секрет, что мы должны избегать лишних внешних ссылок, что бы не передавать “ссылочный вес” другим сайтам, обычно SEO оптимизаторы просят обозначать внешние ссылки.
Для Яндекса:
<!--noindex-->...<!--/noindex--> <noindex>...</noindex>
Тег <noindex> в данном случае является частью DOM, участвует в CSS селекторах и т.д. по возможности используйте вариант комментария, если сайт не очищает DOM от комментариев.
Для Google:
<a rel="nofollow noreferrer noopener"></a>
Так же все внешние ссылки должны иметь атрибут target="_blank"
Есть способ, как запрещаться индексацию автоматических всех внешних ссылок на сайте, данный способ позволяет экономить кучу времени SEO, контенту, веб-мастеру, но имеет так же и минус - мы не сможем добавить индексируемую ссылку если захотим.
Пример
Создадим новый плагин, название произвольное, например outsideLinks
В разделе Системные события поставим галочку напротив OnWebPagePrerender
Скопируем содержимое плагина и сохраним
<?php if ($modx->event->name == 'OnWebPagePrerender') { $content = $output = $modx->resource->_output; // Собираем все ссылки на странице, по шаблону, в массив $matches preg_match_all( "/<a [^>]*?href=[\"\'][h\'][t\'][t\'][p\'](.*?)[\"\'][^>]*>.*?<\/a>/im", // /<a [^>]*?href=[\"\'][h\'][t\'][t\'][p\'](.*?)[\"\'][^>]*>.*?<\/a>/im // /<a [^>]*?href=[\"\'](.*?)[\"\'][^>]*>.*?<\/a>/im $content, $matches ); if (!empty($matches[0])) { foreach ($matches[0] as $key => $tag) { // Добавляем атрибут "nofollow noreferrer noopener" в начало тега "а" $new_tag = preg_replace("/^<a/i", '<a rel="nofollow noreferrer noopener"', $tag); // Добавляем атрибут "_blank" в начало тега "а" $new_tag = str_replace('<a','<a target="_blank"',$new_tag); // Добавляем тэг "<!--/noindex-->" после тега "а" $new_tag = str_replace('</a>','</a><!--/noindex-->',$new_tag); // Добавляем атрибут "<!--noindex-->" перед тегом "а" $new_tag = str_replace('<a','<!--noindex--><a',$new_tag); $content = str_replace($tag, $new_tag, $content); } // Устанавливаем новый контент для вывода документа $output = $modx->resource->_output = $content; } } ?>