SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 182 visiteurs en ce moment

Home > Strumenti per i Plugin > Tutoriaux pour Plugins > I segnaposti dinamici

I segnaposti dinamici

2 giugno 2008 – di mmmx

Tutte le versioni di questo articolo: [français] [italiano]

1 vote

Un tutorial per provare a comprendere meglio la creazione e l’utilizzo dei segnaposti dinamici.

Utilizzo

I segnaposto dinamici reagiscono male ai filtri. È inutile (almeno fino alla 1.9.2) provare ad applicare un filtro ad un segnaposto dinamico, o utilizzare un segnaposto dinamico come argomento di un filtro.

Approccio

Contesto dell’articolo
Quest’articolo è concepito nella prospettiva di scrivere un plugin per SPIP versione superiore a 1.9.2b.
Quest’articolo non vuole essere esaustivo.
Riassume quanto ho potuto apprendere in occasione della realizzazione di un plugin.

Nella fattispecie mi sono ispirato al segnaposto formulaire_ecrire_auteur

Un segnaposto dinamico

Un segnaposto dinamico è differente da un segnaposto statico.
Il suo impiego è necessario quando bisogna trattare dati, ad esempio quelli inviati da un form.

Se non è necessario eseguire trattamento dati è preferibile definire segnaposti statici.
Se non specificato altrimenti, i path dei file sono relativi alla radice del plugin, cioè, relativamente alla radice del sito SPIP (cartella che contiene il file spip.php), la cartella plugins/nom_plugin.

Un segnaposto dinamico ha un suo nome, spesso lungo. Consideriamo qui un segnaposto chiamato JOHN_DOE. Questo segnaposto deve potere essere chiamato in un modello con la sintassi #JOHN_DOE. La scelta del nome è un aspetto importante che determina anche il nome di almeno due file, che realizzano l’aggiunta del segnaposto propriamente detto. Questi file sono:
-  «balise/john_doe.php»
-  «formulaires/john_doe.html»

Il file «formulaires/john_doe.html»


Ha la stessa sintassi di un modello (squelette).

Il file «balise/john_doe.php»

Comincia con la riga:
if (!defined("_ECRIRE_INC_VERSION")) return; #securite

Quindi vengono definite 3 funzioni la cui forma minimale è la seguente:

La prima funzione «balise_JOHN_DOE($p)»

Il ruolo del parametro $p rimane per me ancora da chiarire in modo completo.

$p è il contesto di compilazione della pagina spip di cui ha bisogno tra l’altro la funzione calculer_balise_dynamique per compilare correttamente i valori chiesti dalla tabella della prima funzione, come pure gli eventuali argomenti del segnaposto stesso
(#BALISE_DYN{arg1, arg2...}) che saranno in tal caso aggiunti alla fine della suddetta tabella.

Invece il terzo parametro della funzione calculer_balise_dynamique permette «di recuperare dati del contesto nel quale è chiamato il segnaposto».

Ad esempio se il vostro segnaposto è destinato a comparire in un circuito ARTICLE e avete bisogno del valore di id_article, allora questo terzo parametro deve essere array('id_article').

Questo array comporta tutti i valori di cui vi occorre recuperare di dati. L’ordine di questi valori è importante per poter ritrovare i dati nelle funzioni seguenti.

La seconda funzione «balise_JOHN_DOE_stat($args, $filtres)» [1]
-  $args è una tabella che contiene i dati recuperati dalla funzione precedente nell’ordine nel quale questi dati sono stati nominati dal terzo parametro della suddetta funzione balise_JOHN_DOE($p).

Qui è possibile effettuare trattamenti su questi dati, ad esempio convalida, lettura del database... l’elenco non è esaustivo.

Se i trattamenti sono soddisfacenti, allora la funzione restituisce $args e l’avventura continua.

Nel caso contrario la funzione può ritornare nul ("return '';)" e l’avventura si ferma. Cioè, il segnaposto #JOHN_DOE non pubblicherà nulla.

In alternativa, in mancanza della tabella dati, la funzione può anche restituire un gruppo di caratteri. Questo causerà la visualizzazione del gruppo di caratteri e l’interruzione del trattamento del segnaposto.

Si noti che la funzione balise_JOHN_DOE_stat($args, $filtres) può aggiungere alla tabella $args altri valori, a patto che siano opportunamente dichiarati come parametri dalla terza funzione balise_JOHN_DOE_dyn().

$filtres è la tabella degli eventuali pseudo-filtri del segnaposto.

La terza funzione «balise_JOHN_DOE_dyn(...)»

Nell’esempio fatto sopra si avrebbe una dichiarazione del tipo function balise_JOHN_DOE_dyn ($id_article) { ... } per utilizzare l’id_article del contesto.

I parametri di questa funzione sembrano dunque corrispondere a un elenco ordinato dei dati recuperati dalla prima funzione balise_JOHN_DOE, che può però essere alterato in tutti i modi possibili dalla seconda funzione balise_JOHN_DOE_stat.

Questa terza funzione consiste di due parti principali:

-  trattamenti di tipo dati da form HTML («_ request()» sono il vostro amico), produzione di valori destinati a essere pubblicati come risultato di questi trattamenti " - il ritorno della funzione.

L’output della funzione

I dati restituiti dalla funzione sono costituiti da un array di 3 elementi.
-  il riferimento a un modello, nel formato usato da «include_spip ()», cioè un nome di file presente in «SPIP_PATH» senza l’estensione del file;
-  un valore di durata di vita della CACHE per il risultato del segnaposto. Questo valore di solito dovrebbe essere nullo. Infatti il codice HTML prodotto dipende in generale dai valori che appaiono in $_POST: è raro che si possano condividere due chiamate in $_POST, ed è sempre meglio dunque non utilizzare la cache.
-  una tabella associativa, le cui chiavi permettono l’accesso ai relativi valori all’interno del modello (squelette) richiamato, in cui sono richiamati con il segnaposto #ENV{chiave}.

Conclusione

Ora ne sapete ora quanto me.

Note

[1NDT: _stat stà per statut=stato: questa funzione si occupa generalmente di verificare lo status della richiesta, se essa è legittima, se l’utente dispone dei relativi diritti di accesso, etc.

Dernière modification de cette page le 2 giugno 2008

Retour en haut de la page

Rispondere all’articolo

Chi sei?

Per mostrare qui il tuo avatar, registralo prima su gravatar.com (gratis e indolore). Non dimenticare di fornire il tuo indirizzo email.

Inserisci qui il tuo commento Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Aggiungi un documento

Retour en haut de la page

Ça discute par ici

  • (fr) Le plugin ZotSpip

    28 mai 2012 – 138 commentaires

    Synchronise Spip avec une bibliothèque (personnelle ou partagée) de références bibliographiques Zotero. Utilisez Zotero pour gérer / importer / rédiger vos références bibliographiques, puis incorporez vos références bibliographiques dans votre Spip avec (...)

  • (fr) ScolaSPIP 4

    19 janvier 2016 – 213 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • (fr) MediaBox

    10 mai 2010 – 514 commentaires

    Avertissement Le présent plugin est installé et activé par défaut sur toute les version de SPIP > 3.0. Inutile donc de l’installer manuellement sauf si vous utilisez SPIP 2.1. Aperçu La MediaBox est une Boîte multimédia polyvalente et (...)

  • (fr) Sommaire automatique

    31 janvier 2013 – 14 commentaires

    Ce plugin repère les intertitres des textes de vos articles et s’en sert pour génèrer un sommaire. Ce dernier peut être inséré automatiquement au début de chaque article, ou utilisé dans les squelettes pour générer un sommaire sur n’importe quel autre (...)

  • (fr) La Fabrique

    20 avril 2012 – 316 commentaires

    La Fabrique est un outil pour webmestres ou développeurs qui souhaitent créer des plugins. La Fabrique est capable de générer le code source minimal d’un plugin pour SPIP 3 (elle accélère donc le démarrage d’un plugin) et peut s’occuper également de (...)