DbHelp.ru
Маленький Yii блог
Комментарии
Гость: фотографии половова акта Рґ...
Гость: Добрый день товарищи! Минеральные удобрения– вещест...
Гость: http://subcutaneous.co/c9e8.html http://subcutaneous.co/82gl.html http://subcutaneous.co/4e6.html ...
Гость: Эта идея устарела ------... [url=https://twitter.com/madsoklj/status/8827207...
Гость: Дипломы ведущих ВУЗов РФ недорого и срочно: Крат...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Подсветка синтаксиса

Рубрика: Что нового?

Оцените эту статью:

Рейтинг: 0.00 (0)
19 Апр. 2010
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Подсветка php кода на страницах блога — штука невероятно удобная. Давайте в двух словах разберемся как я подкрутил её у себя...

---

Все инструменты для подсветки синтаксиса делятся на две категории (насколько мне известно): js скрипты делающие подсветку на стороне клиента и серверные скрипты которые делают всё это на стороне сервера.

Описывать подробно плюсы и минусы думаю нет смысла, т.к. они вполне очевидны:

  • js-библиотеки изменяют блок с кодом на лету в браузере пользователя. Если javascript у него будет отключен - всей красоты он не увидит. Конечно выполнение скрипта требует небольшого времени и для больших страниц с кодом пользователю потребуется подождать пока скрипт выполнит свою работу (примерно 0.5-2сек)
  • серверные скрипты подсветки синтаксиса делают разукравшивание всего один раз, при добавлении/изменении страницы. css/html требуемый для красивого отображения кода попадает сразу в базу. Данный вариант удобен конечным пользователям т.к. не требует от них поддержки js и выполнения кода подсветки у себя в браузере от страницы к странице.

Для подсветки на своем блоге я выбрал маленький скрипт highlight.js который на стороне клиента занимается всеми «разукрашиваниями». Мне просто удобнее что бы код в базе не меняли всякие скрипты, вдруг я через день передумаю и решу использовать что то другое.

Порядок работы:

1. Заходим на сайт и скачиваем highlight.js

2. Распаковываем папку highlight в корень, рядом с папкрй protected

3. Подключаем скрипт в лаяуте строчкой:

<script src="/highlight/highlight.pack.js"></script>
либо зададим свойство scriptMap компонента clientScript. Это можно сделать как в настройках приложения, так и в коде. К примеру:
$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
    'highlight'=>'/highlight/highlight.js',
    …
);

4. На странице где хотим использовать подсветку синтаксиса (либо сразу в лаяуте) делаем инициализацию библиотеки:

<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>

5. Блоки кода на сайте в которых хотим использовать подсветку синтаксиса оформляем по типу:

<pre><code>...</code></pre>

Пользуемся!



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Добавляем Captcha на страницу"

  2. Это руководство предназначено для более-менее продвинутых пользователей. Если вы только что начали работу с Yii Framework-ом, вам стоит вернутся ... "Многоязычность субдоменов и URL-правила"

  3. Серия рецентов "By Example" пытается предоставить для разработчиков примеры использования самых распостраненных действий в Yii. Учимся использовать CHtml::listData() на ... ""By Example" : CHtml - listData()"

[adm] zolter

Было сказано: Вторник, 20 Апрель 2010

Дополнил немного статью

[guest] Werewolf

Было сказано: Вторник, 20 Апрель 2010

<script src="/view/highlight/highlight.pack.js"></script>
Protected должна быть закрыта от глаз, тем более класть ее прямо в корень документрута кощунственно.


Мне кажется проще использовать registerScriptFile.

[adm] zolter

Было сказано: Вторник, 20 Апрель 2010

Я изначально использую вариант с scriptMap, по поводу protected исправил, действительно неверно указал :)

[guest] yareg

Было сказано: Четверг, 29 Апрель 2010

Хотел написать на мыло, но как-то не нашел контактного мейла...
http://ipicture.ru/upload/100429/Fxy7fc64xg.jpg

[guest] zolter

Было сказано: Четверг, 29 Апрель 2010

Оо спасибо,
на будущее моя почта [email protected]

[guest] zolter

Было сказано: Четверг, 06 Май 2010

Подсветка синтаксиса кстати походу есть встроенная в yii, надо будет об этом написать :)

[guest] Гость

Было сказано: Среда, 25 Август 2010

Столкнулся с проблемой, что TinyMCE-редактор перекодирует символы и логично, что подсветка не работает. Как обойти это? Например как то выделить, что это мол исходный код - его не трогай)

[adm] zolter

Было сказано: Четверг, 26 Август 2010

Я TinyMCE юзаю, с этим проблем нету :/
Правда блоки с кодом вбиваю через режим HTML в нем, а не через сам виз.редактор

[guest] Гость

Было сказано: Четверг, 26 Август 2010

Да, спасибо, через хтмл режим работает!) полез спрашивать не изучив тулбар редактора(<

Оставить комментарий


Код:
Имя: