1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

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

Главные вкладки

Подключил для создания печатной версии страниц модуль 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);
?>

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

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /