Как сделать "Версия для печати"?

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

Аватар пользователя dows dows 24 июля 2007 в 0:47

Добрый день! Сейчас делаю сайт www.cadobject.ru на базе Drupal. Многие камни прошел, но вот наткнулся на вот такую проблему - посетители запросили реализовать "Версию для печати" статей, т.е. чтобы для определенного вида публикаций отключалась вся шелуха красивая и оставалось только, что нужно читателю статьи. Ну, например вот так:
* Было: http://archive.cadmaster.ru/articles/28_archicad.cfm
* А нажал на ссылку "Версия для печати" и получил вот такую радость для сердца: http://archive.cadmaster.ru/articles/28_archicad.cfm#printme

Мозгами понимаю, что нужно подключить две разные CSS:

Но! Как это реализовать на Drupal? Сложность вызывает:
1. Формируя страницу, Drupal подключает огромное число CSS в различных модулях. Насколько я понимаю "Версию для печати" надо вписывать в свою тему (в "page.tpl.php") и там же в папке создавать CSS. Так?
2. Как сформировать собственно ссылку, чтобы финальный HTML-поток оборачивался в CSS именно для печати?

Дальше я насколько понимаю, должен переопределить Views и при формировании вида страницы (содержимого) вставить эту ссылку. Хех, не знаю понятно ли объяснил Smile

Я только изучаю, просьба не пинать сильно - форум пролазил, чего-то не нашел по этой теме ничего. Может направите глаза куда надо Smile

Комментарии

Аватар пользователя dows dows 24 июля 2007 в 16:21

Спасибо за наводку! Только возникли сложности - этот модуль добавляет "Версию для печати" для всех типов публикаций: для новостей и блогов, статей и статических страниц... Было бы классно все-таки настроить для кого вводится понятие "Версия для печати" или такое не возможно в принципе?

А вторая проблема - он абсолютно не реагирует на Pathauto. Т.е. версия для печати расположена по полному пути страницы... образуется ссылка типа www.мой_сайт.ru/node/60/print. Как-то лечится?

Аватар пользователя dows dows 27 июля 2007 в 21:44

проблему с добавлением ссылки "Версия для печати" решил через редактирование модуля, т.е. открываете файл "print.module" и находите функцию print_link(). Вот код, который у меня получился (жирным, то, что добавил я):

function print_link($type, $node = 0, $main) {
  $links = array();

  if ($node->type == 'book' && function_exists('book_link'))  {
    return;
  }
 
  <b>if ($node->type =='page' or $node->type =='poll' or $node->type =='product' or $node->type =='webform') {
        return;
  }</b>

  if ($type == 'node' && variable_get('print_show_link', 1) && $main == 0) {
    $links['print'] = theme('print_link', $node);
  }

  return $links;
}

Вопрос с Pathauto пока открыт Wink

Аватар пользователя Onza Onza 30 июля 2007 в 11:37

print чего-то не корректно работает на пятой версии, на 4.7. работал без такой кучи ошибок. Ставил его пару месяцев назад уже на пятерку, пришлось удалить (здесь о такой фигне писали, но через поиск не находится). Сейчас снова поставил print, какие-то глюки плюс весь лог забит ошибкой:
Missing argument 3 for print_link() в файле /.../public_html/sites/all/modules/print/print.module на строке 58
То же самая ошибка была раньше для строки 47, это вроде пофиксили, теперь другое...

Аватар пользователя gn@drupal.org gn@drupal.org 5 августа 2007 в 19:29

Print-friendly module для Друпала очень криво сделан - например, его колбасит от ссылок на внутренние закладки. Если порыться на drupal.org, можно найти патчики, которые решают эту проблему (http://drupal.org/node/60334), но, например, CCK он всё равно коверкает. Я так подозреваю, что на данный момент нормального Print-friendly модуля для Друпала просто нету :-(((.

Аватар пользователя jason32 jason32 31 июля 2007 в 0:46

а может просто настрочить тему для вывода буз лишних элементов, только контент и выводить её в зависимости от адреса - то есть node/555 - обычный сайт, а print/555 - уже версия для печати. Так кто-нить пробовал?

Аватар пользователя dows dows 11 сентября 2007 в 11:42

Обидно... я все-таки поставил Print-friendly - пока работает без сбоев... меня устраивает в общих чертах. Но многое ручками надо делать - например, у меня новости в отредактированном шаблоне выводятся... А Print-friendly выводит только тело сообщения, полностью игнорируя шаблон. Приходится шаблон править в двух местах... ;-(

Аватар пользователя c3266391 c3266391 11 сентября 2007 в 12:38

Вообще можно в теме поправить, чтобы стили подключались не как all, а как screen. А для печати подключить стиль как print и в нем описать только необходимое оформление, ненужные блоки скрыть через display:none, тогда не нужные никакие модули и дополнительные темы.

Аватар пользователя dows dows 11 сентября 2007 в 16:00

собственно это я сначала и спрашивал Smile но тогда не знал как сделать, а теперь подключил модуль... но конечно стиль как print подключить - это правильнее. Только разбираться с этим надо...

Аватар пользователя c3266391 c3266391 11 сентября 2007 в 16:49

Я прямо в теме в файле node.tpl под <?php print style_format($head) ?> написал

<style type="text/css" media="print">[user=import]import[/user] "/themes/profdom/print.css";</style>

В теме garland тоже так сделано. Хотя на сколько помню по 4.7 еще можно подключить с помощью какой-то функции в template.php.

Аватар пользователя Stealth AIDS@drupal.org Stealth AIDS@dr... 27 ноября 2007 в 9:40

Теперь для печати и экспорта CCK fields можно пользовать патч отсюда CCK support

Actually, can you try replacing the book_node_visitor_html_pre for the following in drupal/modules/book/book.module ?

function book_node_visitor_html_pre($node, $depth, $nid) {
  $node = node_build_content($node);

  // Allow modules to make their own additions to the node.
  node_invoke_nodeapi($node, 'print');

  $output .= "<div id=\"node-". $node->nid ."\" class=\"section-$depth\">\n";
  $output .= "<h1 class=\"book-heading\">". check_plain($node->title) ."</h1>\n";
  $output .= drupal_render($node->content);

  return $output;
}

Аватар пользователя bucefal bucefal 14 ноября 2008 в 21:44

Тема давно не обсуждалась, но я решил отписаться. Т.к. сам счас искал подобный модуль для своего сайта. И эту тему нашел через поиск сайта. Поэтому пишу тут для ребят, которые тоже будут искать такой модуль, ссылку на модуль, который использую я.
http://drupal.org/project/print

Аватар пользователя Equ@drupal.org Equ@drupal.org 16 ноября 2008 в 11:53

Пытаюсь разобраться с этим модулем (Printer, e-mail and PDF versions). В документации написано вроде, что можно пользоваться print_insert_link(), но у меня это фукнция ничего не вызывает. Пытаюсь вставть ссылку для печати в шаблон и сделать что-то подобное:

<a href="<?php print_insert_link(); ?>"><img... картинка с принтером... /></a>

Когда пытаюсь это сделать то получаю ссылку в виде

<a href="">Картинка</a>

В чем проблема?

UPD: отказался от модуля, сделал, как здесь.

Аватар пользователя Мари Мари 18 июня 2010 в 16:23

скажите а как сделать так,что на печать шли не все данные со странички.(допустим чтоб изображения не шли на печать.)