在Drupal7模板中自定义文件链接


Customizing file link in Drupal7 template

我正在为基于Drupal7基本安装中提供的article类型的自定义内容类型创建一个自定义布局(node--article.tpl.php)。我添加的只是一个PDF文件的文件附件字段。

我想在渲染页面中有一个链接,上面写着类似的内容("PDF版本")。我已经为该内容类型创建了一个模板文件,它运行良好。我使用了print render($content['field_pdf']);代码片段来显示文件链接。它显示为文件名,作为文件的链接,旁边有一个PDF图标。几乎完美!

我只需要将文件名更改为静态字符串"PDF版本"。

提前感谢!

使用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

如果您为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>