Не забыли распечатать?

pic

Если у вас есть страничка и вы не предусмотрели возможность распечатки страничек, то дело ваше плохо. В общем-то, посетители при необходимости распечатают, конечно, но только в экранном виде — с пунктами меню, фоном, элементами оформления и прочими не нужными для печати заморочками. Будут читать, мучиться и вспоминать автора странички нехорошими словами. Вам повезло — я расскажу один из способов «прикручивания» версии для печати к уже существующему сайту. Уточним только — у вас нет движка, динамически формирующего страницы — в этом случае «версия для печати» делается доработкой кода движка, но чаще всего сразу предусмотрена в нем.

Также у вас не просто «куча» разрозненных страниц, как это делают начинающие веб-строители на Народе-ру. Мы рассмотрим самый популярный вариант, использующий технологию SSI. Это когда общая для всех страничек верхушка с меню и каскадными стилями и (при необходимости) общий «подвал» со счетчиками, копирайтом и подписями прицепляются к каждой страничке специальными командами. Например, на сайте «ДОМЕН-УЗ» http://people.uzsci.net это было выполнено так:

pic

И типовой конец каждой странички:

pic

Жирным начертанием выделены строки с подключением внешних файлов. Menu.ssi содержит описание стилей элементов ссылок, заголовков, абзацев текста, отступов и первых символов абзаца и заголовков. Footer.ssi содержит кнопочки двух счетчиков — от Арбуза-ком и от Хотлога.
Так было до того, как будет сделана возможность «версии для печати». При желании распечатать страничку вы бы получили распечатку так, как она выглядит на рисунке 3.

pic

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

pic

После этого у вас появится надпись «Версия для распечатки» в виде ссылки. DOCUMENT_URI — это переменная окружения, которой в случае отработки ссылки присваивается значение «print». Если вы находите, что надпись — не совсем элегантный ход (что, в общем-то, справедливо), то озаботьтесь поиском картинки принтера. В этом случае строка примет такой вид (уже из двух строк):

pic

Теперь в самом верху странички появится значок принтера, рисунок 1.

А наша задача в каждой страничке вызывать тот или иной подключаемый файл в зависимости от содержания постоянной окружения. Выполняется это следующими командами:

pic

Первая строка из выделенных жирным написанием строк сравнивает значение переменной окружения со строкой «print», дальнейшее понятно даже тем, кто владеет Бейсиком или английским. Если значение переменной окружения совпадает с «print», то подключается файл menu_.ssi, в противном случае, как и прежде, подключается файл. То есть мы должны заранее подготовить нужный для печати menu_.ssi. Его нетрудно сделать из имеющегося menu.ssi, надо выбросить верхний рисунок и главное меню и поменять стили, помня, что теперь главное не красивый вид на экране, а качественная печать. Убрать, например, зеленый цвет первых символов абзаца, и можно также поменять семейство шрифтов, заменив элегантный на веб-страничках Verdana на более привычный для печати Arial. Впрочем, это дело вкуса. Вот как, например, получилось у меня.

pic
pic

На экране страничка для печати будет выглядеть, как на рисунке 2, на печать выйдет так, как на рисунке 4. Это уже довольно приемлемый вариант.
Да, еще о подвале. Нам надо отсечь при формировании строки для печати счетчики, подключаемые файлом footer.ssi. Это получилось выполнить так же, как и для файла menu.ssi, если не для печати, то подключать файл footer.ssi, если для печати — то ничего не подключать.

Примечание. Крутые веб-программисты найдут здесь массу методических изъянов, то, тем не менее, я уверен, что этот материал будет интересен и полезен армии любителей, которые, как и я, собирают по крохам интересные штучки и воплощают в своих проектах. Эту идею, понравившуюся мне, я увидел на популярной страничке Черри-новостей http://www.cherry-design.spb.ru/news/issue.php?id=7 Попробовал — понравилось, решил поделиться.

Orphus system