Создание страниц для печати с помощью модуля Printer

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 9 июля 2011 в 21:01

Подключил для создания печатной версии страниц модуль Printer.
Но автозапуск печати не заработал. Здесь предложили два варианта:
1. заменить в файле \sites\all\modules\print\print.pages.inc строку

<?php
$print
['sendtoprinter'] = $print_html_sendtoprinter "<script type='text/javascript'>Drupal.behaviors.print = function(context) {window.print();$window_close}</script>" '';
?>

на

<?php
$print
['sendtoprinter'] = $print_html_sendtoprinter "Drupal.behaviors.print = function(context) {setTimeout(\"window.print();$window_close\",1000);}" ''
?>

но это не помогло.

2. Вбить яваскрипт, который будет запускать печать, после загрузки страницы:

<body onload="window.print()">

помогло) Но лучше эту замену делать не в боди, а там, где это делается в первом варианте.
И еще, если установить закрытие страницы после печати, то страница закрывается не успев послать команду на печать.
Для того чтобы это исправить, вызывать закрытие стоит после того, как страница получит фокус (отобранный диалоговым окном для распечатки).

Т.е. в результате в файле \sites\all\modules\print\print.pages.inc нужно заменить строку

<?php
$print
['sendtoprinter'] = $print_html_sendtoprinter "<script type='text/javascript'>Drupal.behaviors.print = function(context) {window.print();$window_close}</script>" '';
?>

на

<?php
window
.onload = function(){window.print(); window.onfocus = function() { $window_close }}
?>

PS.
теперь пару слов о печальном. Модуль Printer понравился тем, что проходится по всем ссылкам в ноде и меняет их аля-ворд, т.е. например ссылка[1], ссылка[2], а внизу страницы выводит списком [1] http://адрес1, [2] http://адрес2.
Плохо то, что при этом он выводит на страницу и свою иконку "печать", ссылку на нее, и ссылку на заголовок ноды (если она выводится в виде ссылки).Конечно, хочется удалить этот трэш.
Красивого решения не нашел, но сделал так:
в файле \sites\all\modules\print\css\print.css скрыл иконку "печать":

span.print-link{
display:none;
}

а в файле \sites\all\modules\print\print.pages.inc
В том месте где происходит вывод ссылок:

<?php
if (!empty($_print_urls)) {
    
$urls _print_friendly_urls();
?>

удалил из массива первые две ссылки (или одну если заголовок страницы не выводится в виде ссылки)

<?php
array_shift
($urls);
?>

Если есть предложения, как сделать лучше - всегда пожалуйста

0 Thanks