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?

PmWiki is a wiki-based content-management system (CMS) for collaborative creation and maintenance of websites.

PmWiki pages look and act like normal web pages, except they have an "Edit" link that makes it easy to modify existing pages and add new pages into the website, using basic editing rules. You do not need to know or use any HTML or CSS. Page editing can be left open to the public or restricted to small groups of authors.

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: September 10, 2011, at 10:52 AM
PmWiki.IncludeOtherPages: March 12, 2024, at 06:10 PM