Includere altre pagine

autori (intermedio) La direttiva (:include:) permette di inserire il contenuto di altre pagine in quella corrente. Tutte le direttive riportate di seguito includono il codice delle pagine, tale e quale. In particolare, tutti i collegamenti nella pagina inclusa vengono riferiti al WikiGroup attuale, se non viene specificato altrimenti.

Sintassi di base

  • (:include NomePagina:)
include la pagina "NomePagina" che si trova nello stesso gruppo.
  • {Gruppo/NomePagina$:PTVar}
include una variabile nominata nella pagina.
include una pagina seguendo i parametri indicati (opzionali).
Note: Il ConditionalMarkup non funziona con l'inclusione di altre pagine, oppure le PageTextVariables. Le variabili nel testo della pagina, infatti, non rispettano la direttiva (:if:). Perciò, se si include una sezione: (:include OtherPage#section:), questa [[#section]] verrebbe inclusa anche se si trovasse dentro a un costrutto (:if:)...(:ifend:).

Quando si controllano variabili nelle pagine incluse, il contesto, cioè se la pagina include o è inclusa, è importante. Si veda PageVariables per ulteriori dettagli.

Parametri

I parametri che non sono parole chiave, cioè nomi ed etichette, possono essere ripetuti.

Pagine

(:include NomePagina:)
(:include Group.NomePagina:)
(:include NomePagina GroupName.Nomepagina:)
Inserisce il testo di un'altra pagina in quella corrente. Si possono specificare più pagine da includere.

Etichette

(:include PageName#from#to:)include la parte di PageName compresa tra le etichette [[#from]] e [[#to]]
(:include PageName#from#:)include la pagina a partire da [[#from]] fino alla fine
(:include PageName##to:)include la pagina dall'inizio fino all'etichetta [[#to]]
(:include PageName#from:)include tutto ciò che si trova tra [[#from]] e l'etichetta successiva
(:include PageName##:)include la pagina dall'inizio fino alla prima etichetta
(Gli esempi 2 e 4 potrebbero sembrare anti-intuitivi).
Nota: non inserire spazi tra "#from" e "#to"
(:include Page1 Page2 #from#to:)
Include la prima pagina disponibile, tra Page1 e Page2. Di tale pagina, viene inclusa soltanto la parte tra le etichette [[#from]] e [[#to]]
Nota: bisogna inserire uno spazio tra "Page2" e "#from#to". Le etichette "#from#to" devono trovarsi in entrambe le pagine, altrimenti la pagina selezionata verrà inclusa per intero.
(:include Page1#from1#to1 Page2#from2#to2:)
Include la prima pagina disponibile, tra Page1 e Page2. Di tale pagina viene inclusa solo una parte, rispettivamente quella tra le etichette [[#from1]] e [[#to1]] per Page1, o quella tra [[#from2]] e [[#to2]] per Page2.
Nota: Alcune versioni precedenti di PmWiki permettevano di inserire spazi tra #from e #to, benché pm dicesse che questo non doveva succedere. Le versioni più recenti non permettono più di inserire spazi lì. Il comportamento precedente può essere richiesto aggiungendo nel file config.php o farmconfig.php:
Markup('includeanchors', '<include', '/(\\(:include.*?#\\w+)\\s+(#\\w+)/', '$1$2');

Lines=

(:include PageName lines=10:)
(:include PageName lines=5..10:)
(:include PageName lines=5..:)
Include le prime 10 righe, quelle tra la 5 e la 10, oppure la 5 e le seguenti, di PageName. Per "riga" si intende una riga di codice. Una riga, quindi, potrebbe essere un intero paragrafo, che venga poi mostrato a schermo su più righe, oppure una riga vuota.
(:include Page1 Page2 Page3 lines=1..5:)
Include le prime cinque righe della prima pagina disponibile tra Page1, Page2 e Page3. (Per includere linee da più pagine, bisogna inserire una direttiva per ciascuna pagina.)

Self=

(:include PageName self=0:)
Il parametro self può essere impostato a 0 oppure 1. Indica se la direttiva può includere la pagina corrente. Questo parametro è utile se PageName è una variabile, ad es. {$Name}, e si vuole evitare di includere la pagina corrente.

Variabili nel testo della pagina

{Group/PageName$:Var}
Include i valori di una lista di definizioni presente in una pagina (opzionale), rendendoli PageTextVariables. Questa lista deve essere nella forma (:elemento:descrizione), (elemento:descrizione), oppure ((:elemento:descrizione:)).

Basepage=

(:include PageName basepage=BasePageName:)
Include PageName, ma dando la base BasePageName a tutte le variabili di pagina e ai collegamenti relativi.

Se si specifica basepage=, allora tutti i collegamenti relativi e le variabili di pagina vengono basati sul valore di basepage. Quindi, se si creasse una pagina TemplateName che contenga:

Nome: {$:Name}
Indirizzo: {$:Address}

allora, la direttiva

(:include TemplateName basepage=PageName:)

mostrerebbe il contenuto di TemplateName, trattando tutte le variabili di pagina e i collegamenti come relativi a PageName. In particolare, i valori di {$:Name} e {$:Address} sarebbero presi da PageName. Questo vale anche per {$Title} e {$LastModifiedBy}.

Questo assume che sul sito sia abilitato $EnableRelativePageVars, che sarà predefinito per PmWiki 2.2.0. Al momento $EnableRelativePageVars è disabilitato per facilitare l'aggiornamento dalla versione 2.1.x.

Lo scopo primario è di permettere l'inclusione di pagine in un modo che assomigli alla versione 2.1.x, dove le variabili di pagina e i link sono relativi alla pagina visualizzata al momento. Questo si ottiene così:

(:include SomeOtherPage basepage='' :)
  oppure
(:include SomeOtherPage basepage={*$FullName} :)

Questo permette anche a GroupHeader and GroupFooter di contenere variabili di pagina e collegamenti relativi alla pagina visualizzata, anziché a se stessi:

  ## Impostazione di default di $GroupHeaderFmt
  $GroupHeaderFmt = 
    '(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)';

Altrimenti, l'uso di IncludeOtherPages all'interno di GroupHeader mostrerebbe 'GroupHeader' anziché il nome della pagina visualizzata.

Si è scoperto che il parametro basepage= è abbastanza generale per essere usato in un engine di template. È possibile creare una pagina che contenga variabili, il cui valore venga letto da un'altra pagina:

(:include PaginaTemplate basepage=PaginaConDati :)

Una singola PaginaTemplate può ovviamente contenere più template, separati da etichette. Così si ottiene una sintassi stranamente simile[1] alle pagelist-template:

    (:include PaginaTemplate#abc basepage=PaginaDati :)

Quindi TemplatePage può avere una sintassi del tipo:

    
    [[#abc]]
    ...inserire il template qui...
    [[#abcend]]

ed è possibile mostrare TemplatePage come un template, senza che essa venga interpretata... così come si fa per Site.PageListTemplates.

[1]D'accordo, forse non è così strano: il codice di dei pagelist template di fatto usa la stessa funzione di (:include:) per leggere i template. Ma è comunque un'analogia utile.

Vedere anche

Nota di stile

Normalmente, le pagine e le righe incluse non possono essere distinte dal resto del testo di una pagina. Si possono usare Stili wiki per sottolineare visivamente che quel testo è "speciale". Per esempio:

%define=leftborder border-left="2px solid #88f" margin-left="2px" padding="1px 0 3px 10px"%
Che cos'è PmWiki?
>>leftborder<< (:include PmWiki.PmWiki lines=1..4:) 
>><<
''Buona giornata!''

Che cos'è PmWiki?

!!Personal Wiki

Buona giornata!

Riferimento ai parametri

Tutti i parametri che vengono passati a una direttiva di inclusione sono accessibili alla pagina inclusa, sotto forma di variabile speciale {$$...} con lo stesso nome. La pagina inclusa, quindi, può ricevere informazioni da quela che la include.

Note

  • È possibile usare (:include My/Page#myanchor lines=4:) per iniziare dalla riga [[#myanchor]] e riportare 4 righe.

<< Direttive per pagine | Indice documentazione | InterMap >>

Qual è il numero massimo di inclusioni che possono coesistere in una pagina? Sembra che il mio sito non vada oltre 48 inclusioni. ($MaxIncludes)

Per default, PmWiki imposta un limite di 50 inclusioni per qualunque pagina. Questo serve a impedire cicli infiniti e altre situazioni che potrebbero intasare un server. Il limite può essere cambiato dal WikiAdministrator attraverso la variabile $MaxIncludes.


Traduzione di PmWiki.IncludeOtherPages - Pagina originale: PmWikiIt.IncludeOtherPages - Backlinks
Ultime modifiche:
PmWikiIt.IncludeOtherPages: 2011-09-10
PmWiki.IncludeOtherPages: 2022-03-17