jeudi 2 septembre 2010

Modx et Infomaniak


J'aime bien Infomaniak, hébergeur suisse qui ne laisse pas un choix énorme dans le pilotage des options (ça tombe bien, héhé) mais donne plein d'espace web et leurs serveurs fonctionnent bien. Mais des fois je suis un peu perdu.

Comme ce matin, quand j'ai fait migrer un site sous une vieille version de modx (la 0.9.6.3) vers la version plus récente, 1.0.4. D'abord pour voir si ça marche j'uploade la nouvelle version et je tente une installation. Mais quand je clique sur le bouton "Next" rien ne se passe. Ürg ! Casses le n'hales tienne, je vire tout et je décide de copier directement l'ancien site, bases de données comprises. Donc je fais ça, base de donnée comprise (j'insiste), j'installe, fastoche, mais rien ne se passe. Enfin, si, j'ai bien les pages qui s'affichent, mais impossible d'accéder au manager. Enfin, si, j'y arrive mais je vois une jolie fenêtre comme dans l'image ci-contre "veuillez patienter etc": Urg. Après un bon moment de patience, je craque et j'appelle un pote programmeur qui me dit "c'est javascript qui marche pas, avec le proxy de test d'Infomaniak, t'as qu'à aller voir sur leur FAQ et tu tapes Javascript, tu verras une manipe pour que ça marche avec le fichier host".

Bon, j'enjolive l'histoire, mon pote ne m'a pas dit tout ça, j'en ai trouvé une bonne partie tout seul :) Bilan, il suffit de faire comme ils disent sur la FAQ infomaniak . Pour la trouver on peut même directement taper faq infomaniak javascript dns proxy dans Gougueul et il y a tout de marqué. Miracle ! En éditant le fichier host c'est réglé.

Elle est pas belle la vie ?

dimanche 17 mai 2009

Un peu d’ordre que diable

Avec toutes ces histoires de chunks et de snippets, il est facile de s'y perdre un peu. Et surtout, de faire du code pas très logique. Pourquoi s'en soucier, me direz-vous ? Parce qu'en fonction de vos choix initiaux vous pouvez réaliser un site facile à maintenir, ou un bouzin innommable.
Ma petite expérience de ModX m'amène à dire que ce qui intéresse l'utilisateur, c'est la simplicité de l'éditeur WYSIWIG, typiquement TinyMCE livré en standard. Donc tout le reste n'est pas utile.
Donc lorsqu'on crée un gabarit de page (template) on a intérêt à ne laisser que lez zones éditables à notre ami utilisateur. Seulement voilà, si j'ai un site avec 25 templates différentes, je risque d'avoir à mettre à jour chacune de ces templates au moindre changement, par exemple dans le header. Donc la solution consiste à utiliser les chunks dont je parlais un peu plus bas. Il suffit par exemple de créer un snippet apppelé Header et de copier dedans le contenu.. du header. Un peu de HTML que vous appelerez ensuite dans le template. Et du coup, si vous avez besoin de modifier quelque chose, ce sera simple. Mais, allez-vous me dire, et le titre de la page ? Fastoche, tout ça se met automatiquement au point avec les variables internes :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>[(site_name)] | [*pagetitle*]</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<META NAME="Description" CONTENT="">   
<META NAME="Keywords" CONTENT="">
<meta name="verify-v1" content="" />
<META name="y_key" content="">
<base href="[(site_url)]" />

vendredi 1 mai 2009

Template Variables et liens



Les Templates Variables, ou TVs, c'est super utile pour rajouter des bouts de trucs à vos pages. En passant par vos templates.

Prenons un exemple d'un template qui affiche du texte. Trop fort. Je voudrais aussi qu'il y ait une image. Je pourrais la charger directement dans l'éditeur WYSIWYG mais pour des raisons de commodité je veux que mon utilisateur n'aie pas de difficultés, par exemple si je veux qu'il charge une grande image pour mettre dans le billet et une petite image pour mettre en page d'accueil. On appelle ça une vignette :)

Il me suffit de créer une nouvelle TV et de lui appliquer le modèle de mon choix. Par exemple, ici je choisis le modèle image. Ensuite rien de plus simple que d'appliquer dans le template une div toute bête avec un appel à ma variable sous la forme [*nom-de-la-variable*]. Bon avec les liens j'ai pas réussi, ça me met toujours l'URL de base du site. Va falloir que j'y travaille.

mercredi 17 septembre 2008

Tutorial snippet

Les snippets facile, c'est possible !
Sur le wiki en français de Modx, que je trouve généralement incompréhensible, figure une pépite : la page intiulée "Mon premier snippet". On y trouvera expliqué, de façon claire et intelligente, les arcanes du code. Après avoir lu cette page accessible aux newbies, on ne deviendra certes pas un pro du code, mais on aura au moins une bonne compréhension de la mécanique derrière les snippets. Bravo aux deux auteurs, Sylvain aidé par Jacxof pour quelques détails.

dimanche 27 avril 2008

Erreur de script Google Analytics : _gat est indéfini


En installant le code Google Analytics sur un site, j'ai eu la surprise de constater que sous Internet Explorer la page retournait une erreur de javascript : Terminé, mais il existe des erreurs sur la page.
Allons bon, une erreur de code dans le script Google ? Voilà qui me surprendrait fort.
Un double_clic sur l'erreur m'apprend que '_gat' est indéfini.


J'ai utilisé le script sous la forme suivante, copiée directement depuis la fenêtre Google :
<script type="text/javascript"> var
gaJsHost = (("https:"
== document.location.protocol) ?
"https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" +
gaJsHost + "google-analytics.com/ga.js'
type='text/javascript'%3E%3C/script%3E")); </script> <script
type="text/javascript"> var pageTracker =
_gat._getTracker("UA-1267197-7"); pageTracker._initData(); pageTracker._trackPageview();
</script>

Et donc en fait il apparaît tout simplement qu'il y avait un saut de ligne caché. En fait, chaque ligne doit se terminer par un poin virgule, pour que tout le code soit bien aligné. Dans mon cas il suffisait de faire remonter le code de type=text/javascript d'une ligne, à la suite du paragraphe.

Et hop !

Si vous avez d'autres problèmes avec cette erreur, une page qui fourmille de solutions : _gat error message

J'en profite pour donner l'URL du site qui m'a permis d'afficher ce code directement dans la fenêtre HTML de Blogger : en transformant le code en ASCII (ou en Javascript) cela permet de tout faire bien propre. Sinon, n est embêté, l'interpréteur HTML fait son travail et...interprète les script.

mardi 4 mars 2008

Sitemap : les étapes


Pour afficher une sitemap (fichier sitemap.xml) que Google utilisera afin de parcourir et d'indexer les pages de votre site, il faut installer le snippet Sitemap programmé par Grad. Les instructions d'install disponibles sur le wiki, outre qu'elles sont en anglais, sont incomplètes, surtout pour un blaireau comme moi. Voici donc comment il faut procéder :

1- téléchargez le fichier texte fourni à la page de sitemap. Au moment ou j'écris cet article, nous en sommes à la version sitemap_1.0.6.txt

2- Dans le manager de MODx, allez dans Ressources>Gestion ressources >snippets. Cliquez sur nouveau snippet, et donnez lui le nom SiteMap en respectant bien les majuscules, sans espace, bref tout bien comme j'ai écrit.

3- Retournez ouvrir le fichier sitemap_1.0.6.txt précedemment téléchargé, faites Tout sélectionner (Ctrl+A) et copier, puis revenez dans MODx et collez ce texte dans le nouveau snippet, en ayant auparavant pris soin d'effacer tout le contenu que MOdx assigne par défaut au snippet (il s'agit des caractères qui sont déjà contenus dans le fichier texte. Pas la peine de les mettre 2 fois).

4- Cochez la case Lancer l'exécution du snippet après l'enregistrement et cliquez sur Enregistrer.

5- Toujours dans l'onglet Gestion des Ressources, allez à l'onglet Gestion des Modèles et cliquez sur Nouveau Modèle. Nommez le nouveau modèle SitemapGoogle et laissez le vide (sans contenu) puis sauvegardez.

6 - rendez-vous ensuite dans l'arborescence des documents. Créez un nouveau document que vous appelerez sitemap, et surtout indiquez dans l'alias du document : sitemap.xml Dans Modèle utilisé, choisissez le template SitemapGoogle que vous venez de créer. Décochez l'option afficher dans le menu. Ensuite cliquez sur l'onglet Réglage de la page et décochez les cases Editeur Wysiwyg, Enregistrer les visites, A placer en cache et Retirer du cache. Enfin, dans le menu déroulant Type de contenu, indiquez Text/XML, puis faites enregistrer.

7- Editez ce document que vous venez de créer, et vérifiez bien que le contenu du document ne s'affiche pas avec un éditeur Wysiwyg tel que TinyMCE : le code ne supporterait pas les tags ajoutés par ce module. Dans le corps du document, insérez ceci : [!SiteMap? &format=`sp`!]
Enregistrez puis publiez le document.

8- Vous avez tout fait comme il fallait ? Hébin chez moi ça ne marche pas. J'ai tout essayé, rien à faire. Le document devrait être accessible depuis http://www.votresite.com/sitemap.xml, mais rien à faire. Ca ne marche même pas si vous tapez dans la barre d'adresse le numéro du document, par exemple (s'il porte le numéro 75) : http://www.votresite.com/index.php?id=75.
Chez moi, j'obtiens un affichage du type :

Erreur d'analyse XML : aucun élément trouvé
Emplacement : http://www.votresite.com/index.php?id=75
Numéro de ligne 1, Colonne 1 :

^

9- Mais comme un authentique blaireau ne blesse pas les bras, voici la solution que j'ai trouvé en fouillant sur les forums de MODx : revenez à l'étape 7, et effacez le contenu du document. Ou plutôt, coupez-le : on va le mettre ailleurs. Quoiqu'il en soit le document sitemap doit être vide.

10- Allez dans le template SitemapGoogle et éditez-le. Collez le bout de code [!SiteMap? &format=`sp`!] puis enregistrez.

11- retournez sur l'adresse de votre doc, par exemple
http://www.votresite.com/index.php?id=75. Ca marche ! Bon d'accord ce n'est pas nickel, mais comme le but est d'indiquer à Google (par le biais des outils webmaster) ou se trouve la sitemap de votre site, il sufit de lui donner cette URL et le tour sera joué. Et hop. Alors par contre, vous dire pourquoi c'est comme ça je n'en sais rien. Si un gentil lecteur a une idée... Par contre, l'adresse http://www.votresite.com/sitemap.xml ne fonctionne toujours pas. J'ai comme une idée qu'il va falloir que je me penche sur ces histoires d'alias. J'ai essayé en enlevant l'extension .xml dans l'alias, mais rien ne change.

J'ai donc recommencé quelques temps plus tard sur un autre site. Rien ne vaut de laisser mûrir un peu parfois. Et ça a marché !
Voici donc la technique :

- Je crée un snippet intitulé SiteMap dans lequel je code le contenu dufichier sitemap_1.0.6.txt évoqué à l'étape 3 ci-dessus. Je ne coche pas la case "lancer l'exécution du contenu après enregistrement".

- Je crée un template intitulé SitemapGoogle dont le contenu indique ceci :
[!SiteMap? &format=`sp`!]

-Je crée un document dont le titre est sitemap et l'alias sitemap.xml. Attention, il faut bien rajouter.xml après sitemap ! Ce document utilise le template SitemapGoogle. Je le publie puis je l'édite et je vais dans les réglages de la page, ou je ne laisse cochée que les cases "cherchable" et "supprimer du cache". Je choisis un type de contenu text/xml dans le menu déroulant, et c'est tout.

Précisons que le site en question utilise le réglage Configuration>Outils>Réglages URL simples> case cochée à oui pour l'option "utiliser les URL simples".

Et voila.

Installation : ne pas oublier de modifier les permissions


Le fichier d'install de MODx le précise, mais il arrive parfois de l'oublier : lors de l'installation sur un serveur Unix, vous devez vous connecter au serveur avec votre logiciel de FTP, et modifier les permissions CHMOD des répertoires suivants :

/assets/cache (et ses fichiers), /assets/export et /assets/images doivent être passés en 777

Il est également parfois nécessaire de créer dans le répertoire manager/includes un fichier vide nommé config.inc.php que l'on passe en CHMOD 777

Une fois l'installation terminée, changez les permissions de ce fichier en lecture seule.

Que se passe-t-il si vous ne suivez pas cette procédure ? L'installation ira jusqu'au bout, mais sur le dernier écran vous ne verrez pas le bouton "fermer" (close). La base de donnée sera bien enregistrée avec les champs nécessaires, mais l'install étant incomplète, rien ne fonctionnera ! C'est donc une étape fondamentale.