Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Хаки » Подсветка снитаксиса в DLE с помошью google-code-prettify

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


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

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

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


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

  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 - -

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

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

ПафНутиЙ - -

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

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

maxbeat
Местный

maxbeat - -

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

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

ПафНутиЙ - -

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

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

maxbeat
Местный

maxbeat - -

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

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

ПафНутиЙ - -

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

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

DroT
Юзер

DroT - -

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

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

ПафНутиЙ - -

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

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

DroT
Юзер

DroT - -

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

DroT
Юзер

DroT - -

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

DroT
Юзер

DroT - -

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

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

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

ПафНутиЙ - -

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

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

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

DroT
Юзер

DroT - -

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

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

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

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

ПафНутиЙ - -

а что меняли?

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

SX2
Эксперт

SX2 - -

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

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

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

ПафНутиЙ - -

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

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

SX2
Эксперт

SX2 - -

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

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

Dierystaset
Юзер

Dierystaset - -

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

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

ПафНутиЙ - -

you are welcome

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

anton9408
Юзер

anton9408 - -

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

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

ПафНутиЙ - -

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

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

anton9408
Юзер

anton9408 - -

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

elisey2012
Юзер

elisey2012 - -

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

elisey2012
Юзер

elisey2012 - -


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

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

ПафНутиЙ - -

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

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

elisey2012
Юзер

elisey2012 - -

cms-style.ru

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

ПафНутиЙ - -

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

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

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

ПафНутиЙ - -

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

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

elisey2012
Юзер

elisey2012 - -

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

ivantu
Юзер

ivantu - -


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

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

ivantu
Юзер

ivantu - -


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

ivantu
Юзер

ivantu - -

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

ivantu
Юзер

ivantu - -

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

ivantu
Юзер

ivantu - -

Up друзья.

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

ПафНутиЙ - -

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

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

ivantu
Юзер

ivantu - -

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

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

наверх