Вы здесь

об использовании модуля print friendly pages

Здравствуйте !
После установке модуля print friendly pages в содержимое узлов добавляется ссылка [версия для печати], позволяющая распечатать содержимое узла. Всё работает, только хотелось добавить маленькое изображение принтера. Оказалось, такое решение существует. На drupal.org предлагается исходный фрагмент текста модуля print.module:
function theme_print_link($node) {
return array(
'title' => t('Printer friendly version'),
'href' => "node/$node->nid/print",
'attributes' => array('title' => t('Display a printer friendly version of this page.')),
);
) # это последние строки файла print.module

заменить на:
return array(
'title' => ''.t('Printer friendly version').'',
'href' => "node/$node->nid/print",
'attributes' => array('title' => t('Display a printer friendly version of this page.')),
'html' => true,
);

Для drupal 5.1 & drupal 5.2 это работает. Но вот как сделать эту ссылку на печать не только в конце содержимого узла, но и в начале, - не знаю.

Комментарии

Изображение пользователя drupal.org.ru

Если у вас ссылки только после содержания, то наверное в node.tpl.php что-то вроде такого кода:

<div class="content">
<?php print $content?>
</div>

<?php print $links ?>

Ссылки выводятся переменной $links, можно в node.tpl.php попробовать использовать такую запись:

<?php if ($page != 0): ?>
<?php print $links ?>
<?php endif; ?>

<div class="content">
<?php print $content?>
</div>

<?php print $links ?>

Переменная $page будет определять обзорная эта страница или документ. На обзорных страницах ссылки до и после содержания дублироваться не будут, а если открыт документ, то они будут и вверху и внизу.

Изображение пользователя Комментатор

Здравствуйте !
Спасибо за помощь. Но:
1. файл node.tpl.php присутствует в стандартных темах garland, blumarine, pushbutton. При этом, в папке themes существует папка engines. В ней существует файл phptemplate\node.tpl.php. Я использую тему itheme, где файла node.tpl.php нет. Означает ли это, что в данном случае требуется корректировать файл engines\phptemplate\node.tpl.php ?
При этом, в папке sites\all\modules\print существует файл print.node.tpl.php. Или, может быть, корректировать его: print.node.tpl.php ?

2. В первом посте о редактировании модуля print.module ошибка. Я забыл, что html-тэги фильтруются. Фрагмент замены выглядит так:
return array(
'title' =>
'&lt img src="files/letters/print.gif" alt="'.t('Printer friendly version').'" /&gt',
'href' => "node/$node->nid/print",
'attributes' => array('title' => t('Display a printer friendly version of this page.')),
'html' => true,
);
Ещё раз спасибо. Кажется, я лучше стал понимать (а было нуль) использование $links.

Изображение пользователя Комментатор

Ура, заработало (как говорил Матроскин). Что-то с этим drupal я сверх осторожен. Вместо того, чтобы просто поробовать файл engines\phptemplate\node.tpl.php и print.node.tpl.php начал спрашивать, людей отвлекать. Я вставил указанный Вами код:
&lt?php if ($page != 0): ? &gt
&lt ?php print $links ? &gt
&lt ?php endif; ? &gt
в файл engines\phptemplate\node.tpl.php и получил ожидаемое. Однако, что означает термин обзорная страница ($page = 0) ?

Изображение пользователя drupal.org.ru

Обзорными я называю страницы с адресами taxonomy/term/x. Их как-то ещё называют… но не могу вспомнить :)

Изображение пользователя Комментатор

Необходимиое дополнение. При использовании конструкции img src="files/letters/print.gif" на некоторых узлах файл print.gif не виден. Печатается только текст параметра alt. Если сделать вот так, то изображение доступно с любого узла:
function theme_print_link($node) {
$pathimage = base_path().'files/letters/print.gif';
return array(
'title' => '&lt img src="'.$pathimage.'" align="right" alt="'.t('Printer friendly version').'" /&gt',
'href' => "node/$node->nid/print",
'attributes' => array('title' => t('Display a printer friendly version of this page.')),
'html' => true,
);
}

Изображение пользователя Комментатор

Хочу поделиться. Спорные рассуждения.
1. Для некоторых данных сайта требуется вывод на печать. Это свойство - возможность печати - не зависит от типа узла, и вообще зависит только от администратора.
2. В стандартном модуле print friendly pages это свойство устанавливается либо для всех узлов, либо запрещается для всех.
3. Следовательно, если мы хотим управлять ссылкой для печати (pfp-links) для каждого узла, то это свойство нужно хранить в какой-либо таблице. Например, в node_print. Возможная структура:
CREATE TABLE {node_print} (
nid int(10) unsigned NOT NULL default '0',
enable_pfp_top int(1) unsigned not null default '0',
enable_pfp_bottom int(1) unsigned not null default '0',
PRIMARY KEY (nid)
);
4. Наконец, в файле themes\engines\phptemplate\node.tpl.php до и после блока печати содержимого [print $content] с пом. запроса к таблице node_print определять необходимость печати верхней и нижней ссылок pfp.
5. При создании материала значения полей enable_pfp_top и enable_pfp_bottom можно включить в блок [формат ввода].

И насколько всё это приемлемо ?

Изображение пользователя drupal.org.ru

Можно зайти на страницу модуля Print Friendly Pages и на этой странице нажать ссылку Support/View pending feature requests. Там есть патчи, есть решения для типов, решение с добавлением иконки. Посмотрите как это решали другие люди до вас.

Изображение пользователя Libra

Добавить иконку на любую ссылку достаточно просто. Для этого надо добавить несколько строк в style.css вашей темы. Например, для ссылки [версия для печати] добавляем:

.print a
{
background: url('icons/print.gif') no-repeat;
padding-bottom: 5px;
padding-left: 20px;
}

.print-page a
{
background: url('icons/print.gif') no-repeat;
padding-bottom: 5px;
padding-left: 20px;
}

Ну и добавить в поддиректорию icons вашей темы нужную вам иконку print.gif.