Cela fait quelques jours que je me tue à essayer que les liens disponibles dans mon blog (Dotclear) s'ouvrent dans un nouvel onglet et je me demande si, ici, quelqu'un pourrait me donner un coup de main car personne n'a visiblement l'inspiration sur leur forum.
Si vous regardez sur mon blog, les liens qui se situent dans la barre orange en haut de l'écran sont appelès par cette fonction:
<?php dcBlogroll::linkList(); ?>
qui elle même est, je pense, défini comme ceci:
class linkSwitcher {
/**
@function linkList
Cette fonction affiche la liste des liens, soit comme la méthode dcBlogRoll::linkList()
de DotClear ou sous forme de liste déroulante, ou les deux.
@param mixed link_select Liens à afficher en tant que liste déroulante.
Ce paramètre peut être :
+ un tableau (listant les url des liens)
+ une expression régulière (basée sur les urls des liens)
ssi $regex_mode = true
+ la valeur 'ALL' pour tous les liens
@param boolean regex_mode Active ou non le mode regex (true|false)
@param string links_block Mise en forme du bloc "Liens" avec les liens en dehors et
dedans la liste déroulante (%1$s correspond aux liens en affichage
normal et %2$d correspond à la liste déroulante
@param string category Mise en forme d'une catégorie (cf dcBlogRoll::linkList())
@param string block Mise en forme de la liste des liens non compris dans la
liste déroulante
@param string item Mise en forme des éléments de la liste des liens non compris
dans la liste déroulante
*/
function linkList( $links_select='', $regex_mode=false,
$links_block='%1$s<br />%2$s',
$category='<h3>%s</h3>',
$block='<ul>%s</ul>', $item='<li>%s</li>') {
global $con, $blog;
$req = 'SELECT link_id, label, href, title, lang, rel '.
'FROM '.$blog->t_link.' '.
'ORDER BY position';
if ( ($rs_link = $con->select($req)) !== false ) {
$list = '<option value="" >'; //la première valeur
$liens = '';
$cat = '';
# var pour savoir si on est dans une catégorie
$in_cat = false;
# vars pour savoir si une catégorie est vide ou non dans la liste ou l'affichage
# normal. Si elle est vide, on ne l'afiche pas
$empty_cat_in_list = true;
$empty_cat_in_normal = true;
while (!$rs_link->EOF()) {
$id = $rs_link->f('link_id');
$label = $rs_link->f('label');
$href = $rs_link->f('href');
$title = $rs_link->f('title');
$lang = $rs_link->f('lang');
$rel = $rs_link->f('rel');
if( !$label && !$href ) {
# c'est une catégorie
if($in_cat) {
if(!$empty_cat_in_list) $list.='</optgroup>'; // on ferme la catégorie précédente
$empty_cat_in_list = true;
$empty_cat_in_normal = true;
}
$cat = $title;
$in_cat = true;
}
else {
if ( $links_select === 'ALL' ||
( is_array($links_select) && in_array($href, $links_select) ) ||
( $regex_mode && ereg($links_select,$href) )
) {
if($in_cat && $empty_cat_in_list) {
$list.= '<optgroup label="'.$cat.'">';
$empty_cat_in_list = false;
}
$list.='<option id="lS_option_'.$id.'" value="'.$id.'" '.
'title="'.htmlspecialchars($title).'" lang="'.htmlspecialchars($lang).'" >'.$label;
}
else {
if($in_cat && $empty_cat_in_normal) {
$liens .= sprintf($category, $cat);
$empty_cat_in_normal = false;
}
$lien = '<a href="'.htmlspecialchars($href).'"'.
((!$lang) ? '' : ' hreflang="'.htmlspecialchars($lang).'"').
((!$title) ? '' : ' title="'.htmlspecialchars($title).'"').
((!$rel) ? '' : ' rel="'.htmlspecialchars($rel).'"').
' onclick="window.open(this.href);return false;">'.htmlspecialchars($label).'</a>';
$liens .= sprintf($item,$lien);
}
}
$rs_link->moveNext();
}
if($in_cat && !$empty_cat_in_list) $list.='</optgroup>';
$list = '<form id="lS_form" method="post" action="'.dc_app_url.'/ecrire/tools/linkSwitcher/redirect.php" >'."\n".
'<select id="lS_select" name="link" size="1" onchange="this.form.submit();" >'."\n".
$list."\n".
'</select>'."\n".
'<input id="lS_submit" type="submit" value="go">'."\n".
'</form>'."\n";
$liens = sprintf($block, $liens);
printf($links_block,$liens,$list);
}
}
Donc comme je le disais, j'aimerai que mon lien url s'ouvre sur une nouvelle fenêtre mais je ne sais pas comment m'y prendre ... puis-je utiliser la fonction tel quel ou créer une fonction JS mais comment les faire interagir ?Merci d'avance pour le coup de main