Changeset 70733 in spip-zone for _plugins_/seo


Ignore:
Timestamp:
Mar 14, 2013, 12:59:01 PM (7 years ago)
Author:
cedric@…
Message:

performance : regrouper les pipelines en 2 fichiers pour eviter trop de morcellement du code et de multiples inclusions

Location:
_plugins_/seo/trunk
Files:
3 deleted
2 edited
2 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/seo/trunk/base/seo_tables.php

    r70697 r70733  
    11<?php
     2/**
     3 * BouncingOrange SPIP SEO plugin
     4 *
     5 * @category   SEO
     6 * @package    SPIP_SEO
     7 * @author     Pierre ROUSSET (p.rousset@gmail.com)
     8 * @copyright  Copyright (c) 2009 BouncingOrange (http://www.bouncingorange.com)
     9 * @license    http://opensource.org/licenses/gpl-2.0.php  General Public License (GPL 2.0)
     10 */
    211
    3 // Sécurité
    412if (!defined("_ECRIRE_INC_VERSION")) return;
    513
  • _plugins_/seo/trunk/paquet.xml

    r70706 r70733  
    2121        <pipeline nom="declarer_tables_principales" inclure="base/seo_tables.php" />
    2222        <pipeline nom="declarer_tables_interfaces" inclure="base/seo_tables.php" />
    23         <pipeline nom="insert_head" action="insert_head" inclure="pipelines/seo_insert_head.php" />
    24         <pipeline nom="affichage_final" action="affichage_final" inclure="pipelines/seo_affichage_final.php" />
    25         <pipeline nom="affiche_milieu" action="affiche_milieu" inclure="pipelines/seo_affiche_milieu.php" />
    26         <pipeline nom="ajouter_onglets" action="ajouter_onglets" inclure="pipelines/seo_ajouter_onglets.php" />
    27         <pipeline nom="autoriser" inclure="pipelines/seo_autoriser.php" />
     23
     24        <pipeline nom="insert_head" action="insert_head" inclure="seo_pipelines.php" />
     25        <pipeline nom="affichage_final" action="affichage_final" inclure="seo_pipelines.php" />
     26        <pipeline nom="autoriser" inclure="seo_pipelines.php" />
     27
     28        <pipeline nom="affiche_milieu" action="affiche_milieu" inclure="seo_pipelines_ecrire.php" />
     29        <pipeline nom="ajouter_onglets" action="ajouter_onglets" inclure="seo_pipelines_ecrire.php" />
    2830
    2931        <menu nom="seo" titre="seo:seo" parent="menu_configuration" icone="images/seo-16.png" action="configurer_seo" />
  • _plugins_/seo/trunk/seo_pipelines.php

    r70705 r70733  
    11<?php
     2/**
     3 * BouncingOrange SPIP SEO plugin
     4 *
     5 * @category   SEO
     6 * @package    SPIP_SEO
     7 * @author     Pierre ROUSSET (p.rousset@gmail.com)
     8 * @copyright  Copyright (c) 2009 BouncingOrange (http://www.bouncingorange.com)
     9 * @license    http://opensource.org/licenses/gpl-2.0.php  General Public License (GPL 2.0)
     10 */
    211
    312if (!defined("_ECRIRE_INC_VERSION")) return;
     
    1322}
    1423
    15 ?>
     24
     25/**
     26 * Insertion dans le pipeline affichage_final (SPIP)
     27 * Remplacement des métas et title dans le <head>
     28 * Remplace les métas et title du squelette et celles insérées via insert_head également
     29 *
     30 * @param string $flux
     31 *     Le contenu de la page
     32 * @return string
     33 *     Le contenu de la page modifié
     34 */
     35function seo_affichage_final($flux){
     36        preg_match('/<head>(.*)<\/head>/mis', $flux, $head);
     37        $head = isset($head[1]) ? $head[1] : false;
     38
     39        /**
     40         * On n'agit que si on a un head
     41         * sinon c'est tout et n'importe quoi
     42         */
     43        if ($head){
     44                /**
     45                 * Pour lire_config
     46                 */
     47                include_spip('inc/config');
     48
     49                $forcer_squelette = lire_config('seo/forcer_squelette', 'no');
     50                if ($forcer_squelette!='yes')
     51                        return $flux;
     52
     53                include_spip('seo_fonctions');
     54
     55                $meta_tags = calculer_meta_tags();
     56
     57                foreach ($meta_tags as $key => $value){
     58                        $meta = generer_meta_tags(array($key => $value));
     59                        $flux_meta = '';
     60                        /**
     61                         * Si le tag est <title>
     62                         */
     63                        if ($key=='title')
     64                                $flux_meta = preg_replace("/(<\s*$key.*?>.*?<\/\s*$key.*?>)/mi", $meta, $flux, 1);
     65                        /**
     66                         * Le tag est une <meta>
     67                         */
     68                        else
     69                                $flux_meta = preg_replace("/(<\s*meta\s*name=\"$key\"\s*content=\".*?\".*?>)/mi", $meta, $flux, 1);
     70
     71                        /**
     72                         * Si $flux == $flux_meta
     73                         * C'est que _SEO_FORCER_SQUELETTE est placé
     74                         * On ajoute les metas juste avant </head>
     75                         */
     76                        if ($flux==$flux_meta)
     77                                $flux_meta = str_replace('</head>', "\n" . $meta . "</head>", $flux);
     78
     79                        $flux = $flux_meta;
     80                }
     81        }
     82        return $flux;
     83}
     84
     85
     86/**
     87 * Inserer les meta dans le head
     88 *
     89 * @param string $flux
     90 * @return string
     91 */
     92function seo_insert_head($flux){
     93        /* CONFIG */
     94        $config = unserialize($GLOBALS['meta']['seo']);
     95        if (isset($config['insert_head']) && $config['insert_head']['activate']=='yes'){
     96                $contexte = $GLOBALS['contexte'];
     97                unset($contexte['lang']);
     98                unset($contexte['date']);
     99                unset($contexte['date_default']);
     100                unset($contexte['date_redac']);
     101                unset($contexte['date_redac_default']);
     102                unset($contexte['lang']);
     103                if (count($contexte)==0){
     104                        $objet = 'sommaire';
     105                } elseif (isset($contexte['id_article'])) {
     106                        $id_objet = $contexte['id_article'];
     107                        $objet = 'article';
     108                } elseif (isset($contexte['id_rubrique'])) {
     109                        $id_objet = $contexte['id_rubrique'];
     110                        $objet = 'rubrique';
     111                }
     112                /* META TAGS */
     113                if (isset($config['meta_tags']) && $config['meta_tags']['activate']=='yes'){
     114                        if (!defined('_SEO_FORCER_SQUELETTE')){
     115                                $meta_tags = calculer_meta_tags();
     116                                $flux .= generer_meta_tags($meta_tags);
     117                        }
     118                }
     119                /* META GOOGLE WEBMASTER TOOLS */
     120                if (isset($config['webmaster_tools']) && $config['webmaster_tools']['activate']=='yes' && $objet=='sommaire'){
     121                        $flux .= generer_webmaster_tools();
     122                }
     123
     124                if (isset($config['bing']) && $config['bing']['activate']=='yes' && $objet=='sommaire'){
     125                        $flux .= generer_bing();
     126                }
     127
     128                /* CANONICAL URL */
     129                if (isset($config['canonical_url']) && $config['canonical_url']['activate']=='yes'){
     130                        $flux .= generer_urls_canoniques();
     131                }
     132
     133                /* GOOGLE ANALYTICS */
     134                if (isset($config['analytics']) && $config['analytics']['activate']=='yes'){
     135                        $flux .= generer_google_analytics();
     136                }
     137
     138                /* ALEXA */
     139                if (isset($config['alexa']) && $config['alexa']['activate']=='yes' && $objet=='sommaire'){
     140                        $flux .= generer_alexa();
     141                }
     142        }
     143
     144        return $flux;
     145}
     146
  • _plugins_/seo/trunk/seo_pipelines_ecrire.php

    r70705 r70733  
    5757        return $vars;
    5858}
     59
     60
     61function seo_ajouter_onglets($flux){
     62
     63        global $connect_statut, $connect_toutes_rubriques;
     64
     65        // seul les administrateurs globaux ont acces au bouton de configuration
     66        if ($connect_statut && $connect_toutes_rubriques){
     67                if ($flux['args']=='configuration'){
     68                        $flux['data']['seo'] = new Bouton(_DIR_PLUGIN_SEO . "img_pack/seo-24.png", _T("seo:seo"), generer_url_ecrire('seo_config'));
     69                }
     70        }
     71
     72        return ($flux);
     73}
     74
     75?>
Note: See TracChangeset for help on using the changeset viewer.