Contents

FAQ pour développeurs

Cette FAQ contient les réponses aux questions posées régulièrement par les développeurs qui débutent CMS Made Simple. Les développeurs doivent d'abord rechercher les réponses ici avant de déposer leurs questions dans les forum.

Q: Comment inclure du PHP "Externe" dans une page ou un gabarit (Template) ?

J'ai un script ou un bout de code PHP provenant d'un ancien site, et je veux l'utiliser dans ma nouvelle page CMS. Comment faire cela ?

R1: Utilisez les Tags Utilisateurs (recommandé)

Vous pouvez créer un Tag utilisateur (Extensions >> Tags Utilisateurs) et y inclure votre code PHP. Exemple : créez un Tag appellé my_phpinfo placer le code suivant à l'intérieur :

  phpinfo();  //(les mots clés <?php et ?> ne sont pas nécessaires).

Maintenant, ajoutez le code suivant dans votre page pour activer ce script :

  {my_phpinfo}

Vous pouvez utiliser n'importe quel code PHP dans un Tag utilisateur, y compris la commande "include" pour inclure du code externe. Vous avez aussi accès aux API de CMS Made Simple et aux variables globales. C'est la manière recommandée d'intégrer du code PHP, et vous pouvez contrôler les personnes qui ont accès à cette fonctionnalité grâce à la gestion des droits d'accès.

R2: Utilisez {php} and {/php} Tags

La seconde manière d'inclure du code PHP se fait en utilisant les tags {php} and {/php} encapsulant votre code PHP dans votre page ou votre template (les mots clés <?php et ?> ne sont pas nécessaires). Attention : cette fonctionnalité est désactivée par défaut sur les nouvelles installations.

Pour activer cette fonctionnalité, vous devez modifier une ligne dans votre fichier de configuration : Mettre la paramètre "use_smarty_php_tags" à true. Exemple :

  #Autorise le tag {php}. Option à éviter si vous ne faites pas totalement confiance à vos utilisateurs.
  $config['use_smarty_php_tags'] = true;

Vous pouvez ensuite placer votre code PHP à l'intérieur de vos pages ou de vos gabarits comme vous le souhaitez. Exemple :

  {php}phpinfo();{/php}

NB : Cette option n'est pas recommandée car elle offre la possibilité à toutes les personnes habilitées à éditer une page d'y inclure du code PHP et d'introduire par la même occasion des failles de sécurité.

Q: Pourquoi mon "modifieur" smarty ne fonctionne pas ?

J'ai utilisé le Tag suivant :

  {content | lower}

dans mon gabarit, et cela ne fonctionne pas. Où est l'erreur ?

R: Parce que smarty est très sensible aux espaces

Smarty utilise les espaces comme séparateur pour indiquer les attributs d'un Tag ; il utilise le caractère "pipe" | pour indiquer le début d'un "modifieur". Vous devez retirer les espaces :

  {content|lower}

Q: Pourquoi je ne peux pas supprimer des images ou des modules en mode FTP ?

Certains utilisateurs, en particulier ceux qui utilisent l'environnement Windaube peuvent avoir une surprise quand ils se connectent en mode FTP : ils n'arrivent pas à supprimer certains fichier ; particulièrement ceux qui sont situés dans le répertoire Uploads.

R: Un utilisateur ne peux supprimer les fichiers d'autres utilisateurs

MAIS CE SONT MES FICHIERS !

Non, désolé, ils ne vous appartiennent pas !

La plupart des plateformes d'hébergement utilisent essentiellement linux. Et généralement, le process du serveur web est exécuté depuis un compte utilisateur spécial (nobody, apache, httpd ou autre). Par défaut, les fichiers générés par ce process ne peuvent pas être détruits par d'autre utilisateurs. De la même façon, le process httpd ne peut écrire dans les répertoires d'autres utilisateurs. C'est une bonne mesure de sécurité mais cela peut être parfois déroutant.

Quand un fichier est téléchargé dans le répertoire uploads, ou un module ou un thème est extrait depuis un fichier XML que vous avez téléchargé (ou récupéré depuis le Gestionnaire de modules), ce fichier appartient au process httpd et ses propriété d'accès sont définies aux valeurs par défaut. Et la plupart du temps, les autres utilisateurs peuvent les lires mais ne peuvent pas les modifier ou les supprimer.

Alors, comment on règle ce problème ?

Et bien, la réponse est en deux parties :

1) Vous pouvez résoudre le problèmes pour les prochains fichiers en ajustant le masque de création de fichier (file creation mask) dans les préférences du site. Cela ajuste le "httpd processes umask" (masque utilisateur), et cela affectera les permissions des nouveaux répertoires et fichiers. En résumé, cela fonctionne de la manière suivante :

   File Permissions = 0777 - umask

Exemple : Si votre masque de création de fichier est égal à 0022, les permissions sur un nouveau répertoire seront 0777 - 0022 = 0755 Les fichiers auront le même niveau de permission, sauf pour le niveau exécution et obtiendront le niveau 644.

Voici un lien vers un tutoriel relativement exhaustif sur la gestion des permissions sous unix en anglais (si quelqu'un trouve l'équivalent en français, qu'il n'hésite pas à modifier cette FAQ) [1]

2) Pour les fichiers que vous avez déjà téléchargé et que vous ne pouvez pas supprimer, par qu'elles appartiennent au process httpd, il faut exécuter un script spécial.

In CMS made simple 1.0, an ability to change permissions (and even remove) modules has been added.

However, there is a script rolling around that will let you recursively open up all files in a subdirectory, If you can't find it, contact calguy1000 he'll have it (hopefully).

Q: Est-ce que je peux accéder à un module depuis un plugin ?

Je développe un plugin (Tag utilisateur) et j'aimerais pouvoir l'interfacer avec le' module XYZ. Est-ce possible ?

R: Oui, via $gCms->modules['TheModule']

La liste de tous les modules installés (au minimum, ceux qui ont des fonctionnalités de type frontend) est disponible dans l'objet global $gCms. Vous pouvez accéder à cet objet de la manière suivante :

  global $gCms;
  if( !isset( $gCms->modules['TheModuleIWant'] ) || !isset( $gCms->modules['TheModuleIWant']['object'] ) )
    {
       return;
    }
  $themoduleiwant = $gCms->modules['TheModuleIWant']['object'];
  $themoduleiwant->DoThis($somedata);
  $themoduleiwant->DoThat($somemoredata);

Ce n'est pas la meilleure façon de faire, si vous n'êtes pas sûr que le module soit installé ou non, mais c'est déjà très bien pour démarrer. Vous pouvez toujours utiliser var_dump et print_r sur les différentes portions de $gCms pour voir ce qui est disponible.

Q: Comment faire pour modifier une chaine de caractères ?

Occasionallement, vous pouvez vouloir modifier un message affiché par un module. Et ce message est présent dans le fichier <install dir>/modules/<ModuleName>/lang/xx_YY.php qui est facile à modifier mais vous voulez savoir ce qui se passera lors du procvhain upgrade. Est-ce que vos modifications serontr conservées ?

NB : La gestion des messages de certains modules n'est pas toujours très propre et certains messages sont codés en dur ; Ce n'est pas très bon de devoir modifier le code source et dans ce cas, prenez contact avec l'administrateur du module concerné et invitez le à corriger le problème.

R: Ajouter votre propre fichier de langue

IL est possible de surcharger n'importe quel message ebn créant votre propre fichier de langue qui ne contiendrait que 'les messages que vous souhaitez modifier.

Le nouveau fichier de langue devra être installé à l'endroit suivant :

  <install dir>/module_custom/<ModuleName>/lang/xx_YY.php

Reprenez les chaines de caractères que vous souhaitez modifier et remplacez les libellés par leurs nouvelles valeurs :

  $lang['logout'] = 'Se déconnecter';  
  $lang['prompt_changesettings'] = 'Mes préférences';

Q: Comment je peux débuguer mon code/site ?

R: Vous pouvez utiliser ces outils :

Pour IE:

  • fiddler (http://www.fiddlertool.com) est un proxy local qui intercepte et modifie les trame envoyées et reçues par le serveur ; parfait pour tester certains scripts (javascript) ou codes CSS avant de les intégrer dans votre code.
  • AIS Web Accessibility Toolbar (http://www.visionaustralia.org.au/info.aspx?page=614) permet (parmi d'autres superbes outils)de voir exactement quels attributs CSS sont appliqués sur l'élément de page sélectionné.

Pour Firefox:

  • Firebug: consulter et débugguer les requêtes AJAX et les "page elements", éditer le CSS à la volée, etc.
  • Web Developer: éditer le CSS à la volée, debuguer HTML, ect.

Developers FAQ/fr

From CMSMS

A2 Hosting