Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Nouveau plugin : obfuscation automatique d'email
#7

Ok, j'ai encore du modifier car le plugin ne passait pas dans tous les types de contenus.
Voici la version qui fonctionne avec la 8193 :
Télécharger le plugin (à dézipper dans le répertoire /plugins de votre installation)
ou :
Code :
<?php
function smarty_prefilter_protect_email($tpl_output, &$template)
{
    $smarty = $template->smarty;
        $result = explode(':', $smarty->_current_file);
    $patterns = array ('#(<a).+(href="mailto:)([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4})"(.+)(</a>)#iU',
                   '#[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}#i');
    $replace = array ('$3', '{mailto address="$0" encode="javascript"}');
    if (count($result) > 1)
    {
      if (startswith($result[0],'tmp_')) $result[0] = 'template';
        switch ($result[0])
        {
        case 'stylesheet':
            break;
        case "content":
            $tpl_output = preg_replace($patterns, $replace, $tpl_output);
            break;
        case 'tpl_top':
        case 'tpl_body':
        case 'tpl_head':
        case "template":
            $tpl_output = preg_replace($patterns, $replace, $tpl_output);
            break;
        case "globalcontent":
            $tpl_output = preg_replace($patterns, $replace, $tpl_output);
            break;
        default:
            break;
        }
    }
    
    $tpl_output = preg_replace($patterns, $replace, $tpl_output);
    return $tpl_output;
}
?>
Il faut nommer ce plugin : prefilter.protect_email.php et le placer dans le répertoire plugins.
Vider le cache (je vide généralement en supprimant les fichiers de tmp/template_c).
Enjoy Smile

Fonctionne avec nom@domaine.com et <a ... href="mailto:nom@domaine.com" ...>...</a>.
Attention, vous devrez enlever les balises {mailto ...} qui seraient déjà dans votre site et les remplacer par nom@domaine.com.
Si vous souhaitez voir un texte autre que nom@domaine.com apparaître sur la page, il suffit de modifier le plugin à cette ligne :
Code :
$replace = array ('$3', '{mailto address="$0" encode="javascript"}');
en insérant le paramètre text="texte"
Ex : $replace = array ('$3', '{mailto address="$0" text="email" encode="javascript"}');
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)