Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Подсветка снитаксиса в DLE с помошью google-code-prettify

Подсветка снитаксиса в DLE с помошью google-code-prettify


     20.08.2011    Хаки    4555

вопрос
Подскажите пожалуйста как сделать чтоб вставка исходного кода выводилась как у вас на сайте? Вот так

Ответил: ПафНутиЙ


Я ждал этого вопроса ))))
Итак инструкция:

  1. Качаем последнюю сжатую (несжатая нам впринципе нафиг не нужна) версию скрипта подсветки синтаксиса с google-code-prettify (на данный момент это версия от 1 июня 2011.) Заливаем файлы в нужные папки шаблона CSS - к CSS, js - к js.

  2. Открываем файл engine/classes/parse.class.php
    Находим код:
    $source = preg_replace( "#\[code\](.+?)\[/code\]#is", "<!--code1--><div class=\"scriptcode\"><!--ecode1-->\\1<!--code2--></div><!--ecode2-->", $source );

    меняем на:
    $source = preg_replace( "#\[code\](.+?)\[/code\]#is", "<!--code1--><pre class=\"prettyprint linenums\"><!--ecode1-->\\1<!--code2--></pre><!--ecode2-->", $source );


  3. Открываем файл main.tpl и перед </head> вставляем код:
    <script type="text/javascript" src="{THEME}/ПУТЬ/prettify.js"></script>
    <script type="text/javascript">$(function(){prettyPrint();});</script>

    слово ПУТЬ меняем на нужный путь к файлу prettify.js

  4. Настраиваем CSS под свой сайт.
    А для неленивых - на гуглокоде есть несколько тем

  5. Ну и на последок не забываем произвести перестроение публикаций, для того, чтобы исходный код в новостях везде имел положенный вид.


Дополнение от BR0kEN
Первые два пункта взять из вашей инструкции, а третий заменить на описанный ниже.

3. Открыть файл index.php и найти код:

if (strpos ( $tpl->result['content'], "<pre><code>" ) !== false) {

    $js_array[] = "engine/classes/highlight/highlight.code.js";

    $ajax .= <<<HTML

$(function(){
    $('pre code').each(function(i, e) {hljs.highlightBlock(e, null)});
});
HTML;

}


заменить его на:

if (strpos ( $tpl->result['content'], "<pre class=\"prettyprint linenums\">" ) !== false) {

    $js_array[] = "engine/classes/highlight/prettify.js";

    $ajax .= <<<HTML

    $(function(){prettyPrint();});

HTML;

}


Таким образом скрипт подсветки синтаксиса будет подгружаться только на тех страницах где был использован тег [ code ].
Отредактировал 20-11-2012, 23:15 - ПафНутиЙ
Причина: дополнил ответ

Комментарии пользователей (37)

DarkneZ
2

50 | 32

DarkneZ - 20 августа 2011 22:27 - Юзер

Спасибо! Отличная идея реализации!)

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 20 августа 2011 22:38 - Админ

Наздоровье, но идея не моя :)

Каков вопрос - таков и ответ. Просто помните об этом.

maxbeat
41 | 41

maxbeat - 20 августа 2011 23:33 - Местный

Создавали же тему,...https://dle-faq.ru/faq/questhacks/187-podsvetka-koda-v-dle-93.html

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 21 августа 2011 03:02 - Админ

Там другой скрипт подсветки.

Каков вопрос - таков и ответ. Просто помните об этом.

maxbeat
41 | 41

maxbeat - 21 августа 2011 04:43 - Местный

Кстати, снес тот код, поставил этот. Вообще класс winked

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 21 августа 2011 09:02 - Админ

Просто этот сам определяет язык кода, поэтому и установка проще.

Каков вопрос - таков и ответ. Просто помните об этом.

DroT
4

38 | 36

DroT - 9 сентября 2011 08:53 - Юзер

У меня не работает эта штука внутри тега spoiler,вместо текста, там $(function(){prettyPrint();}); как это исправить?
Ой, он вообще больше не работает, вместо текста только $(function(){prettyPrint();}); в чем проблема?

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 9 сентября 2011 09:32 - Админ

Скорее всего дело в руках. Тут то работает....
Возможно у вас стандартные длешные скрипты подключены после нестандартных.

Каков вопрос - таков и ответ. Просто помните об этом.

DroT
4

38 | 36

DroT - 9 сентября 2011 20:18 - Юзер

А, вы как всегда правы, исправил! bully

DroT
4

38 | 36

DroT - 9 сентября 2011 21:44 - Юзер

Нет, не работает, на Default работает, а у меня в шабе нет(

DroT
4

38 | 36

DroT - 10 сентября 2011 18:48 - Юзер

Я гений, я добавил файл .htaccess с таким содержимым:
Order Deny,Allow
Allow from all

Options -Indexes
в папку с скриптом и все заработало!
А как изменить размер текста внутри тега code? а то он у меня ну Оченнь мелкий?

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 10 сентября 2011 22:21 - Админ

Цитата: DroT
Я гений, я добавил файл .htaccess с таким содержимым:

вообщето это в DLE как само-собой разумеющееся делать надо....
размер текста менятся в css

Каков вопрос - таков и ответ. Просто помните об этом.

DroT
4

38 | 36

DroT - 10 сентября 2011 22:55 - Юзер

Цитата: ПафНутиЙ
вообщето это в DLE как само-собой разумеющееся делать надо....

ну для меня работа с htaccess это редкость, не думал что в нем ошбка...
размер текста менятся в css

а можно поподробней, какое место в css? а то я много менял, нечего не изменялось.

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 10 сентября 2011 23:12 - Админ

а что меняли?

Каков вопрос - таков и ответ. Просто помните об этом.

SX2
38

122 | 84

SX2 - 9 ноября 2011 21:42 - Юзер

Как сделать что тбы при нажатии на кнопку сразу было [code=php] текст [/code]

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 10 ноября 2011 17:42 - Админ

а смысл? скрипт сам определяет тип подсветки.

Каков вопрос - таков и ответ. Просто помните об этом.

SX2
38

122 | 84

SX2 - 10 ноября 2011 17:58 - Юзер

Для этого да но у меня стоит этот
dle-faq.pro/faq/questhacks/187-podsvetka-koda-v-dle-93.html

Dierystaset
1 | 1

Dierystaset - 28 января 2012 02:29 - Юзер

Hello! Just want to say thank you for this interesting article! =) Peace, Joy.

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 28 января 2012 11:14 - Админ

you are welcome

Каков вопрос - таков и ответ. Просто помните об этом.

anton9408
14 | 15

anton9408 - 13 мая 2012 09:24 - Юзер

на dle 9.6 не работает

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 13 мая 2012 09:26 - Админ

Ну так для 9.5+ есть своя подсветка, встроенная в dle

Каков вопрос - таков и ответ. Просто помните об этом.

anton9408
14 | 15

anton9408 - 13 мая 2012 09:50 - Юзер

она у меня не работает)

elisey2012
6 | 6

elisey2012 - 8 ноября 2012 04:44 - Юзер

Ребята помогите всё (у меня по русскому языку двойка, я не знаю, что в русском языке не существует приставки з и поэтому пишу так, как слышу) зделал как и писали но вот параметр overflow: auto; не работает тоесть при длинном коде, код прыгает не следующюю строку

elisey2012
6 | 6

elisey2012 - 14 ноября 2012 21:39 - Юзер


elisey2012, Ау ребята ктонибуть подскажет в чём проблема у меня так https://dle-faq.ru/uploads/comments/1871/temp.jpg?r=1352914673 а хотелось бы вот так http://s017.radikal.ru/i406/1211/99/e2a3afa27c21.png

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 14 ноября 2012 21:41 - Админ

адрес страницы сайта, где подобное наблюдается напишите.

Каков вопрос - таков и ответ. Просто помните об этом.

elisey2012
6 | 6

elisey2012 - 14 ноября 2012 21:50 - Юзер

cms-style.ru

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 14 ноября 2012 21:51 - Админ

нет на этой странице блока с исходным кодом.

Каков вопрос - таков и ответ. Просто помните об этом.

elisey2012
6 | 6

elisey2012 - 14 ноября 2012 21:56 - Юзер


ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 14 ноября 2012 22:59 - Админ

к
pre.prettyprint
добавить
word-wrap: normal;
white-space: pre;

Каков вопрос - таков и ответ. Просто помните об этом.

elisey2012
6 | 6

elisey2012 - 15 ноября 2012 00:55 - Юзер

ПафНутиЙ,
Спасибо дружище ты как всегда на высоте..............

ivantu
13 | 5

ivantu - 30 мая 2013 10:28 - Юзер


У меня почему то скрипт начинает работать только после перезагрузки страницы...

вот при добавлении выглядит так:
https://dle-faq.ru/uploads/comments/2458/temp.jpg?r=1369895226

ivantu
13 | 5

ivantu - 30 мая 2013 10:29 - Юзер


а после обновления, все как положено:

ivantu
13 | 5

ivantu - 30 мая 2013 23:25 - Юзер

ПафНутиЙ,
Подскажите пожалуйста.

ivantu
13 | 5

ivantu - 3 июня 2013 02:49 - Юзер

Выручайте друзья, не пашет без обновления страницы.

ivantu
13 | 5

ivantu - 6 июня 2013 11:13 - Юзер

Up друзья.

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 6 июня 2013 19:59 - Админ

Так и должно быть.

Каков вопрос - таков и ответ. Просто помните об этом.

ivantu
13 | 5

ivantu - 6 июня 2013 21:54 - Юзер

На этом сайте без обновления вроде.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы