Création de 2 clé google maps

Sur le site de google maps, je crée 2 clé, une pour www.monInstallDotclear.tld, et une pour www.monBlog1.tld. J'obtiens ainsi:

  • www.monInstallDotclear.tld: cleInstallxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • www.monBlog1.tdl: cleBlog1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Je note bien ces 2 clés.

Paramétrage de l'interface d'administration de dotmap

Je choisi le blog avec lequel je souhaite utiliser l'API google maps dans le selecteur de blogs: monBlog1.tld. Ensuite, dans le menu gauche, je vais dans Blog>Dotmap. Dans l'onglet Configuration:

  • je coche la case Activer le plugin Dotmap sur ce blog
  • je saisie la clé cleInstallxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx sa zone.

Voilà pour la partie d'administration, je peux le verifier en naviguant sur la carte, dans l'onglet points du plugin.

Correction pour l'affichage public

Si je ne fais que cela, pas de carte dans l'affichage public. J'édite le fichier _public.php[1] qui se trouve dans le répertoir du plugin Dotmap et je cherche la fonction initMaps().

public function initMaps($attr)
    {
        global $core;
        $js = $core->blog->url . "dotmap.js";
        $dzjs = $core->blog->url . "dotmapdz.js";
        $cmjs = $core->blog->url . "dotmapcm.js";

        $tmp = "<script src=\\\"http://maps.google.com/maps?file=api&amp;v=2&amp;key=%s\\\" type=\\\"text/javascript\\\"></script>\r\n" .
                        "<script src=\\\"$dzjs\\\" type=\\\"text/javascript\\\"></script>\r\n".
                        "<script src=\\\"$cmjs\\\" type=\\\"text/javascript\\\"></script>\r\n".
                        "<script src=\\\"$js\\\" type=\\\"text/javascript\\\"></script>\r\n";
        $header =  sprintf($tmp,  $core->blog->settings->dotmap_gmapkey);
        return '<?php echo "'.$header.'"; ?>';
    }

Il suffit de modifier le contenu de "$header":

public function initMaps($attr)
    {
        global $core;
        $js = $core->blog->url . "dotmap.js";
        $dzjs = $core->blog->url . "dotmapdz.js";
        $cmjs = $core->blog->url . "dotmapcm.js";

        $tmp = "<script src=\\\"http://maps.google.com/maps?file=api&amp;v=2&amp;key=%s\\\" type=\\\"text/javascript\\\"></script>\r\n" .
                        "<script src=\\\"$dzjs\\\" type=\\\"text/javascript\\\"></script>\r\n".
                        "<script src=\\\"$cmjs\\\" type=\\\"text/javascript\\\"></script>\r\n".
                        "<script src=\\\"$js\\\" type=\\\"text/javascript\\\"></script>\r\n";
        //$header =  sprintf($tmp,  $core->blog->settings->dotmap_gmapkey);
        // Pour pouvoir avoir un affichage correct de la carte avec ses boutons de navigation
        $header =  sprintf($tmp,  'cleBlog1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
        return '<?php echo "'.$header.'"; ?>';
    }

On vérifie sur l'interface publique: OK ca fonctionne.

Seul problème, cette modification du template ne permet d'utiliser une autre clé goocle API pour un blog n°2 par exemple. Il faudrait prévoir un paramétrage de plus dans dotmap pour gérer une clé "administration" et une clé "public" pour chaque blog.

Notes

[1] Plugin créé par Looic. www.looic.com