0 Aufruf
FAQ — Écrire un addon : les questions qui reviennent
Ungelesene Nachricht

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é.


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

Meine Cookies verwalten

Die Website speichert nur die Cookies, die sie zum Funktionieren braucht: Dafür ist Ihre Zustimmung nicht erforderlich. Die anderen Dienste gehören anderen Unternehmen; sie werden nur geladen, wenn Sie sie akzeptieren. Ihre Wahl wird sechs Monate gespeichert, und Sie können sie jederzeit ändern.

Für die Website erforderlich Immer aktiv

  • __Host-session Hält Sie angemeldet und schützt die Formulare vor betrügerischen Übermittlungen. Bis zum Schließen des Browsers; ein Jahr mit „Angemeldet bleiben“
  • nf_consent Speichert die Entscheidungen, die Sie in diesem Fenster treffen. 6 Monate
  • nf_fuseau Zeigt Datum und Uhrzeit in Ihrer Zeitzone an. 1 Jahr
  • Browser-Speicher Speichert Ihre Wahl zwischen Tag- und Nachtmodus sowie die für die Artikelliste gewählte Darstellung. Bis Sie ihn leeren

Videos

In Seiten eingebettete Videos: Der Player stammt von der Plattform, die Ihre IP-Adresse erhält und ihre Cookies speichern kann.

Musik

In Seiten eingebettete Titel und Playlists: Der Player stammt von der Plattform, die Ihre IP-Adresse erhält und ihre Cookies speichern kann.