переделываем модуль print

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

Аватар пользователя Максимыч Максимыч 29 января 2007 в 13:00

Здравствуйте.
Вот такая проблемка. Почти на всех своих сайтах использую модуль принт, поэтому для разнообразия хочется фразу "версия для печати" заменить какой-нибудь картинкой. Стал редактировать этот модуль print.module.php , но чот не получается. Вообщем строка 381 в этом модуле помоему отвечает за это. Кто в пхп разберается напишите что нужно изменить, что бы текстовую ссылку заменить картинкой.
вот строка:

---------
function theme_print_link($node) {
$attributes = array('title' => t('Display a printer friendly version of this page.'));
$links = l(t('версия для печати'), "node/$node->nid/print", $attributes);
return $links;
-----------------
Заранее всем спасибо1

Комментарии

Аватар пользователя Максимыч Максимыч 29 января 2007 в 13:17

По поводу фоновой картинки: мне кажется будет сложновато, ведь так или иначе, все равно прийдется оперировать модуль print, потомучто ссылка то в нем прописана. Поэтому для людей знающих пхп проще будет подкорректировать только один файл. Хотя...) А вот по второму методу ничего не могу сказать потомучто не понял.

Аватар пользователя Shedko Shedko 30 января 2007 в 0:44

А можно просто вставить такой код:

в page.tpl.php где хотите выводить эту строчку/картинку:

<?php if (is_numeric($nid)) { ?>
<?php if (!is_forum()) { ?>
<?php if (!is_user_page()) { ?>
        <?php print get_print_link($nid) ?>
<?php } ?><?php } ?><?php } ?>

в template.php вставляем функцию

function is_forum() {
if (arg(0) == 'forum') {
return TRUE;
}
if (arg(0) == 'node') {
if (arg(1) == 'add') {
if (arg(2) == 'forum') {
return TRUE;
}
}
}
if (arg(0) == 'node' && ctype_digit(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'forum') {
return TRUE;
}
}
return FALSE;
}
function is_user_page() {
if (arg(0) == 'user') {
return TRUE;
}
return FALSE;
}

Эти две функции предотвращают вывод ссылки на версию для печати на тех страницах, где модуль печати не работает.
Это контейнеры форумов, некоторые страницы профилей и д.р.

И наконец, в template.php втавляем функцию, которая и будет формировать ссылку для печати

function get_print_link($nid) {
$linkp = base_path() . 'node/' . $nid . '/print' ;
$out = '' . t('Printer-Friendly Version') . '' ;
return $out;
}

а вот здесь вы уже можете оформить ее как вам захочется.

И не надо править модуль print.

Аватар пользователя nilard@drupal.org nilard@drupal.org 30 января 2007 в 13:49

Кошмар какой, ничего себе просто!
Нужно лишь в template.php добавить функцию типа

function phptemplate_print_link($node) {

  $attributes = array('title' => t('Display a printer friendly version of this page.'));          
  $image = theme('image', file_create_path('print.gif')); // файл print.gif лежит в каталоге files
  $links = l($image, "node/$node->nid/print", $attributes, NULL, NULL, FALSE, TRUE);              
  return $links;

}

Аватар пользователя Shedko Shedko 31 января 2007 в 3:35

Может и кошмар, но зато более гибко, если модуль print проставляет свои ссылки в куче с другими, то таким способом можно вставить эту ссылку там где хочется мне а не модулю. Например сверху и снизу страницы.

А вообще, согласен. Перемудрил я, вопрос то был немного о другом Smile

Аватар пользователя Shedko Shedko 6 февраля 2007 в 4:25

Не знаю как другие, а я просто в настройках модуля отключаю "показ ссылки" (или как там его).

Затем в page.php уже сам вызываю функцию phptemplate_print_link($node) {, а точнее немного измененную get_print_link($nid) {

например,

<?php if (is_numeric($nid)) { ?>;
<?php if ($nid==12) { ?>
<php print get_print_link($nid) ?>;
<?php } ?>;

Будет выводить эту ссылку только на 12 ноде, также поискав на этом форуме как определяется приндлежность ноды к категории, можно привязать вывод ссылки и к определенной категории.

Аватар пользователя dbzer0 dbzer0 7 февраля 2007 в 17:32

А не легче в локализации изменить фразу "версия для печати" на
<a href="blabla"><img src="blabla" \></a>
или же закомменть строку с $links в модуле print, а затем в теме где-нить (как предложил nilard@drupal.org) добавь к линкс нужный тебе код.

$links .= '<a href="blabla"><img src="blabla" \></a>'

а править написанные модули - дурной тон.