Neueste Beiträge
FAQ — Écrire un addon : les questions qui reviennent
Les réponses courtes aux questions qu'on se pose en écrivant son premier module, widget ou thème. Chacune renvoie au tutoriel ou au guide qui en dit plus.
Module, widget ou thème : lequel écrire ?
- Un module a ses propres pages, à sa propre adresse (
/astuces), et souvent ses tables et sa page d'administration. - Un widget est un bloc qu'on pose dans une zone d'une page, avec l'éditeur en direct : un message, un compteur, les dernières entrées d'un module.
- Un thème dessine toutes les pages : l'en-tête, les zones, les couleurs, les polices.
Pour commencer, le widget est le plus court : Mon premier widget.
Mon texte reste en français sur une page anglaise
Chaque texte affiché passe par $this->lang('…'), et l'addon porte ses traductions dans langs/fr.php,
langs/en.php, de, es, it et pt. La clé de chaque ligne est l'empreinte du texte français :
hash('crc32b', 'Le texte français'). Si la traduction manque, ou si sa clé ne correspond pas au texte exact
— une apostrophe, un espace —, le site affiche le texte français.
Ma page répond « page introuvable »
- L'adresse n'est pas dans les
routesde__info(), ou le module est désactivé. - Le checker n'a rien rendu : c'est sa façon de dire « introuvable ». Pour une page qui n'a rien à charger
(« Nouvelle astuce »), il rend
[NULL]: un tableau vide vaut « rien ».
Où voir les erreurs de mon code ?
Administration → Monitoring → Journal des erreurs : chaque erreur PHP, avec le fichier et la ligne. Les erreurs de JavaScript sont dans la console du navigateur (touche F12).
Comment afficher un texte venu de la base sans risque ?
Avec nf_texte() : <?php echo nf_texte($astuce['title']) ?>. Les caractères qui comptent en HTML sont échappés, et
un texte saisi par quelqu'un ne peut pas devenir du code dans la page. Pour garder ses retours à la ligne :
nl2br(nf_texte(…)).
Puis-je écrire du JavaScript dans une vue ?
Un <script> écrit dans une vue reçoit tout seul le jeton qu'exige la politique de sécurité du site. Mais un
onclick="…" est refusé : la politique interdit le code dans les attributs. Le mieux reste un fichier js/ chargé
par $this->js('nom'), qui lit ses données dans des attributs data-. jQuery n'est plus chargé : NF.ready()
attend que la page soit prête. Le widget « Compte à rebours » montre tout cela.
Comment afficher une date ?
nf_date_heure() ou nf_date() : la date dans le fuseau du visiteur, au format de sa langue. Pour enregistrer une
heure saisie, nf_heure_saisie() la passe dans le fuseau du site. Jamais date() pour l'affichage : il écrit
l'heure du serveur. Le « Compte à rebours » suit une heure de la saisie à l'affichage.
Mon widget a besoin d'un module
Déclare-le dans __info() : 'requires' => ['astuces']. Sans le module, le widget ne s'affiche pas, l'éditeur en
direct ne le propose pas, et « Ajouter » refuse de l'installer seul. Si le module est seulement un plus, consulte-le
sans le déclarer : $this->module('talks') rend le module s'il est installé, et is_enabled() dit s'il est actif.
Comment faire évoluer les tables de mon module ?
Une nouvelle table va dans install/install.sql, avec CREATE TABLE IF NOT EXISTS. Une évolution d'une
table déjà livrée — une colonne, des données à déplacer — va dans une migration :
install/migrations/AAAA_MM_JJ_nom.up.sql, jouée une seule fois, à la mise à jour. Les tutoriels « Astuces » 2.0
et 3.0 en écrivent, et expliquent dans quel ordre le site les joue.
Quelle version de NeoFrag déclarer dans depends ?
La plus ancienne sur laquelle tu as essayé ton addon. Le site refuse d'installer l'addon sur une version plus ancienne, et le dit.
Comment partager mon addon ?
Ouvre un sujet dans le forum de son type — Modules, Widgets ou Thèmes — avec son archive .zip jointe :
ce qu'il fait, une capture, et la version de NeoFrag sur laquelle tu l'as essayé.

Forum-Aktivität
kein Besucher
Statistiken
- 72 Themen erstellt
- 0 Nachricht gepostet
- 63 Ankündigungen
- 1 Teilnehmer