Настройка ссылки на файл в шаблоне Drupal7 - PullRequest
2 голосов
/ 19 марта 2012

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

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

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

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Использовать 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;
    }
}

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

Muhammad

0 голосов
/ 20 марта 2012

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

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

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

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

<code><pre><?php print_r($node); ?>
...