Changeset 70878 in spip-zone for _plugins_/seo


Ignore:
Timestamp:
Mar 18, 2013, 5:20:25 PM (7 years ago)
Author:
cedric@…
Message:

Le pipeline #INSERT_HEAD est fondamentalement buggy car il ne passe aucun contexte et on y insere du contenu qui depend du #ENV de la page (globale $contexte). Cela veut donc dire qu'on a toutes les chances de mettre en cache des choses qui dependent du #ENV de la page, alors que le cache du squelette lui meme n'en depend pas.
On supprime l'insertion par ce pipe donc.
A la place, affichage_final fait le job, et on va essayer de faire un peu mieux quand on peut (squelette connu)

prefixage de toutes les fonctions internes par seo_

Location:
_plugins_/seo/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/seo/trunk/inclure/seo-head.html

    r70749 r70878  
    1 [(#ENV*{head}|seo_remplace_metas{#ENV*{contexte}})]
     1[(#ENV*{head}|seo_insere_remplace_metas{#ENV*{contexte}})]
  • _plugins_/seo/trunk/paquet.xml

    r70733 r70878  
    2222        <pipeline nom="declarer_tables_interfaces" inclure="base/seo_tables.php" />
    2323
    24         <pipeline nom="insert_head" action="insert_head" inclure="seo_pipelines.php" />
    2524        <pipeline nom="affichage_final" action="affichage_final" inclure="seo_pipelines.php" />
    2625        <pipeline nom="autoriser" inclure="seo_pipelines.php" />
  • _plugins_/seo/trunk/seo_fonctions.php

    r70749 r70878  
    1313 * @return string
    1414 */
    15 function seo_remplace_metas($head,$contexte){
    16         $meta_tags = generer_meta_tags(null,$contexte);
     15function seo_insere_remplace_metas($head,$contexte){
    1716        $append = "";
    18 
    19         foreach ($meta_tags as $key => $meta){
    20                 $preg = '';
    21                 /**
    22                  * Si le tag est <title>
    23                  */
    24                 if ($key=='title')
    25                         $preg = "/(<{$key}[^>]*>.*<\/{$key}[^>]*>)/Uims";
    26                 /**
    27                  * Le tag est une <meta>
    28                  */
    29                 else
    30                         $preg = "/(<meta\s+name=['\"]{$key}['\"][^>]*>)/Uims";
    31 
    32                 // remplacer la meta si on la trouve
    33                 if (preg_match($preg,$head,$match)){
    34                         $head = str_replace($match[0],$meta,$head);
     17        include_spip('inc/config');
     18        $config = lire_config('seo/');
     19        $is_sommaire = (
     20          (isset($contexte['type-page']) AND $contexte['type-page']=='sommaire')
     21          OR (!isset($contexte['id_article']) AND !isset($contexte['id_rubrique']))
     22        );
     23
     24        if (isset($config['meta_tags']['activate']) AND $config['meta_tags']['activate']=='yes'){
     25                /* d'abord les meta tags */
     26                $meta_tags = seo_generer_meta_tags(null,$contexte);
     27
     28                foreach ($meta_tags as $key => $meta){
     29                        $preg = '';
     30                        /**
     31                         * Si le tag est <title>
     32                         */
     33                        if ($key=='title')
     34                                $preg = "/(<{$key}[^>]*>.*<\/{$key}[^>]*>)/Uims";
     35                        /**
     36                         * Le tag est une <meta>
     37                         */
     38                        else
     39                                $preg = "/(<meta\s+name=['\"]{$key}['\"][^>]*>)/Uims";
     40
     41                        // remplacer la meta si on la trouve
     42                        if (preg_match($preg,$head,$match)){
     43                                $head = str_replace($match[0],$meta,$head);
     44                        }
     45                        else
     46                                $append .= "$meta\n";
    3547                }
    36                 else
    37                         $append .= "$meta\n";
     48        }
     49        /* META GOOGLE WEBMASTER TOOLS */
     50        if (isset($config['webmaster_tools'])
     51          AND $config['webmaster_tools']['activate']=='yes'
     52          AND $is_sommaire){
     53                $append .= seo_generer_webmaster_tools();
     54        }
     55
     56        if (isset($config['bing'])
     57          AND $config['bing']['activate']=='yes'
     58          AND $is_sommaire){
     59                $append .= seo_generer_bing();
     60        }
     61
     62        /* CANONICAL URL */
     63        if (isset($config['canonical_url'])
     64          AND $config['canonical_url']['activate']=='yes'
     65          AND $is_sommaire){
     66                $append .= seo_generer_urls_canoniques();
     67        }
     68
     69        /* GOOGLE ANALYTICS */
     70        if (isset($config['analytics'])
     71                AND $config['analytics']['activate']=='yes'
     72          AND $is_sommaire){
     73                $append .= seo_generer_google_analytics();
     74        }
     75
     76        /* ALEXA */
     77        if (isset($config['alexa'])
     78          AND $config['alexa']['activate']=='yes'
     79          AND $is_sommaire){
     80                $append .= seo_generer_alexa();
    3881        }
    3982
     
    5396 * @return string $flux
    5497 */
    55 function generer_urls_canoniques(){
     98function seo_generer_urls_canoniques(){
    5699        include_spip('balise/url_');
    57100
     
    83126 * @return string $flux
    84127 */
    85 function generer_google_analytics(){
     128function seo_generer_google_analytics(){
    86129        include_spip('inc/config');
    87130
     
    113156 * @return string $flux
    114157 */
    115 function calculer_meta_tags($contexte=null){
     158function seo_calculer_meta_tags($contexte=null){
    116159        include_spip('inc/config');
    117160        $config = lire_config('seo/');
     
    190233 * @return array
    191234 */
    192 function generer_meta_tags($meta_tags = null, $contexte = null){
     235function seo_generer_meta_tags($meta_tags = null, $contexte = null){
    193236        $tags = array();
    194237        //Set meta list if not provided
    195238        if (!is_array($meta_tags))
    196                 $meta_tags = calculer_meta_tags($contexte);
     239                $meta_tags = seo_calculer_meta_tags($contexte);
    197240
    198241        // Print the result on the page
     
    212255 * @return string|bool
    213256 */
    214 function generer_meta_brute($nom){
     257function seo_generer_meta_brute($nom){
    215258        include_spip('inc/config');
    216259        return lire_config("seo/meta_tags/tag/$nom","");
     
    221264 * @return string $flux
    222265 */
    223 function generer_webmaster_tools(){
     266function seo_generer_webmaster_tools(){
    224267        include_spip('inc/config');
    225268        if ($id=lire_config('seo/webmaster_tools/id'))
     
    232275 * @return string $flux
    233276 */
    234 function generer_bing(){
     277function seo_generer_bing(){
    235278        include_spip('inc/config');
    236279        if ($id=lire_config('seo/bing/id'))
     
    242285 * @return string $flux
    243286 */
    244 function generer_alexa(){
     287function seo_generer_alexa(){
    245288        include_spip('inc/config');
    246289        if ($id=lire_config('seo/alexa/id'))
     
    253296 */
    254297function balise_SEO_URL($p){
    255         $p->code = "generer_urls_canoniques()";
     298        $p->code = "seo_generer_urls_canoniques()";
    256299        $p->interdire_scripts = false;
    257300        return $p;
     
    263306 */
    264307function balise_SEO_GA($p){
    265         $p->code = "generer_google_analytics()";
     308        $p->code = "seo_generer_google_analytics()";
    266309        $p->interdire_scripts = false;
    267310        return $p;
     
    274317 */
    275318function balise_SEO_META_TAGS($p){
    276         $p->code = "generer_meta_tags()";
     319        $p->code = "seo_generer_meta_tags(null,\$Pile[0])";
    277320        $p->interdire_scripts = false;
    278321        return $p;
     
    285328function balise_SEO_META_BRUTE($p){
    286329        $_nom = str_replace("'", "", interprete_argument_balise(1, $p));
    287         $p->code = "table_valeur(calculer_meta_tags(),$_nom,'')";
     330        $p->code = "table_valeur(seo_calculer_meta_tags(),$_nom,'')";
    288331        $p->interdire_scripts = false;
    289332        return $p;
     
    295338 */
    296339function balise_SEO_GWT($p){
    297         $p->code = "generer_webmaster_tools()";
    298         $p->interdire_scripts = false;
    299         return $p;
    300 }
    301 
     340        $p->code = "seo_generer_webmaster_tools()";
     341        $p->interdire_scripts = false;
     342        return $p;
     343}
     344
  • _plugins_/seo/trunk/seo_pipelines.php

    r70749 r70878  
    5353        return $flux;
    5454}
    55 
    56 
    57 /**
    58  * Inserer les meta dans le head
    59  *
    60  * @param string $flux
    61  * @return string
    62  */
    63 function seo_insert_head($flux){
    64         /* CONFIG */
    65         $config = unserialize($GLOBALS['meta']['seo']);
    66         if (isset($config['insert_head']) && $config['insert_head']['activate']=='yes'){
    67                 $contexte = $GLOBALS['contexte'];
    68                 unset($contexte['lang']);
    69                 unset($contexte['date']);
    70                 unset($contexte['date_default']);
    71                 unset($contexte['date_redac']);
    72                 unset($contexte['date_redac_default']);
    73                 unset($contexte['lang']);
    74                 if (count($contexte)==0){
    75                         $objet = 'sommaire';
    76                 } elseif (isset($contexte['id_article'])) {
    77                         $id_objet = $contexte['id_article'];
    78                         $objet = 'article';
    79                 } elseif (isset($contexte['id_rubrique'])) {
    80                         $id_objet = $contexte['id_rubrique'];
    81                         $objet = 'rubrique';
    82                 }
    83                 /* META TAGS */
    84                 if (isset($config['meta_tags']) && $config['meta_tags']['activate']=='yes'){
    85                         if (!defined('_SEO_FORCER_SQUELETTE')){
    86                                 $meta_tags = calculer_meta_tags();
    87                                 $flux .= implode("\n",generer_meta_tags($meta_tags));
    88                         }
    89                 }
    90                 /* META GOOGLE WEBMASTER TOOLS */
    91                 if (isset($config['webmaster_tools']) && $config['webmaster_tools']['activate']=='yes' && $objet=='sommaire'){
    92                         $flux .= generer_webmaster_tools();
    93                 }
    94 
    95                 if (isset($config['bing']) && $config['bing']['activate']=='yes' && $objet=='sommaire'){
    96                         $flux .= generer_bing();
    97                 }
    98 
    99                 /* CANONICAL URL */
    100                 if (isset($config['canonical_url']) && $config['canonical_url']['activate']=='yes'){
    101                         $flux .= generer_urls_canoniques();
    102                 }
    103 
    104                 /* GOOGLE ANALYTICS */
    105                 if (isset($config['analytics']) && $config['analytics']['activate']=='yes'){
    106                         $flux .= generer_google_analytics();
    107                 }
    108 
    109                 /* ALEXA */
    110                 if (isset($config['alexa']) && $config['alexa']['activate']=='yes' && $objet=='sommaire'){
    111                         $flux .= generer_alexa();
    112                 }
    113         }
    114 
    115         return $flux;
    116 }
    117 
Note: See TracChangeset for help on using the changeset viewer.