添加目标&没有javascript的rel

时间:2014-06-24 09:18:05

标签: php jquery drupal target rel

我需要添加target="_blank"rel="noFollow noReferrer"的一些链接。我没有访问核心代码,所以我设法做到这一点的唯一方法是使用jquery。

我的HTML是。

<div class="tLink">
  <p>
    <a href="http://linkhere.com" title="tLink title here">tLink</a>
  </p>
</div>

我的jQuery代码:

$( '.tLink p a' ).attr( 'target', '_blank' );
$( '.tLink p a' ).attr( 'rel', 'noFollow noReferrer' );

但是,如果最终用户未在浏览器中启用javascript,则无法使用此功能。所以,还有其他任何方式用PHP做到这一点?或者在drupal主题的template.php文件中的最后一个案例中?

由于

1 个答案:

答案 0 :(得分:0)

对于99%的案例,您只能在template.php中覆盖theme_link()

function MYTHEME_link($variables) {
  $variables['options']['attributes']['target'] = '_blank';
  $variables['options']['attributes']['rel'] = 'noFollow noReferrer';

  return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>';
}

我说99%是因为前提依赖于安装中的每个模块“行为”本身,并使用l()函数来准备链接。如果没有,您可能需要单独修补每个模块。

另外请记住,上面的代码将会破坏任何现有的目标/ rel属性(不附加到它们),因此您的逻辑可能需要更复杂一些才能进行补偿。