2012-03-19 2 views
2

Я создаю собственный макет (node ​​- article.tpl.php) для настраиваемого типа контента на основе типа статьи, указанного в базовой установке Drupal7. Все, что я добавил, это поле прикрепления файлов для файла PDF.Настройка ссылки на файл в шаблоне Drupal7

Я хочу иметь ссылку на отображаемой странице, которая говорит что-то вроде («Версия PDF»). Я создал файл шаблона для этого типа контента, и он работает нормально. Я использовал фрагмент кода print render($content['field_pdf']); для отображения ссылки на файл. Он отображается как имя файла как ссылка на файл с пиктограммой PDF рядом с ним. Практически идеально!

Мне просто нужно изменить имя файла на статическую строку «Версия PDF».

Заранее благодарен!

ответ

2

Использование hook_node_view_alter()

function yourmodule_node_view_alter(&$build) 
{ 
    $node = $build['#node']; 
    if($node->type == "article" && isset($build['field_pdf']['#items'])) 
    { 
     $build['field_pdf']['#items'][0]['#file']->filename = t('PDF Version'); 
    } 
} 

ИЛИ

function yourmodule_node_view_alter(&$build) 
{ 
    $node = $build['#node']; 
    if($node->type == "article" && isset($build['field_pdf']['#items'])) 
    { 
     hide($build['field_pdf']); 
     $build['my_themed_link']['#markup'] = l(t('PDF Version'), file_build_uri($build['field_pdf']['#items'][0]['uri'])); 
     $build['my_themed_link']['#weight'] = 10; 
    } 
} 

Я не проверял, что все же, надеюсь, что он работает для вас.

Мухаммад

+0

Пропустили его * что * много !! (Начисление Получить Smart на мгновение.) –

+0

Немного изменил ваш первый бит кода. Вместо этого нужно было изменить это значение: '$ build ['field_pdf'] [0] ['# file'] -> filename = t ('PDF Version)' - Спасибо! –

+0

Ух, мой плохой :). Большое спасибо. –

0

Если у вас есть поле описания включен для поля загрузки PDF вы должны быть в состоянии получить доступ к этой переменной с print_r заявление.

вы могли бы написать что-то вроде этого:

<a href="<?php print render($content['field_pdf']['path'])?>"><?php print render($content['field_pdf']['description']);?></a> 

Этого код не является именно то, что Drupal использует, но вы можете захватить нужный формат массив с помощью кода ниже в файле node.tpl.php.

<pre><?php print_r($node); ?></pre> 
0

Я должен был сделать это следующим образом:

function yourmodule_node_view_alter(&$build) 
    { 
     $node = $build['#node']; 
     if(($node->type == "grantee") && isset($node->field_abstract_pdf)) 

     { 
      $build['field_abstract_pdf'][0]['#file']->filename = t('Download Project Abstract'); 

     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^