Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

rss

Вы не зашли.

Объявление

  • Список
  •  » FAQ
  •  » Подсветка синтаксиса в статьях с использованием GeSHi

#1 2012-08-13 13:58:24

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Подсветка синтаксиса в статьях с использованием GeSHi

неплохо было бы сделать такой плагин. Лично мне он был бы очень полезным.

Информация для разработки - http://webew.ru/articles/412.webew

Отредактированно beliy (2012-08-15 11:12:53)

Неактивен

 

#2 2012-08-16 10:55:58

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

Помогите плз, там по ссылке есть готовый код нужно просто адаптировать под данную CMS... Заранее большое спасибо...

Неактивен

 

#3 2012-08-19 15:31:58

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

К сожалению данный функционал похоже никого кроме меня не заинтересовал, поэтому начал искать самостоятельно... Нашол очень простой способ применяемый на DLE. Вот статья - http://8dle.ru/hacks/2078-podsvetka-sin … ttify.html
В ней все понятно, кроме правок в parse.class.php - данный блок кода значительно отличается от примера. Уважаемые знатоки этого движка помогите корректно внести изменения. Заранее спасибо за помощь.

Отредактированно beliy (2012-08-19 15:34:44)

Неактивен

 

#4 2012-08-19 15:40:44

qwas
Пользователь
Откуда: Kyyiv
Зарегистрирован: 2012-05-16
Сообщений: 229
Рейтинг :   
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

Сам лично не проверял, но вроде неплохая статья _http://dmitriydenisov.com/scripts/syntaxhighlighter.html
Советую на локалке попробовать сделать как описано, а потом уже тыкать в живой проект. smile Эт так для справки и на всякий случай. smile

Неактивен

 

#5 2012-08-21 18:27:53

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

так в этом варианте - http://8dle.ru/hacks/2078-podsvetka-sin … ttify.html
Нужно всего лишь корректно подправить parse.class.php - остальное сможет сделать любой новичек...

Неактивен

 

#6 2012-08-21 19:19:26

qwas
Пользователь
Откуда: Kyyiv
Зарегистрирован: 2012-05-16
Сообщений: 229
Рейтинг :   
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

beliy, честно говоря, я лично без понятия, что из себя представляет этот файл для NG (в смысле без понятия куда тот код тыкать). smile

Неактивен

 

#7 2012-08-21 20:22:56

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

что из себя представляет этот файл для NG

если грубо объяснить, то преобразовывает bb-код в html

без понятия куда тот код тыкать

нужно по образцу подправить преобразование тега code, сам пробовал но корректно этого сделать не получилось(((

Неактивен

 

#8 2012-08-28 20:46:06

wget
Новичок
Зарегистрирован: 2012-08-27
Сообщений: 16
Рейтинг :   12 
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

Для начала был выбран js-скрипт для подсветки кода в браузере - jquery-syntaxhighlighter. Он был исправлен под себя, перелопачен (подправлены стили и скрипт). Скачаем и распакуем в папку с шаблоном наш скрипт. Сразу скажу, что он требует jquery, так что если ваш шаблон не использует его, то его тоже надо подключить. Делается это так:

Код:

<head>
...
<script type="text/javascript" src="{tpl_url}/syntaxhighlighter/scripts/jquery-1.4.2.min.js"></script>
...
</head>

После того, как мы подключили JQuery, нужно подключить Highlighter и проинициализировать его:

Код:

...
<подключение JQuery>
<script type="text/javascript" src="{tpl_url}/syntaxhighlighter/scripts/jquery.syntaxhighlighter.min.js"></script>
<script type="text/javascript">$.SyntaxHighlighter.init();</script>
...

Готово! Больше никаких правок в шаблон вносить не надо.
Теперь открываем engine/includes/classes/parse.class.php. Наш тег [ code ] будет использоваться так -  [ code=<язык> ], поэтому будем изменять регулярку. Ищем такой фрагмент:

Код:

        // Special BB tag [ code] - blocks all other tags inside
        while (preg_match("#\[code\](.+?)\[/code\]#ies", $content, $res)) {
            $content = str_replace($res[0], '<pre>'.str_replace(array('[', '<'), array('[', '&lt;'), $res[1]).'</pre>', $content);
        }

И меняем на:

Код:

        // Special BB tag [ code] - blocks all other tags inside
        // assd: replaced: [code\] => [code=(.*?)\] | '<pre>' => '<pre class="language-'.$res[1].'">' | $res[1]).'</pre>' => $res[2]).'</pre>'
        while (preg_match("#\[code=(.*?)\](.+?)\[/code\]#ies", $content, $res)) {
            $content = str_replace($res[0], '<pre class="language-'.$res[1].'">'.str_replace(array('[', '<'),  array('[', '&lt;'), $res[2]).'</pre>', $content);
            $content = str_replace('<br>', "\n", $content);
        }

Далее ищем:

Код:

        $content    =    preg_replace("/<code>(.*?)<\/code>/es", "phphighlight('$1')", $content);
        $content    =    str_replace("\n</p>\n", "</p>", $content);

И добавляем после этих строк:

Код:

        #Added to prevent adding <br />s in highlighted code
        preg_match_all("#<pre class=\\\"brush: (.*?)\\\">(.+?)</pre>#ies", $content, $ress);
        foreach ($ress as $res) {
            $content = str_replace($res[0],str_replace('<br />', "\n", $res[0]),$content);
        }

Все, сохраняем. После этих нехитрых манипуляций подсветка кода должна заработать.
http://iceimg.com/i/6f/bc/1d16bef878.png
няшка.

//by wget

Отредактированно wget (2012-08-28 20:55:10)

Неактивен

 

#9 2012-08-28 21:21:49

beliy
Пользователь
Зарегистрирован: 2012-08-11
Сообщений: 36
Рейтинг :   
Профиль

Re: Подсветка синтаксиса в статьях с использованием GeSHi

спс wink

Неактивен

 

#10 2012-08-28 22:38:21

Евгений
Модератор
Откуда: Россия
Зарегистрирован: 2009-04-08
Сообщений: 1014
Рейтинг :   38 
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

Переношу в раздел FAQ.

wget, спасибо за реализацию! wink


I NGeneration CMS

Неактивен

 

#11 2013-04-08 10:14:37

irbees2008
Пользователь
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2271
Рейтинг :   98 
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

не работает ....,на двух сайтах пробывал,скрипты подключены,а не работает,может из за версии ?у меня svn 0.9.3 + SVN [SVN1126+]

Неактивен

 

#12 2013-04-30 09:04:36

irbees2008
Пользователь
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2271
Рейтинг :   98 
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

sad

Неактивен

 

#13 2015-09-18 19:34:28

irbees2008
Пользователь
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2271
Рейтинг :   98 
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

wget написал:

Теперь открываем engine/includes/classes/parse.class.php. Наш тег [ code ] будет использоваться так -  [ code=<язык> ], поэтому будем изменять регулярку. Ищем такой фрагмент:

Код:

        // Special BB tag [ code] - blocks all other tags inside
        while (preg_match("#\[code\](.+?)\[/code\]#ies", $content, $res)) {
            $content = str_replace($res[0], '<pre>'.str_replace(array('[', '<'), array('[', '&lt;'), $res[1]).'</pre>', $content);
        }

И меняем на:

Код:

        // Special BB tag [ code] - blocks all other tags inside
        // assd: replaced: [code\] => [code=(.*?)\] | '<pre>' => '<pre class="language-'.$res[1].'">' | $res[1]).'</pre>' => $res[2]).'</pre>'
        while (preg_match("#\[code=(.*?)\](.+?)\[/code\]#ies", $content, $res)) {
            $content = str_replace($res[0], '<pre class="language-'.$res[1].'">'.str_replace(array('[', '<'),  array('[', '&lt;'), $res[2]).'</pre>', $content);
            $content = str_replace('<br>', "\n", $content);
        }

Далее ищем:

Код:

        $content    =    preg_replace("/<code>(.*?)<\/code>/es", "phphighlight('$1')", $content);
        $content    =    str_replace("\n</p>\n", "</p>", $content);

И добавляем после этих строк:

Код:

        #Added to prevent adding <br />s in highlighted code
        preg_match_all("#<pre class=\\\"brush: (.*?)\\\">(.+?)</pre>#ies", $content, $ress);
        foreach ($ress as $res) {
            $content = str_replace($res[0],str_replace('<br />', "\n", $res[0]),$content);
        }

//by wget

не работает ,вывел кнопки по инструкции http://ngcms.ru/forum/viewtopic.php?pid=37090#p37090
, кнопки для  html js css .Кнопки рабочие не работает что то в коде выше ,а что не пойму.

Отредактированно irbees2008 (2015-09-18 19:37:07)

Неактивен

 

#14 2015-09-20 09:12:44

irbees2008
Пользователь
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2271
Рейтинг :   98 
Профиль  Вебсайт

Re: Подсветка синтаксиса в статьях с использованием GeSHi

нашел ошибку

Код:

$content = str_replace($res[0], '<pre class="language-'.$res[1].'">'.str_replace(array('[', '<'),  a

заменить на

Код:

$content = str_replace($res[0], '<pre class="brush:'.$res[1].'">'.str_replace(array('[', '<'),  a

кому нужно будет подробно об установке здесь http://ngcmshak.ru/interfeis/vot-esze-o … ghter.html

Отредактированно irbees2008 (2015-09-20 12:21:30)

Неактивен

 
  • Список
  •  » FAQ
  •  » Подсветка синтаксиса в статьях с использованием GeSHi

Board footer

Powered by FluxBB

[ Generated in 0.016 seconds, 20 queries executed ]