Матвей Земсков

Заметки веб-мастера

Суббота, 28 июня 2014 13:04

Просмотр отладочной информации на сайте под управлением 1С-Битрикс

Оцените материал
(0 голосов)

В процессе разработки модулей и компонентов для 1С-Битрикс очень часто возникает потребность вывода отладочной информации на экран. Это можно сделать несколькими способами. Мне на ум пришло 3 способа. Сейчас я немного расскажу о них. Возможно есть и другие способы, но и этих вполне достаточно. В основном, разработчику бывает необходимо просматривать результат работы какого-нибудь компонента, который хранится в массиве $arResult. Для этого можно воспользоваться 2 функциями, представленными ниже.

PHP

function pre($el, $p = null) {
	global $USER;
	if($USER->IsAdmin() || $p["SHOW_ALL"]) {
		echo "
";
		if(!empty($p["TITLE"]))
			echo "

".$p["TITLE"]."

"; if(!empty($el)) print_r($el); else var_dump($el); echo "
"; } }

Функция pre() выводит на экран массив, переданный в качестве первого аргумента с учетом параметров переданных вторым аргументом. Второй аргумент является массивов и может содержать следующие элементы:

  • “SHOW_ALL” => “Y” – показывать информацию всем пользователям
  • “STYLE” => “” – CSS-правила для отображения блока с отладочной информацией
  • “TITLE” => “” – Текст заголовка

Второй аргумент - необязательный. Главным преимуществом этой функции является то, что результат ее работы видят не все посетители, а только администратор. Если, конечно не передан параметр $p[“SHOW_ALL”]. Поэтому ее удобно использовать на работающем сайте, но не желательно это делать из-за особенностей кэширования. Возможно, что результат ее работы закэшируется и будет показан посетителям сайта, а это очень нехорошо.

Чтобы предотвратить такую ситуацию, можно использовать следующую функцию. Ее особенностью является то, что она сохраняет результат своей работы в файл, путь к которому передается ей в качестве второго аргумента. Вторым аргументом функции является массив, который необходимо вывести.

PHP

function preIntoFile($filepath, $arr){
	$file = $_SERVER["DOCUMENT_ROOT"].$filepath;
	$pre = print_r($arr, true);
	$fp = fopen($filepath,'a+');
	if(flock($fp, LOCK_EX)){
		fwrite($fp,$pre);
		flock($fp, LOCK_UN);
	}
	else
	{
		echo "Невозможно заблокировать файл";
	}		
	fclose($fp);	
}

Если вам понравилась какая-нибудь функция из приведенных выше, и вы решили ее использовать просто разместите код функции в файле /bitrix/php_interface/init.php. Можете разместить в нем обе функции.

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

На этом статью завершаю, надеюсь, что информация будет полезна читателю.

Прочитано 4574 раз

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


Защитный код
Обновить

Мои услуги

Предлагаю следующие услуги:

  • Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
  • Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
  • Настройка и кастомизация компонентов и модулей для указанных CMS
  • Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
  • Разработка лендингов (landing-pages)

По все вопросам обращайтесь через форму обратной связи

Скачать

Предлагаю вашему вниманию: