为外部链接模块设置链接目标= _blank

时间:2011-03-25 13:31:47

标签: drupal

Drupal中是否有任何模块可以为所有外部站点设置target =“_ blank”

4 个答案:

答案 0 :(得分:6)

这里有一个模块,我想在javascript中执行它:http://drupal.org/project/extlink

我写了一个类似的模块,它与Drupal输入过滤器做同样的事情。它没有在任何地方发布,但我很乐意分享它,如果有任何理由为什么javascript不适合你。

答案 1 :(得分:2)

不确定是否有Drupal模块,但可以使用jquery轻松完成:

$("a[href^='http:']").attr('target', '_blank');

答案 2 :(得分:0)

Add some additional attributes for the menu link
Module name is: https://drupal.org/project/menu_attributes

答案 3 :(得分:0)

使用模板覆盖格式。例如field - field-external-link - article.tpl.php,用于文章类型和字段field-external-link。

请参阅$ link_rendered。

<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
  <?php foreach ($items as $delta => $item): ?>
    <?php
     // Add target="_blank"
     $link_rendered =  preg_replace('/^<a/i', '<a target="_blank"', render($item));
    ?>
   <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print $link_rendered; ?></div>
   <?php endforeach; ?>
 </div>

打破两个规则a)用正则表达式编辑xhtml和b)在模板而不是钩子中编辑。可以更改为模块和挂钩调用,但不会增加可重用性。