[vB 4] Visualizzare i template nelle pagine personalizzate e registrare le variabili

logo-vbulletin-articoli-klayz
Visualizzare i template nelle pagine personalizzate e registrare le variabili

Visualizzare i template nelle pagine personalizzate e registrare le variabili. Guida completa su come fare per vBulletin 4! Continuate a leggere!

Introduzione

Con il nuovo sistema di vBulletin 4, i template non vengono più visualizzati attraverso il seguente codice:

eval('$mytemplate = "' . fetch_template('mytemplate') . '";');  

Inoltre le variabili e gli array dei plugin che vengono eseguiti all’interno di una pagina non possono più ottenere l’accesso nel template della pagina in questione. Devo essere *registrati* prima.

Funzione base per mostare un template e registrare tutte le variabili e gli array che si vogliono usare al suo interno

/* Some Code, setting variables, (multidimensional) array */
$my_var = "abc";
$my_array = array(
        'key1' => 'value1',
        'key2' => array(' 
                'key21' => 'value21',
                'key22' => 'value22'
        ')
    );

/* render template and register variables */
$templater = vB_Template::create('mytemplate');
    $templater->register('my_var', $my_var);
    $templater->register('my_array', $my_array);
$templater->render();  
  • Nella prima linea si inserisce il template che deve essere visualizzato, usando la nuova classe vB_Template (vB_Template::create). Questo metodo passa il nome del template come un argomento (argument).
  • Le due linee che seguono registrano una variabile e un array che vogliamo usare all’interno del nostro template.Gli argomenti che vengono passati sono: 1) il nome che si vuole usare per accedere alla variabile. 2) la variabile dal codice che si vuole registrare. Si possono registrati tutte le variabili e gli array di cui si necessita. Bisogna solo ricordarsi che si dovrà registrare ogni variabile e ogni array che si vuole usare nel nostro template personalizzato in questo modo. Se non saranno registrati non sarà possibile utilizzarli..
  • La quarta linea mostra il template ($templater->render()).

Adesso nel template si potranno usare le variabili e gli array registrati nel seguente modo:

{vb:raw my_var}
{vb:raw my_array.key1}
{vb:raw my_array.key2.key21}

Notate l’ultima riga; gli array multidimensionali sono possibili.

Adesso possiamo fare diverse cose:

Mostrare il template direttamente – per pagine personalizzate

$templater = vB_Template::create('mytemplate');
    $templater->register_page_templates(); 
    $templater->register('my_var', $my_var);
    $templater->register('my_array', $my_array);
print_output($templater->render());  

Questo mostrerà il nostro template. Possiamo usare questo codice nelle nostre pagine personalizzate, se ne abbiamo.
Notate la seconda linea di codice:

 $templater->register_page_templates();  

Questo parte di codice registrerà automaticamente i template header, footer e headinclude che userete nel template della vostra pagina personalizzata.

Usare una hook per il template

$templater = vB_Template::create('mytemplate');
    $templater->register('my_var', $my_var);
    $templater->register('my_array', $my_array);
$template_hook[forumhome_wgo_pos2] .= $templater->render();  

Il template verrà mostrato usando l’hook scelto (nel nostro caso $template_hook[forumhome_wgo_pos2]). Vedete il punto (“.”) prima del segno uguale (“=”) nell’ultima linea? Sta ad indicare che l’hook può essere usato in altre hack o modifiche, senza che il nostro venga sovrascritto.

Salvare il tutto in una variabile per renderla disponbile in futuro per un altro template

$templater = vB_Template::create('mytemplate');
    $templater->register('my_var', $my_var);
    $templater->register('my_array', $my_array);
$mytemplate_rendered = $templater->render();  

Adesso abbiamo salvato la visualizzazione del template dentro una variabile. Adesso dunque possiamo anche registrare un altro template, se vogliamo:

$templater = vB_Template::create('my_other_template');
     $templater->register('my_template_rendered', $my_template_rendered);
 print_output($templater->render());  

Quindi, ancora una volta, all’interno del nostro nuovo my_other_template possiamo richiamare..

{vb:raw my_template_rendered}

Salvare all’intero di un array e preregistrarlo per usarlo all’interno di un template esistente

$templater = vB_Template::create('mytemplate');
    $templater->register('my_var', $my_var);
    $templater->register('my_array', $my_array);
$templatevalues['my_insertvar'] = $templater->render();
vB_Template::preRegister('FORUMHOME', $templatevalues);  
  • Questo è un altro metodo più flessibile per salvare all’interno di una variabile i template che vengono visualizzati, così da poterli usare in futuro in altri template esistenti. Nel codice qui sopra, ad esempio, si vuol visualizzare il nostro template in forumhome.
  • Il problema è: Non abbiamo metodi diretti per registrare le variabile per template già esistenti come ad esempio il template FORUMHOME. Viene creato e mostrato nei file, e noi non vogliamo ad andare ad agire lì.
  • Per aiutarci in questo, è stato creato un altro metodo per la classe vB_Template, chiamato preRegister. Usando questo sistema, possiamo passare i nostri dati al FORUMHOME prima che questo venga visualizzato. Nota che i dati devono essere salvati all’intero di un array ($templatevalues[‘my_insertvar’]), perché una semplice variabile restituirebbe un errore. Nell’ultima linea l’array viene preregistrato; e gli argomenti sono: 1) il nome del template esistente e.. 2) l’array che contiene i dati. Ancora una voltam questo può essere fatto per tutti gli array di cui si necessita.
  • Ovviamente, la funzione preRegister può essere usata per ogni tipo di array o variabile. Non importa se si ha salvato un template visualizzato (come nel nostro esempio) al suo intero, oppure se questo contiene solamente una semplice statement boolean true/false.

Per accedere ai dati all’interno del template che è stato preregistrato:

{vb:raw my_insertvar}

Nota: non è {vb:raw templatevalues.my_insertvar}!

Inserite in cache i vostri template!

Qualsiasi cosa facciate, inserite in cache i vostri template! Adesso sapete come mostratre i vostri template – una volta che avete capito come fare, assicuratevi di farlo nel modo migliore possibile: usate la cache per i template del vB. Per vedere se i vostri template sono in cache oppure no, attivate la modalità debub aggiungendo $config[‘Misc’][‘debug’] = true; al vostro config.php (nota: non attivate la modalità debug se il forum è aperto al pubblico). Nelle info del debug ci sono tutti i template che nella pagina attuale vengono richiamati, e quelli che non sono in cache sono mostrati in rosso.

Per inserire dunque i vostri template in cache, aggiungete un plugin con l’hook cache_templates contenente il seguente codice:

// for a single template
$cache[] = 'mytemplate'; 

// for more than one templates in one step
$cache = array_merge((array)$cache,array(
    'mytemplate',
    'myothertemplate',
    'mythirdtemplate'
));  

Si ringrazia cellarius per i permessi dati per la riproduzione, la traduzione e il riadattamento del seguente articolo:
[HOW TO – vB4] Rendering templates and registering variables – a short guide.
Thanks goes to cellarius for given permissions. Original thread: [HOW TO – vB4] Rendering templates and registering variables – a short guide.

 
0 Kudos
Non ti
muovere!

Condividi il Post