Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

WordPress содержит два встроенных редактора, позволяющих редактировать код прямо через браузер — это Редактор Темы и Редактор Плагина. По умолчанию, редактор выглядит очень просто и с его помощью трудно редактировать, потому как цвета все черные и серые. В этом руководстве я покажу вам, как интегрировать CodeMirror.js в редакторы, чтобы сделать их симпатичнее. Наши фрагменты кода будут выделены большим количеством цветов, у редакторов даже будут номера строк, и много чего еще.

Улучшаем вид редактора кода WordPress с помощью CodeMirror

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!

Скачать исходники |

Улучшаем вид редактора кода WordPress с помощью CodeMirror

Шаг 1. Подготовка

Для начала надо скачать библиотеку CodeMirror. Это мощная библиотека с поддержкой многих языков программирования и параметров. После загрузки и извлечения давайте поместим эту папку в папку с вашей темой (для примера я использую тему оформления Twenty Eleven) и назовем ее codemirror.

Улучшаем вид редактора кода WordPress с помощью CodeMirror

Затем мы создадим файл под названием codemirror.php внутри этой папки и включим этот файл в файл functions.php вашей темы.

// functions.php
include("codemirror/codemirror.php");

Откройте ваш codemirror.php и перейдите на следующий шаг.

CodeMirror — это компонент, который улучшает редактор кода в браузере. Когда для языка, на котором вы программируете, доступен мод, он будет подсвечивать ваш код, а по желанию поможет форматировать с выравниванием.

Шаг 2. Регистрация скриптов и стилей

add_action('load-theme-editor.php', 'codemirror_register');
add_action('load-plugin-editor.php', 'codemirror_register');

function codemirror_register() {

	wp_register_script('codemirror', get_template_directory_uri()."/codemirror/lib/codemirror.js");
	wp_register_style('codemirror', get_template_directory_uri()."/codemirror/lib/codemirror.css");

	wp_register_style('cm_blackboard', get_template_directory_uri()."/codemirror/theme/blackboard.css");

	wp_register_script('cm_xml', get_template_directory_uri()."/codemirror/xml/xml.js");
	wp_register_script('cm_javascript', get_template_directory_uri()."/codemirror/javascript/javascript.js");
	wp_register_script('cm_css', get_template_directory_uri()."/codemirror/css/css.js");
	wp_register_script('cm_php', get_template_directory_uri()."/codemirror/php/php.js");
	wp_register_script('cm_clike', get_template_directory_uri()."/codemirror/clike/clike.js");

	add_action('admin_enqueue_scripts', 'codemirror_enqueue_scripts');
	add_action('admin_head', 'codemirror_control_js');
}

Код выше зацепит функцию codemirror_register за две зацепки: load-theme-editor.php и load-plugin-editor.php. Это значит, что когда вызывается Theme Editor или Plugin Editor, они вызовут нашу функцию codemirror_register.

Библиотека ядра

Внутри этой функции мы зарегистрируем все нужные файлы скриптов и стилей. codemirror.js и codemirror.css — два основных компонента библиотеки, они находятся в папке lib.

Тема

blackboard.css — это файл темы, папка theme в библиотеке CodeMirror также содержит много других файлов темы, вы можете изменить это в зависимости от ваших настроек. Есть много доступных тем, вы можете увидеть их здесь:

  • Default:
    Улучшаем вид редактора кода WordPress с помощью CodeMirror
  • Blackboard:
    Улучшаем вид редактора кода WordPress с помощью CodeMirror

Моды

Моды — это JavaScript программы, которые помогают добавлять цвет (по желанию — выравнивание) текста, написанного на данном языке. Их значение — значение MIME типа, оно зависит от языка, с которым мы работаем. Вы можете увидеть все моды в папке внутри библиотеки. Поскольку встроенный редактор WordPress может редактировать HTML, PHP, CSS (больше — здесь), то я зарегистрирую эти скрипты на следующих строках функции codemirror_register. Причину, по которой я зарегистрировал скрипты XML и Clike, я объясню позже.

После регистрации всех файлов скриптов нам нужно поставить их в очередь каждый раз, когда загружается наш блок администратора. Так что я добавлю функцию codemirror_enqueue_scripts к зацепке admin_enqueue_scripts. Затем мы также вставляем управляющий файл javascript (мы можем изменять, добавлять или удалять скрипт настроек) CodeMirror в шапку зоны администратора.

Шаг 3. Добавление скриптов в очередь

function codemirror_enqueue_scripts() {
	wp_enqueue_script('codemirror');
	wp_enqueue_style('codemirror');

	wp_enqueue_style('cm_blackboard');

	wp_enqueue_script('cm_xml');
	wp_enqueue_script('cm_javascript');
	wp_enqueue_script('cm_css');
	wp_enqueue_script('cm_php');
	wp_enqueue_script('cm_clike');
}

Функцию выше особо объяснять не надо, она просто добавляет в очередь все скрипты, которые мы зарегистрировали ранее. Откройте Редактор Темы и посмотрите исходный код, вы увидите, что эти скрипты встроены в шапку.

Шаг 4. Зацепка скрипта

Пример использования

Наш скрипт:

function codemirror_enqueue_scripts() {
?>
	<script type="text/javascript">
		jQuery(document).ready(function() {
			var editor = CodeMirror.fromTextArea(document.getElementById("newcontent"));
		})
	</script>
<?php
}

Эта функция будет встроена в шапку блока администратора, CodeMirror будет влиять на любой элемент, содержащий ID newcontent, потому что у нашего элемента textarea, который содержит наш код, этот ID.

Улучшаем вид редактора кода WordPress с помощью CodeMirror

При использовании CodeMirror без опций, CodeMirror будет использовать свои настройки по умолчанию. Для того, чтобы использовать другие опции, мы можем сделать, например, так:

function codemirror_enqueue_scripts() {
?>
	<script type="text/javascript">
		jQuery(document).ready(function() {
			var editor = CodeMirror.fromTextArea(document.getElementById("newcontent"), {
				lineNumbers: true,
				mode: "text/javascipt",
				theme: "blackboard"
			});
		})
	</script>
<?php
}

Эти дополнительные опции добавят номера строк в наш редактор и в тему blackboard. Обратите внимание на опцию mode, эта опция определит, какой мод CodeMirror должен использовать (в шаге 2 мы упоминали, что такое мод). Поскольку у каждого типа файла свой мод, нам нужно определить эту опцию, чтобы заставить CodeMirror работать хорошо и показывать все точно. Вот другие значения типов MIME:

  • "text/javascript" для мода JavaScript
  • "text/css" для мода CSS
  • "application/x-httpd-php" для мода PHP , этот мод требует моды XML, JavasScript, CSS и C-Like. По этой причине нам нужно зарегистрировать скрипты XML и C-Like заранее.

Простой HTML/PHP мод основан на моде C-like. Зависит от модов PHP, XML, JavaScript, CSS и C-like (см. здесь)

Расширенное использование

Для лучшего использования, нам нужно определить, какие типы файлов мы редактируем, чтобы использовать правильный мод. Наша цель — заставить скрипт использовать правильный мод автоматически. Вот решение:

function codemirror_control_js() {
	if (isset($_GET['file'])) { // $_GET['file'] holds path of file we edit
		$filename_to_edit = end(explode("/", $_GET['file'])); // We need to get file name
		$file = substr($filename_to_edit, stripos($filename_to_edit, '.')+1); // Get file extension
		switch ($file) {
			// And assign appropriate MIME type value to $file variable
			case "php": $file = "application/x-httpd-php"; break;
			case "js" : $file = "text/javascript"; break;
			case "css": $file = "text/css"; break;
		}
	}
	else {
		$file_script = $_SERVER['SCRIPT_NAME'];
		$file_script = end(explode('/', $file_script));
		if ($file_script == 'theme-editor.php')
			$file = "text/css";
		else
			$file = "application/x-httpd-php";
	}

	?>
	<script type="text/javascript">
		jQuery(document).ready(function() {
			var editor = CodeMirror.fromTextArea(document.getElementById("newcontent"), {
				lineNumbers: true,
				mode: "<?php echo $file ;?>",
				theme: "blackboard"
			});
		})
	</script>
	<?php
}

Каждый раз, когда мы щелкаем по файлу для редактирования, переменная $_GET['file] будет содержать путь к этому файлу. Например:

wp-admin/theme-editor.php?file=header.php
wp-admin/theme-editor.php?file=style.css
wp-admin/plugin-editor.php?file=akismet.php

И этот код позволит нам определить расширение файла, который мы редактируем:

	$filename_to_edit = end(explode("/", $_GET['file'])); // We need to get file name
	$file = substr($filename_to_edit, stripos($filename_to_edit, '.')+1); // Get file extension

Затем, в зависимости от расширения, мы прикрепляем подходящее значение типа MIME.

Если при первом открытии редактора темы или плагина мы не щелкаем по какому-то файлу, переменной $_GET['file'] не существует. WordPress откроет файл по умолчанию для редактирования автоматически. Для редактора темы файл по умолчанию — style.css, в редакторе плагинов это другой PHP файл. Так что нам нужно определить значение MIME типа "text/css" для редактора темы и "application/x-httpd-php" для редактора плагинов.

Стилизация

Все готово, но редактор выглядит странно. Нам нужно немного отредактировать CSS файл. В папке lib мы открываем файл codemirror.css, находим следующий код:

.CodeMirror-scroll {
	overflow-x: auto;
	overflow-y: hidden;
	height: 300px;
	/*
	 This is needed to prevent an IE[67] bug where the scrolled content
	 is visible outside of the scrolling box.
	*/
	position: relative;
	outline: none;
}

И заменяем его этим:

.CodeMirror, .CodeMirror div {
	margin-right: 0!important;
}
.CodeMirror-scroll {
	overflow-x: auto;
	overflow-y: hidden;
	height: 450px;
	/*
	 This is needed to prevent an IE[67] bug where the scrolled content
	 is visible outside of the scrolling box.
	*/
	position: relative;
	outline: none;
}

Дело за вами

У CodeMirror есть много возможностей, это действительно мощная библиотека. Прочтите руководство по CodeMirror для того, чтобы знать о всех возможностях. Вы можете найти другие возможности или варианты их настройки и самостоятельно добавить их в код вашего WordPress. Это достаточно просто: зарегистрируйте, добавьте в очередь и зацепите скрипт, как мы сделали это выше.

Заключение

В этом руководстве я не сильно фокусировался на CodeMirror и его возможностях, я только продемонстрировал способ его интеграции в редактор , чтобы сделать наш редактор симпатичнее и удобнее в работе. Надеюсь, что это руководство будет полезно всем.

Если вы считаете, что с этим руководством есть какие-то проблемы, или у вас есть идеи по-лучше, или есть что добавить — напишите об этом в комментариях. Мы будем очень благодарны.

Источник: WP.tutsplus.com
inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 1

Даниил:

Стилизация удобная, но есть один существенный минус, из за которого придется снести этот codemiror ! При поиске нужной фразы через CTRL+F находит лишь ближайшие 2-3 строки и подсвечивает их. А если нужная строка где то внизу кода то поиск туда уже не добьет и приходиться искать ручками. Это существенно замедляет работу с редактором.

Добавить комментарий