0 visualizzazione
FAQ — Écrire un addon : les questions qui reviennent
Messaggio non letto

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 routes de __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é.


Attività del forum
C'è 0 utente sul forum
nessun visitatore
Statistiche
  • 72 argomenti creati
  • 0 messaggio pubblicato
  • 63 annunci
  • 1 partecipante

Gestisci i miei cookie

Il sito installa solo i cookie necessari al suo funzionamento: non richiedono il suo consenso. Gli altri servizi appartengono ad altre società; si caricano solo se li accetta. La sua scelta è conservata per sei mesi, e può cambiarla in qualsiasi momento.

Necessari al sito Sempre attivi

  • __Host-session Mantiene il suo accesso e protegge i moduli dagli invii fraudolenti. Fino alla chiusura del browser; un anno con «Ricordami»
  • nf_consent Conserva le scelte che fa in questa finestra. 6 mesi
  • nf_fuseau Mostra le date e gli orari nel suo fuso orario. 1 anno
  • Memoria del browser Conserva la sua scelta tra modalità giorno e notte, e la presentazione scelta per l’elenco degli articoli. Finché non lo svuota

Video

I video integrati nelle pagine: il lettore proviene dalla piattaforma, che riceve il suo indirizzo IP e può installare i propri cookie.

Musica

I brani e le playlist integrati nelle pagine: il lettore proviene dalla piattaforma, che riceve il suo indirizzo IP e può installare i propri cookie.