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 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.
{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:
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?
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 -
Rückverweise
Ultime modifiche:
PmWikiIt.IncludeOtherPages: 10.09.2011 15:52 Uhr
PmWiki.IncludeOtherPages: 12.03.2024 23:10 Uhr