I have some links I need to add target="_blank"
and rel="noFollow noReferrer"
. I do not have acess to core code so the only way I managed to do this is with jquery.
My HTML is.
<div class="tLink">
<p>
<a href="http://linkhere.com" title="tLink title here">tLink</a>
</p>
</div>
My jQuery code:
$( '.tLink p a' ).attr( 'target', '_blank' );
$( '.tLink p a' ).attr( 'rel', 'noFollow noReferrer' );
However this will not work if the end user does not have javascript enabled in the browser. So, its there any other way to do this with php? Or in a last case inside the template.php
file of the drupal theme?
Thanks
For 99% of cases you'll be able to simply override theme_link()
in template.php:
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>';
}
I say 99% because the premise relies on every module in your installation 'behaving' itself, and using the l()
function to prepare links. If any don't, you'll probably need to patch each module separately.
Also bear in mind that the above code will nuke any existing target/rel attributes (not append to them), so your logic might need to get a bit more complicated to compensate.