1

我有一个从 3 种不同内容类型中提取标题的视图。其中一种内容类型的标题应该链接到外部网站,另外两种类型的标题链接到 Drupal 站点内的节点。有没有办法可以设置标题字段以根据标题来自的内容类型以不同方式处理链接?

感谢下面的弗拉德回答!:)

这是我们在views-view-fields--news--block.tpl.php模板中使用的工作代码..

<?php if ($fields['type']->content == 'Event'): ?>
  <a href="<?php print $fields['path']->content; ?>"><?php print $fields['title']->content; ?></a>
<?php endif; ?>

<?php if ($fields['type']->content == 'PATF News'): ?>
  <a href="<?php print $fields['path']->content; ?>"><?php print $fields['title']->content; ?></a>
<?php endif; ?>

<?php if ($fields['type']->content == 'News Link'): ?>
//This link goes to _blank
 <a href="<?php print $fields['field_link']->content; ?>" target="_blank"><?php print $fields['title']->content; ?></a>
<?php endif; ?>
4

2 回答 2

1

Drupal 6

  1. 在您的视图设置中,添加Node: TypeFields
  2. Basic settings组中单击Theme: Information并单击Row style output
  3. 将所有内容复制Row style output到主题文件夹中的主题文件(应命名为views-view-fields--viewsname.tpl.phpviews-view-fields--viewsname--viewsnamw.tpl.php)。
  4. 修改输出,您应该检查内容类型并进行不同的输出。

德鲁巴 7

它与您可以Theme: Information在组中找到的差异非常相似,Advanced并且您必须添加Content: Type到您的Fields组中。

在您的views-view-fields--xxx--xxx.tpl.php文件中写入如下内容:

if ($fields['type']->content == 'Page') {
  // print title linking to node
  print $fields['title']->content;
}
if ($fields['type']->content == 'News') {
  // print title linking to other website
  print 'http://example.com/'. $fields['title']->content;
}

改进的代码

$link = $fields['path']->content;
$title = $fields['title']->content;
$options = array();

if ($fields['type']->content == 'News Link') {
  $link = $fields['field_link']->content;
  $options['attributes']['target'] = '_blank';
}

print l($title, $link, $options);
于 2012-07-12T22:43:18.817 回答
-1

我之前通过以下步骤完成了此操作:

  1. 包括内容标题内容链接和您的外部链接的字段。
  2. 从视图中隐藏内容标题和内容链接。
  3. 内容链接的重写结果应设置为内容标题的标记(均仍隐藏)。
  4. 不应将外部链接字段的任何结果行为设置为内容链接的令牌。

这会在外部链接出现时显示它,并且会在不存在时回退到链接到原始内容的标题。

于 2013-09-09T18:06:38.703 回答