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

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


     20.08.2011    подсветка, исходный код    Все вопросы » Хаки    6976

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

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


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

  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
Юзер

DarkneZ - 20 августа 2011 22:27 -

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

ПафНутиЙ
Админ

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

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

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

maxbeat
Местный

maxbeat - 20 августа 2011 23:33 -

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

ПафНутиЙ
Админ

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

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

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

maxbeat
Местный

maxbeat - 21 августа 2011 04:43 -

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

ПафНутиЙ
Админ

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

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

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

DroT
Юзер

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

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

ПафНутиЙ
Админ

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

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

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

DroT
Юзер

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

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

DroT
Юзер

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

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

DroT
Юзер

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

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

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

ПафНутиЙ
Админ

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

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

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

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

DroT
Юзер

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

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

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

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

ПафНутиЙ
Админ

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

а что меняли?

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

SX2
Эксперт

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

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

Самая сложная часть работы – решиться приступить к ней.

ПафНутиЙ
Админ

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

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

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

SX2
Эксперт

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

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

Самая сложная часть работы – решиться приступить к ней.

Dierystaset
Юзер

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

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

ПафНутиЙ
Админ

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

you are welcome

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

anton9408
Юзер

anton9408 - 13 мая 2012 09:24 -

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

ПафНутиЙ
Админ

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

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

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

anton9408
Юзер

anton9408 - 13 мая 2012 09:50 -

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

elisey2012
Юзер

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

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

elisey2012
Юзер

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

ПафНутиЙ
Админ

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

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

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

elisey2012
Юзер

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

cms-style.ru

ПафНутиЙ
Админ

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

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

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

elisey2012
Юзер

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


ПафНутиЙ
Админ

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

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

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

elisey2012
Юзер

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

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

ivantu
Юзер

ivantu - 30 мая 2013 10:28 -


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

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

ivantu
Юзер

ivantu - 30 мая 2013 10:29 -


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

ivantu
Юзер

ivantu - 30 мая 2013 23:25 -

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

ivantu
Юзер

ivantu - 3 июня 2013 02:49 -

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

ivantu
Юзер

ivantu - 6 июня 2013 11:13 -

Up друзья.

ПафНутиЙ
Админ

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

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

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

ivantu
Юзер

ivantu - 6 июня 2013 21:54 -

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

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

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

наверх