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

Прислано: dows

пн, 23/07/2007 - 20: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 и при формировании вида страницы (содержимого) вставить эту ссылку. Хех, не знаю понятно ли объяснил :-)

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

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Shedko в пн, 23/07/2007 - 21:54.

А модули зачем ? =)
Можно конечно и "ручками", но для начала думаю подойдет и модуль Print Friendly Pages

Взять можно здесь


Опубликовано dows в пн, 23/07/2007 - 23:41.

спасибо! то, что нужно :-)


Опубликовано Shelendor в вт, 24/07/2007 - 07:24.

хм... только успел об этом задуматься - а тут так к месту эта тема :) спасибо :)


Опубликовано dows в вт, 24/07/2007 - 12:21.

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

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


Опубликовано dows в пт, 27/07/2007 - 17: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 пока открыт ;-)


Опубликовано KCEOH в пн, 30/07/2007 - 03:51.

printable


Опубликовано Onza в пн, 30/07/2007 - 07:37.

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


Опубликовано jason32 в пн, 30/07/2007 - 20:46.

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


Опубликовано gn@drupal.org в вс, 05/08/2007 - 15:29.

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


Опубликовано dows в вт, 11/09/2007 - 07:42.

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


Опубликовано Beduir в вт, 11/09/2007 - 08:38.

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


Опубликовано dows в вт, 11/09/2007 - 12:00.

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


Опубликовано Beduir в вт, 11/09/2007 - 12:49.

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

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

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


Опубликовано Stealth AIDS@dr... в вт, 27/11/2007 - 06: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 в пт, 14/11/2008 - 18:44.

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


Опубликовано Equ@drupal.org в вс, 16/11/2008 - 08:53.

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

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

Когда пытаюсь это сделать то получаю ссылку в виде
<a href="">Картинка</a>

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

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


Опубликовано pvb-d в вс, 16/11/2008 - 10:04.

кстати на основе этого есть модуль


Опубликовано Мари в пт, 18/06/2010 - 12:23.

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


Новое на сайте

Ссылки партнёров