SyntaxHighlighter - светим код во фронтенде автоматом

Здравствуйте, друзья!

Хочу поздравить каждого из вас с наступающими новогодними праздниками! В честь этого делюсь с вами своим очередным велосипедом на квадратных колесах =)

Я бегло пошуршал по интернету и не наткнулся на решение подсветки кода на сайте как в Revo.

Поэтому и написал на скорую руку плагин:
<?php
/*
 * Name:SyntaxHighlighter Plugin for Site Frontend
 * CMS / CMF MODx Evolution
 * Author: Saz (sazanof.ru)
 * Version: v1.0
 * Default	shThemeDefault.css
 * Django	shThemeDjango.css
 * Eclipse	shThemeEclipse.css
 * Emacs	shThemeEmacs.css
 * Fade To Grey	shThemeFadeToGrey.css
 * Midnight	shThemeMidnight.css
 * RDark	shThemeRDark.css
 * NOTY: use great with TiniMCE custom "styles fix by bubenok" (see http://modx.im/blog/questions/4624.html)
 * @PROPERITIES
 * {
      "theme": [
        {
          "label": "Тема",
          "type": "list",
          "value": "Default",
          "options": "Default,Django,Eclipse,Emacs,Fade To Grey,Midnight,RDark",
          "default": "Default",
          "desc": ""
        }
      ]
    }
 *
 * @EVENTS
 * OnWebPageInit
 *
 */
if (!defined('MODX_BASE_PATH')) {
    die('What are you doing? Get out of here!');
}
global $modx;
$e = &$modx->Event;
$output =  '';
define("SH_DIR", MODX_SITE_URL . 'assets/plugins/modxsh/syntaxhighlighter/');
switch ($e->name) {
    case 'OnLoadWebDocument':
        $f = array('<code>','
','language-php','language-html');
$r = array('','','brush: php','brush: html');
$modx->documentContent = str_replace($f,$r,$modx->documentContent);
//die;
$theme = isset($theme)? $theme: 'Default';
$cssTheme = 'shTheme'. $theme. '.css';
$cssTheme = str_replace(' ', '', $cssTheme);
$all = '';
$output .= $modx->regClientCSS(SH_DIR. 'styles/shCore.css');
$output .= $modx->regClientCSS(SH_DIR. 'fix.css');
$output .= $modx->regClientCSS(SH_DIR. 'styles/'. $cssTheme);
$output .= $modx->regClientScript(SH_DIR. 'scripts/shCore.js');
$output .= $modx->regClientScript(SH_DIR. 'scripts/shAutoloader.js');
$output .= $modx->regClientScript($all);
break;
}


Архив с гитхаба скачаешь ты тут

А теперь про косяки:

Как у нас принято говорить: все работает, но ©
  1. Иногда после вставки через TinyMCE код выстраивается в одну линию, поэтому вставляю его через исходный код, можно еще через плагин TinyMCE codesample (но окно настолько его большое, что не видно =( кнопки вставить код)
  2. Чтобы использовать смену классов налету пришлось… (читаем README.md), отдельное спасибо bubenok modx.im/blog/questions/4624.html

Ну вот и все, в целом.
Есть еще вопрос к Dmi3yy : может в своей сборке поправишь настройку с кастомными стилями по умолчанию?


Просто используйте TinyMCE codesample plugin

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.