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

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

Вы не зашли.

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

beliy
Участник
Зарегистрирован: 2012-08-11
Сообщений: 39
Рейтинг :   

Подсветка синтаксиса в статьях с использованием 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
Сообщений: 39
Рейтинг :   

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

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

Не в сети

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

beliy
Участник
Зарегистрирован: 2012-08-11
Сообщений: 39
Рейтинг :   

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
Сообщений: 39
Рейтинг :   

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
Сообщений: 39
Рейтинг :   

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('[', '<'), $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('[', '<'), $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);
		}

Все, сохраняем. После этих нехитрых манипуляций подсветка кода должна заработать.
1d16bef878.png
няшка.

//by wget

Изменено wget (2012-08-28 20:55:10)

Не в сети

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

beliy
Участник
Зарегистрирован: 2012-08-11
Сообщений: 39
Рейтинг :   

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

спс wink

Не в сети

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

Евгений
Модератор
Откуда Россия
Зарегистрирован: 2009-04-08
Сообщений: 1,014
Рейтинг :   38 
Сайт

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

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

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


I NGeneration CMS

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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

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

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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

sad

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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('[', '<'), $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('[', '<'), $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 20:37:07)

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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 13:21:30)

Не в сети

Подвал раздела

Работает на FluxBB