ModX: Удаляется тег noindex в TinyMCE

Нет картинки

Проблема заключается в том, что при вставке в тело страницы различных специфичных тегов, таких, как <noindex>, редактор их удаляет. Очень неудобно оптимизировать страницы с помощью, ноиндекс, когда, как только выйдешь из хтмл редактирования, нужные теги удаляются.

Способ 1. Простой.

Чтобы добавить в TinyMCE дополнительные  тэги, к примеру noindex, необходимо в конфиг TinyMCE добавить строку

extended_valid_elements : “noindex”

 Для MODx путь к конфигу редактора: /assets/plugins/tinymce321/xconfig.js

В нём необходимо строку

var tinymce_extended_valid_elements = "";

заменить на

var tinymce_extended_valid_elements = "noindex";

 

Способ 2. Noindex и Nofollow в ссылках на внешние ресурсы. Обрабатываем с помощью специального плагина.

Всем, кто занимается своим сайтом, должны быть известны основы сео оптимизации. Один из китов сео - ссылки на внешние ресурсы. Тут все просто: чем больше ссылок ведущих на чужой сайт, тем больше мы отдаем своего рейтинга. Чтобы сэкономить на этом деле на своем сайте был написан плагин обертывающий ссылки в noindex и вставляющий rel="nofollow".

Идем в элементы -> управление элементами -> плагины -> создать плагин, обзываем как хотим, и вставляем следующий код. На вкладке системные события ставим галочку на OnLoadWebDocument.

function preg_noindex($matches) {

 if(strpos($matches[2],'http')===false && strpos($matches[2],'ftp')===false ){
  return $matches[0];
 }else{
  $arg=str_replace('rel="nofollow"','',$matches[1]);
  return '<noindex><a rel="nofollow" '.$arg.'href='.$matches[2].'>
   '.$matches[3].'</a></noindex>' ;
 }
} 

$modx->documentObject['content'] = preg_replace_callback(
'@<a([^<]+)href=([^<]+)>(.*)</a>@Ui', "preg_noindex",
 $modx->documentObject['content']);

Для тех кто занимается постингом кода на сайте можно сюда запихнуть еще и обработку html символов плюс замена {} и [], чтобы MODx не парсил служебные теги. Основан на плагине noParse и доделан под себя. После недолгих мучений с TinyMCE, в силу того что он постоянно засовывал лишние теги и вобще делал не то что я хотел, он был просто отключен. Так что если вы пользуетесь каким либо редактором то следующий код выдаст кашу, чтобы этого избежать убираем в $code_entities_match и $code_entities_replace символы &,&amp;,<,>,&lt;,&gt;. Не забываем вставлять код, который мы желаем подсветить (я использую prettyprint) в теги <pre> </pre>. На выходе добавляется класс для prettyprint.

function replace_modxtags($matches){
    global $modx;
    $code_entities_match = array('&','[', ']','{', '}','<','>');
    $code_entities_replace = array(
                        '&amp;',
                        '&#91;',
                        '&#93;',
                        '&#123;',
                        '&#125;',
                        '&lt;',
                        '&gt;'
                        );
                                                
    $code = str_replace($code_entities_match,$code_entities_replace,$matches[1]);
    return '<pre class="prettyprint">'.$code.'</prе>';
}

$modx->documentObject['content'] = preg_replace_callback("#<prе>(.*?)</prе>#s", 
"replace_modxtags", $modx->documentObject['content']);

Потом нужно подключить этот плагин. Чтобы в TinyMCE подключить плагины нужно всего лишь вписать в настройки TinyMCE в Конфигурации сайта (ModX) в строку Индивидуальные плагины список имен плагинов, разделенных запятыми, а в строки Индивидуальные кнопки — Row1 (2, 3, 4) имена соответствующих кнопок (иногда для одного плагина бывает несколько кнопок).

Ещё нужно установить настройку Тема WYSIWYG-редактора: Индивидуальная.

 

при использовании статьи - http://underwork.ru/modx/noindex-i-nofollow-ssyilok-plagin

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.