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

Utilisation de cgsi_convert
#2

Salut Bess, je vais te donner (ainsi qu'aux autres) mon code perso pour faire tout çà :
Code :
[== Smarty ==]
/* ************************************************************************** *\
    ExaCore Framework - OptimizedContent
    Prerequis : CMSMS 1.11+
    Version :   13.02.05
    Auteur :    Jocelyn LUSSEAU (info@exacore.fr)
\* ************************************************************************** */

// Variables
$content = $params['content'] ;

// Traitement
$doc = new DOMDocument();
$content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");

@$doc->loadHTML($content);

foreach ($doc->getElementsByTagName('img') as $img) {
    if ($img->hasAttribute('src') AND substr($img->getAttribute('src'), 0, 7) == "uploads") {
        
        $img_source = $img->getAttribute('src');
        $img_width = $img->getAttribute('width');
        $img_height = $img->getAttribute('height');
        
        $smarty_data = "{CGSmartImage src=\"$img_source\" width=$img_width height=$img_height notag=true}";
        @ob_start();
        echo $smarty->display('string:'.$smarty_data) ;
        $_contents = @ob_get_contents();
        @ob_end_clean();

        $img->setAttribute("src", $_contents);
        
    }
}

// Recuperation du resultat du traitement
$result = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $doc->saveHTML()));

// Optimisation du traitement
$result = str_replace(chr(13),'',$result);

$result = html_entity_decode($result, ENT_QUOTES, "UTF-8");

// Ajout des espaces insecables
$result = str_replace(" :", "&nbsp;:", $result) ;
$result = str_replace(" !", "&nbsp;!", $result) ;
$result = str_replace(" ?", "&nbsp;?", $result) ;
$result = str_replace(" ;", "&nbsp;;", $result) ;
$result = str_replace(" %", "&nbsp;%", $result) ;
$result = str_replace(" €", "&nbsp;€", $result) ;
$result = str_replace(" »", "&nbsp;»", $result) ;
$result = str_replace("« ", "«&nbsp;", $result) ;

// Eval Smarty
@ob_start();
echo $smarty->display('string:'.$result) ;
$result = @ob_get_contents();
@ob_end_clean();

// Affichage du resultat
echo $result ;
Puis on appelle cette balise utilisateur de la sorte :
Code :
[== Indéfini ==]
{content assign="content"}
{optimizedcontent content=$content}

Ce petit bout de code « analyse » le contenu de la page, remplace l'appel des images par le module CGSmartImage et affiche donc les images à la taille indiquée dans TinyMCE.
En plus il rajoute des espaces insécables pour les points d'exclamation, interrogation, etc pour éviter qu'ils ne se retrouvent orphelins sur une ligne.

Le seul revers de la médaille c'est que dans le BackOffice les images chargées dans l'éditeur sont en taille réelle (mais ça n'impacte que l'éditeur du site).

Exacore - Freelance en communication
Répondre


Messages dans ce sujet

Atteindre :


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