在Drupal 7模板中自定义文件链接

时间:2012-03-19 15:41:05

标签: php drupal drupal-7 drupal-modules drupal-theming

我正在根据基础Drupal7安装中提供的文章类型为自定义内容类型创建自定义布局(node - article.tpl.php)。我添加的所有内容都是PDF文件的文件附件字段。

我希望在呈现的页面中有一个类似(“PDF版本”)的链接。我已经为该内容类型创建了一个模板文件,它工作正常。我已使用print render($content['field_pdf']);代码段显示文件链接。它显示为文件的名称,作为文件的链接,旁边有一个PDF图标。几乎完美!

我只需要将文件名更改为静态字符串“PDF Version”。

提前致谢!

2 个答案:

答案 0 :(得分: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');
    }
}

OR

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;
    }
}

我还没有测试过,希望它适合你。

穆罕默德

答案 1 :(得分: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>