Добрый день! Сейчас делаю сайт 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 и при формировании вида страницы (содержимого) вставить эту ссылку. Хех, не знаю понятно ли объяснил
Я только изучаю, просьба не пинать сильно - форум пролазил, чего-то не нашел по этой теме ничего. Может направите глаза куда надо
Комментарии
А модули зачем ?
Можно конечно и "ручками", но для начала думаю подойдет и модуль Print Friendly Pages
Взять можно здесь
спасибо! то, что нужно
хм... только успел об этом задуматься - а тут так к месту эта тема спасибо
Спасибо за наводку! Только возникли сложности - этот модуль добавляет "Версию для печати" для всех типов публикаций: для новостей и блогов, статей и статических страниц... Было бы классно все-таки настроить для кого вводится понятие "Версия для печати" или такое не возможно в принципе?
А вторая проблема - он абсолютно не реагирует на Pathauto. Т.е. версия для печати расположена по полному пути страницы... образуется ссылка типа www.мой_сайт.ru/node/60/print. Как-то лечится?
проблему с добавлением ссылки "Версия для печати" решил через редактирование модуля, т.е. открываете файл "print.module" и находите функцию print_link(). Вот код, который у меня получился (жирным, то, что добавил я):
$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 пока открыт
printable
print чего-то не корректно работает на пятой версии, на 4.7. работал без такой кучи ошибок. Ставил его пару месяцев назад уже на пятерку, пришлось удалить (здесь о такой фигне писали, но через поиск не находится). Сейчас снова поставил print, какие-то глюки плюс весь лог забит ошибкой:
Missing argument 3 for print_link() в файле /.../public_html/sites/all/modules/print/print.module на строке 58
То же самая ошибка была раньше для строки 47, это вроде пофиксили, теперь другое...
Print-friendly module для Друпала очень криво сделан - например, его колбасит от ссылок на внутренние закладки. Если порыться на drupal.org, можно найти патчики, которые решают эту проблему (http://drupal.org/node/60334), но, например, CCK он всё равно коверкает. Я так подозреваю, что на данный момент нормального Print-friendly модуля для Друпала просто нету :-(((.
а может просто настрочить тему для вывода буз лишних элементов, только контент и выводить её в зависимости от адреса - то есть node/555 - обычный сайт, а print/555 - уже версия для печати. Так кто-нить пробовал?
Обидно... я все-таки поставил Print-friendly - пока работает без сбоев... меня устраивает в общих чертах. Но многое ручками надо делать - например, у меня новости в отредактированном шаблоне выводятся... А Print-friendly выводит только тело сообщения, полностью игнорируя шаблон. Приходится шаблон править в двух местах... ;-(
Вообще можно в теме поправить, чтобы стили подключались не как all, а как screen. А для печати подключить стиль как print и в нем описать только необходимое оформление, ненужные блоки скрыть через display:none, тогда не нужные никакие модули и дополнительные темы.
собственно это я сначала и спрашивал но тогда не знал как сделать, а теперь подключил модуль... но конечно стиль как print подключить - это правильнее. Только разбираться с этим надо...
Я прямо в теме в файле 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.
Теперь для печати и экспорта CCK fields можно пользовать патч отсюда CCK support
$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;
}
Тема давно не обсуждалась, но я решил отписаться. Т.к. сам счас искал подобный модуль для своего сайта. И эту тему нашел через поиск сайта. Поэтому пишу тут для ребят, которые тоже будут искать такой модуль, ссылку на модуль, который использую я.
http://drupal.org/project/print
Пытаюсь разобраться с этим модулем (Printer, e-mail and PDF versions). В документации написано вроде, что можно пользоваться print_insert_link(), но у меня это фукнция ничего не вызывает. Пытаюсь вставть ссылку для печати в шаблон и сделать что-то подобное:
Когда пытаюсь это сделать то получаю ссылку в виде
В чем проблема?
UPD: отказался от модуля, сделал, как здесь.
кстати на основе этого есть модуль
скажите а как сделать так,что на печать шли не все данные со странички.(допустим чтоб изображения не шли на печать.)