Jump to content

[MODULE] Google Rich Snippets v1.3- PS1.3/1.5


Recommended Posts

Google Rich Snippets — les quelques lignes de texte qui apparaissent sous chaque résultat de la recherche — sont conçus pour donner aux utilisateurs un sentiment pour ce qui est sur la page et pourquoi il est pertinent de leur requête.

Ce module ajoute dans la page du produit, les microdonnées informations détaillées destinées à aider les utilisateurs avec des requêtes spécifiques (description du produit, nom, etc.)

Caractéristiques :
Configurer la page de google
Multilingue
Croix navigateur
browsers.png
Lien: votre signature
google-rich-snippets.jpg

Nous n'avons pas de place pour ajouter d'autres modules
Visitez notre site pour les dernières versions des modules et des modules plus libres
www.catalogo-onlinersi.net

Edited by shacker (see edit history)
Link to comment
Share on other sites

Bonsoir

 

2FR3 vous avez réussi a fixer le bug

Non, en fait je n'ai pas cherché encore, j'ai penser qu'il fallait un peu de temps, mais apres verif aujourd'hui, toujours rien.

pas un bug, et les résultats de retard NLOS apparaissent

Rien n'apparait dans la source HTML

Edited by 2FR3 (see edit history)
Link to comment
Share on other sites

Vous pensez donc que c'est une question de temps?

Renseigner l'auteur n'est pas nécessairement obligatoire ?

 

J'ai installer un theme qui inclus les rich snippet sur un autre site et en vérifiant tout juste après cela fonctionnait avec l'outil GG, et les résultats de recherche environ deux jours plus tard.

Link to comment
Share on other sites

Bonjour,

Merci pour le module :)

 

Je vient de tester sur une 1.2.5

J'ai pas les rich snippets dans la source (grsprice itemtype = "http://schema.org/Offer")

J'ai bien la compilation smarty

(%%F5^F56^F5619E88%%googlesnippet-header3.tpl)

C'est possible de rendre compatible le module sur la 1.2.5?

 

J'ai tester en locale sur une 1.5.4 sa marche, j'ai bien rich snippets sauf

<link rel="author" href="0">>

Le module ne prend pas en compte le settings.

Edited by axodav (see edit history)
Link to comment
Share on other sites

Bonjour,

J’ai deux erreurs sur la home page sur la Ps 1.5.4 et 1.2.5

Notice: Undefined variable: res2 in C:\wamp\www\XXX\modules\googlesnippet\googlesnippet.php on line 221

 

Notice: Undefined variable: prices in C:\wamp\www\XXX\modules\googlesnippet\googlesnippet.php on line 223

 

Autrement sa marche toujours pas sur Ps 1.2.5 (pas les rich snippets dans la source)

Encore merci pour le module

Link to comment
Share on other sites

  • 2 weeks later...

Si tu as le theme par default, je te recommande de voir dans le forum référencement, y'a un thème gratuit qui le fait en natif et en html 5 (en plus :)).

Pour les autres, je le fait manuellement.

Link to comment
Share on other sites

  • 3 months later...

Après quelques hacks ca semble fonctionner pour moi sous PS 1.5.4.1, fichier googlesnippet.php ci-dessous à remplacer dans le répertoire modules/googlesnippet/ (all credits to original author). Ensuite s'assurer que les droits sur themes/.../product.tpl permettent la réécriture. Ensuite Réinitialiser le module dans le BO.

 

Ensuite faire tout ce que Google vous dit de faire pour valider la paternité, c'est la partie la plus pénible (36 façons de faire, l'Aide GWT souvent dépassé, etc.) Dans mon cas j'ai également ajouté un lien de type ?rel=author à la fin de mon product.tpl.

 

Tout au long, utiliser bien l'outil Google "Outil de test des données structurées" pour vérifier l'avancement.

 

Modifs du code :

 

- plus de duplicate description

- plus de variable warnings dans les logs du server

<?php

ini_set('allow_url_fopen',true);

class GoogleSnippet extends Module
{
    private $_html = '';

    private $_postErrors = array();

    function __construct()
    {
        $this->name = 'googlesnippet';
        if(_PS_VERSION_ > "1.4.0.0" && _PS_VERSION_ < "1.5.0.0"){
            $this->tab = 'administration';
            $this->author = 'RSI';
            $this->need_instance = 0;
        }
        elseif(_PS_VERSION_ > "1.5.0.0"){
            $this->tab = 'administration';
            $this->author = 'RSI';
        }

        else{
            $this->tab = 'Tools';
        }
        $this->version = '1.2';

        parent::__construct();

        $this->displayName = $this->l('Google Rich Snippet');
        $this->description = $this->l('Add google snippet to your site - www.catalogo-onlinersi.com.ar');

    }

    function install()
    {
        global $fh;
        if (!Configuration::updateValue('GOOGLESNIPPET_NBR', 'https://plus.google.com/118067945609961636215/posts') OR !parent::install() OR !$this->registerHook('header') /* OR !$this->registerHook('extraLeft')*/)
            return false;

        @chmod(_PS_THEME_DIR_."product.tpl", 0777 );
        $str = "";

        if($fh = fopen(_PS_THEME_DIR_.'product.tpl', 'r')){
            while(!feof($fh)){
                $str .= fgets ($fh);
            }
            $str = str_replace('<div id="primary_block" class="clearfix">','<article itemscope itemtype="http://schema.org/Product"><div id="primary_block" class="clearfix">', $str);
            $str = str_replace('id="bigpic"','id="bigpic" itemprop="image"', $str);
            $str = str_replace('<h1>','<h1 itemprop="name">', $str);
            $str = str_replace('<h2>{$product->name|escape:\'htmlall\':\'UTF-8\'}</h2>','<h2 itemprop="name">{$product->name|escape:\'htmlall\':\'UTF-8\'}</h2>', $str);


            $str = str_replace('id="short_description_content"','id="short_description_content" itemprop="description"', $str);
            // DUPLICATE $str = str_replace('id="short_description_block"','id="short_description_block" itemprop="description"', $str);

            $str = str_replace('class="editable"','class="editable" itemprop="sku"', $str);
            $str = str_replace('id="availability_value"','id="availability_value" itemprop="availability"', $str);
            $str = str_replace('id="our_price_display"','id="our_price_display" itemprop="price"', $str);
            $str = str_replace('id="buy_block"','id="buy_block" itemprop="offers" itemscope itemtype="http://schema.org/Offer"', $str);
            fclose($fh);
            @chmod(_PS_THEME_DIR_."product.tpl", 0644 );
            $x42 = fopen (_PS_THEME_DIR_.'product.tpl', "w");
            fwrite ($x42,$str);
        }
        else {
            die ("Error opening file in ".__FILE__." on line ".__LINE.".");
        }
        return true;

    }

    public function uninstall()
    {
        if (parent::uninstall() == false)
        {
            return false;
        }
         chmod("../themes/"._THEME_NAME_."/product.tpl", 0777 );
        $str = "";

        if($fh = fopen('../themes/'._THEME_NAME_.'/product.tpl', 'r'))
        {
            while(!feof($fh))
            {
                $str .= fgets ($fh);
            }
            $str = str_replace('<article itemscope itemtype="http://schema.org/Product"><div id="primary_block" class="clearfix">','<div id="primary_block" class="clearfix">', $str);
            $str = str_replace('id="bigpic" itemprop="image"','id="bigpic"', $str);
            $str = str_replace('<h1 itemprop="name">','<h1>', $str);
            $str = str_replace('id="short_description_content" itemprop="description"','id="short_description_content"', $str);
            // DUPLICATE REMOVED DURING INSTALL $str = str_replace('id="short_description_block" itemprop="description"','id="short_description_block"', $str);

            $str = str_replace('class="editable" itemprop="sku"','class="editable"', $str);
            $str = str_replace('id="availability_value" itemprop="availability"','id="availability_value"', $str);
            $str = str_replace('id="our_price_display" itemprop="price"','id="our_price_display"', $str);
            $str = str_replace('id="buy_block" itemprop="offers" itemscope itemtype="http://schema.org/Offer"','id="buy_block"', $str);
            fclose($fh);

            @chmod("../themes/"._THEME_NAME_."/product.tpl", 0644 );
            $x42 = fopen (_PS_THEME_DIR_.'product.tpl', "w");
            fwrite ($x42,$str);
        }
        else
        {
            die ("Error opening file in ".__FILE__." on line ".__LINE.".");
        }
        return true;

    }

    public function postProcess()
    {
        global $currentIndex;

        $errors = false;

        if ($errors)
        {
            echo $this->displayError($errors);
        }
    }

    public function displayForm()
    {
        global $cookie;
            
        $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT'));
        $languages = Language::getLanguages();
        $iso = Language::getIsoById($defaultLanguage);
        $divLangName = 'link_label';
        /*print _PS_THEME_DIR_."/contact-form.tpl";*/
        $this->_html .= '

        <form action="'.$_SERVER['REQUEST_URI'].'" method="post" id="form">

        <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
        <p>'.$this->l('Test your product page here: http://www.google.com/webmasters/tools/richsnippets').'</p>
            
        <input type="text" size="100" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('GOOGLESNIPPET_NBR')).'" />
        <p>'.$this->l('Put your google plus profile like : https://plus.google.com/118067945609961636215/posts').'</p>
        <center><input type="submit" name="submitGoogleSnippet" value="'.$this->l('Save').'" class="button" /></center><br/>

        <center><a href="../modules/googlesnippet/moduleinstall.pdf">README</a></center><br/>
        <center><a href="../modules/googlesnippet/termsandconditions.pdf">TERMS</a></center><br/>
        </form>
        </fieldset>
        <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
        <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Contribute').'</legend>
        <p class="clear">'.$this->l('You can contribute with a donation if our free modules and themes are usefull for you. Clic on the link and support us!').'</p>
        <p class="clear">'.$this->l('For more modules & themes visit: www.catalogo-onlinersi.com.ar').'</p>
        <input type="hidden" name="cmd" value="_s-xclick">
        <input type="hidden" name="hosted_button_id" value="HMBZNQAHN9UMJ">
        <input type="image" src="https://www.paypalobjects.com/WEBSCR-640-20110401-1/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
        <img alt="" border="0" src="https://www.paypalobjects.com/WEBSCR-640-20110401-1/en_US/i/scr/pixel.gif" width="1" height="1">
        </fieldset>
        </form>';

        return $this->_html;
    }

    public function getContent()
    {
        $this->postProcess();
        global $cookie,$currentIndex;

        if (Tools::isSubmit('submitGoogleSnippet'))
        {
            $nbr = Tools::getValue('nbr');
            $text = Tools::getValue('text');
            Configuration::updateValue('GOOGLESNIPPET_NBR', $nbr);
            Configuration::updateValue('GOOGLESNIPPET_TEXT', $text);

            $this->_html .= @$errors == '' ? $this->displayConfirmation('Settings updated successfully') : @$errors;

        }

        return $this->displayForm();

    }

    function hookExtraLeft($params)
    {
        return $this->display(__FILE__, 'googlesnippet-footer.tpl');
    }

    public function getProductscath($id_product)
    {
        $result = Db::getInstance()->getRow('
                SELECT COUNT(pc.`grade`) AS totalCount
                FROM '._DB_PREFIX_.'product_comment pc
                WHERE pc.id_product = '.$id_product.'');

        return $result['totalCount'];

    }

    public function getProductscathsum($id_product)
    {
        $result = Db::getInstance()->getRow('
                SELECT SUM(pc.`grade`) AS totalCount
                FROM '._DB_PREFIX_.'product_comment pc
                WHERE pc.id_product = '.$id_product.'');

        return $result['totalCount'];

    }
    
    public function getPages($objidvideo)
    {
        $result =  Db::getInstance()->ExecuteS('
                SELECT pt.`id_page_type`,pt.`name`,p.`id_page_type`,p.`id_page`,p.`id_object`
                FROM `'._DB_PREFIX_.'page` p
                LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.`id_page_type` = pt.`id_page_type`
                WHERE p.`id_page` = '.$objidvideo.' LIMIT 1');

                return ($result);
    }
    
    function hookHeader($params)
    {
        global $smarty, $psversion, $res;
            
        $objidvideo=Page::getCurrentId();
        $objres = $this->getPages($objidvideo);
        foreach ($objres as $obre)
        {
            $idnamev = $obre['name'];
        }
        $plusname = Configuration::get('GOOGLESNIPPET_NBR');
        $res = 0;
        $res2 = 0;
        $prices = 0;
        if($idnamev == "product" || $idnamev == "product.php")
        {
            $id_product = intval(Tools::getValue('id_product'));
            $prices = Product::getPriceStatic($id_product);
            $res = GoogleSnippet::getProductscath($id_product);    // number of ratings
            $res2 = ($res == 0)? 0 : round(GoogleSnippet::getProductscathsum($id_product)/$res,0);    // average rating
        }
        $psversion = _PS_VERSION_;
        $smarty->assign(array(    'psversion' => $psversion));
        $smarty->assign(array(    'res' => $res));
        $smarty->assign(array(    'res2' => $res2));
        $smarty->assign(array(    'plusname' => $plusname));
        $smarty->assign(array(    'prices' => $prices));

        if(_PS_VERSION_ > "1.5.0.0")
        {
            //return $this->display(__FILE__, 'googlesnippet-header.tpl');
        }
        if(_PS_VERSION_ < "1.5.0.0" && _PS_VERSION_ > "1.4.0.0")
        {
            //    return $this->display(__FILE__, 'googlesnippet-header2.tpl');

        }
        if(_PS_VERSION_ < "1.4.0.0")
        {
            //    return $this->display(__FILE__, 'googlesnippet-header3.tpl');

        }
    }

}
?>
Edited by Spazbot (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

 

Après quelques hacks ca semble fonctionner pour moi sous PS 1.5.4.1, fichier googlesnippet.php ci-dessous à remplacer dans le répertoire modules/googlesnippet/ (all credits to original author). Ensuite s'assurer que les droits sur themes/.../product.tpl permettent la réécriture. Ensuite Réinitialiser le module dans le BO.

 

Ensuite faire tout ce que Google vous dit de faire pour valider la paternité, c'est la partie la plus pénible (36 façons de faire, l'Aide GWT souvent dépassé, etc.) Dans mon cas j'ai également ajouté un lien de type ?rel=author à la fin de mon product.tpl.

 

Tout au long, utiliser bien l'outil Google "Outil de test des données structurées" pour vérifier l'avancement.

 

Modifs du code :

 

- plus de duplicate description

- plus de variable warnings dans les logs du server

 

Avec cette modification j'ai le message suivant et le module n'est plus listé :

 

Le(s) module(s) suivant(s) ne peuvent pas être chargé.:
  1. googlesnippet (erreur de syntaxe dans /modules/googlesnippet/googlesnippet.php)
  2. googlesnippet (classe manquante dans /modules/googlesnippet/googlesnippet.php)

 

Un petit coup de main svp !

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...
  • 1 month later...
  • 2 months later...
  • 2 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...