В общем случае когда необходимо сделать версию для печати для любой страницы сайта, мы поступаем следующим образом:
1) Размещаем ссылку в дизайне сайта (в файле prolog_main.php) озаглавленную как "Версия для печати".
И ведущую на ту же страницу, но с параметром print=Y.
Код такой ссылки необходимо задавать в виде
Код |
---|
<a title="Версия для печати" href="<?echo $GLOBALS["APPLICATION"]->GetCurPage().(($s=DeleteParam(array("print")))=="" ? "?print=Y" : "?$s&print=Y");?>">Печать</a>
|
2) Модифицируем файлы prolog_main.php и epilog_main.php так, чтобы они корректно выдавали пролог и эпилог в зависимости от значения параметра print.
Теперь рассмотрим это на примере файла из дистрибутива демо-версии:
У вас есть страница /ru/about/news/index.php, со следующим содержимым:
Код |
---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// код для работы с панелью, он нас не интересует
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/news/news.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
?>
|
Структура этой страницы:
1) /bitrix/modules/main/include/prolog_before.php
В данном файле выполняются такие действия как: установление связи с базой данных, подключение всех необходимых модулей и т.д.
В нем ничего не выводится на экран.
2) /bitrix/modules/main/include/prolog_after.php
В этом файле в зависимости от языка подключается
либо
/bitrix/php_interface/ru/prolog_main.php
либо
/bitrix/php_interface/en/prolog_main.php
В этих двух файлах как раз выводится "шапка" сайта (HTML) (или как мы ее называем - пролог сайта).
И в них обоих необходимо обработать параметр "print", используя код наподобии:
Код |
---|
<?
if ($_GET["print"]=="Y") :
// выводим шапку для печати
include(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/lang/", "/prolog_main.php"));
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?echo LANG_CHARSET?>">
<META NAME="ROBOTS" content="ALL">
<style>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/".LANG."/styles.css")?>
<?if (strlen($APPLICATION->GetAdditionalCSS())>0) require($_SERVER["DOCUMENT_ROOT"].$APPLICATION->GetAdditionalCSS());?>
</style>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF" link="#2974B2" alink="#3A8DD1" vlink="#7E0143"><?
else : // выводим обычную шапку сайта
?>
<!-- Первоначальное содержимое файла prolog_main.php -->
...
<?
endif;
?>
|
Другими словами мы подменяем шапку сайта на более упрощенную, пустую и без всякого дизайна в том случае если на страницу поступил параметр print=Y.
Возвратимся к содержимому страницы /ru/about/news/index.php
3) /bitrix/php_interface/include/news/news.php
В данном файле выводится непосредственно содержимое страницы. Именно то что необходимо распечатать.
4) /bitrix/modules/main/include/epilog.php
Данный файл выводит эпилог сайта, и в зависимости от языка подключает
либо
/bitrix/php_interface/ru/epilog_main.php
либо
/bitrix/php_interface/en/epilog_main.php
В этих файлах также необходимо провести ряд изменений наподобии:
Код |
---|
<?
if ($_GET["print"]=="Y") :
?></body></html><?
else :
// выводим обычный эпилог сайта
?>
<!-- Первоначальное содержимое файла epilog_main.php -->
...
<?
endif;
?>
|
Таким образом мы модифицируем только пролог и эпилог сайта и получаем возможность выводить на печать любую страницу сайта без внесения в нее каких либо изменений.