• Benvenuti su XenForo Italia!

    Stai navigando nella nostra community come Ospite.

    Avere un account su XenForo Italia ti permetterà di creare e partecipare alle discussioni, scaricare i file di traduzione in italiano, vedere le immagini e i video a formato intero, iniziare conversazioni personali con gli altri membri del forum e di utilizzare tutte le funzioni di questo sito.

    Condividi anche tu la tua passione per XenForo!

    Registrarsi è gratis ed elimina la pubblicità

netkingZ

Admin XenForo
Licenza Verificata
Punteggio reazioni
84
Punti
55
1ma Premessa:

Premetto che non sono un esperto ma ho un minimo fatto un po di ricerca e come concetti , almeno a me , non sembrano cosi complicati , cercherò di spiegargli al meglio che posso.

2da Premessa:

Le informazioni che vi riporto qui di seguito si basano sulle informazioni fornite da Kier , in inglese , a questo link:
http://XenForo.com/community/threads/editing-templates-and-defining-a-callback-for-pages.7226/

A cosa serve la funzione CallBack?
Come dice il nome stesso a richiamare codice da pagine esterne , ovviamente con estenzione .php .

Quali Strumenti ci servono ?
1- Una buona conoscenza del codice nativo XenForo e delle corrispettive Tag utilizzate
[ a tal proposito a darvi una piccola mano potete scaricare l'aggiornamento contenente il codice XenForo e la TagLibrary per DreamWeaver a questo link:
http://XenForo.com/community/threads/dreamweaver-XenForo-template-syntax-highlighting-configuration.9800/]
2- Un Forum XenForo ... :)

Passiamo alla pratica:

Si deve fare un piccolo ragionamento prima ; se date un occhiata ai video di Kier , anche senza conoscere l'inglese , noterete che lui si era gia preparato buona parte del materiale per il video di spiegazione , quindi l'aspetto visivo del template ( quindi la parte in "HTML" e in CSS) li aveva gia creati in precedenza , e in questa guida non ci occuperemo di questo ma solo di come poter richiamare pagine in formato PHP ad oggetti nei vostri Template.
Quindi ripeto per creare la parte "visiva" del Template avete bisogno di conoscere la sintassi di XenForo.

Adesso ci passiamo sul serio alla pratica ... :p

1- Per prima cosa dovete creare la cartella che conterrà le vostre pagine in formato .php , quindi andate nella vostra root , poi entrate nella cartella library e li create una nuova cartella

Root -->Library --> Crea una nuova cartella
2- la nuova cartella la chiameremo Dev ( potete chiamarla come volete basta che poi ve lo ricordiate al momento del richiamo tramite funzione CallBack , tenetene presente )

3-All'interno della cartella Dev dovete creare un altra cartella che denomineremo PageCallBack
( potete chiamarla come volete basta che poi ve lo ricordiate al momento del richiamo tramite funzione CallBack , tenetene presente )

4- All'interno di essa creeremo o importeremo un file che nomineremo TemplateDemo.php
( potete chiamarlo come volete basta che poi ve lo ricordiate al momento del richiamo tramite funzione CallBack , tenetene presente )

Quindi il percorso che otterrete è il seguente :

Root --> Library --> Dev --> PageCallBack --> TemplateDemo.php
Ok se avete fatto tutto correttamente , e fin qui è tutto semplice , passiamo al contenuto del file TemplateDemo.php

Il contenuto del file Template Demo è il seguente nel nostro caso:



<?php

Class Dev_PageCallBack_TemplateDemo
{
public static function respond(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract $response)
{
$userModel = $controller->getModelFromCache('XenForo_Model_User');
$response->params['users'] = $userModel->getLatestUsers(array(),array('limit' => 5));

$response->templateName = 'template_demo';
}
}

?>

faccio un minimo di spiegazione alla bene meglio di cosa è stato scritto in questo codice:

1- Molto importante è la Classe che contiene tutto il codice cioè questa :
Dev_PageCallBack_TemplateDemo
<-- CLASSE
Infatti sarà questa dicitura a dover essere richiamata nella funzione CallBack sul pannello amministrativo di XenForo .
2- La seconda parte fondamentale del codice è la seguente :
public static function respond(----)
<--- METODO
Infatti la denominazione della funzione respond sarà l'altra parte da inserire nella Callback (poi vedremo al momento opportuno come fare e vi sarà tutto più chiaro)

N.B.: La funzione deve essere obbligatoriamente public static per essere richiamata

3- Poi abbiamo il contenuto di quelli che dovranno essere i risultati che vogliamo ottenere , cioè:

public static function respond(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract $response)
la parte in grassetto che vi ho evidenziato appunto sta dicendo se è presente il controllo pubblico e che l'associazione deve essere fatta mediante la variabile $controller , e il controllo del responso è associato tramite la variabile $response.

Per farvi un esempio molto semplice : il sistema sta verificando che sia presente quello che richiediamo e che esista un responso , quindi un risultato , associabile al controllo che ha fatto.

4- poi abbiamo il contenuto stesso di quello che vogliamo che sia controllato e dia un responso ed è questo :

$userModel = $controller->getModelFromCache('XenForo_Model_User');
$response->params['users'] = $userModel->getLatestUsers(array(),array('limit' => 5));

$response->templateName = 'template_demo';

Dove :

$userModel = $controller->getModelFromCache('XenForo_Model_User');

serve per eseguire il controllo richiesto ( in questo caso che siano presenti gli utenti che si sono registrati recentemente )

Mentre :
$response->params['users'] = $userModel->getLatestUsers(array(),array('limit' => 5));

sta dicendo che il responso soggetto al parametro "users" è uguale al controllo degli utenti e che deve riempire il primo array visualizzando come massimo limite 5 utenti.

Salvate il file con questo codice all'interno del file denominato TemplateDemo.php

In fine molto importante è :

$response->templateName = 'template_demo';

Che sta dicendo al sistema dove questo codice php deve essere applicato , cioè nel template che quando lo creerete andando su Pannello di controllo --> Aspetto -->Style -->Scegliete il vostro stile --> E poi cliccate su Nuovo Template , dovrete nominarlo proprio template_demo.

N.B.: Posso comprendere che quello che è stato scritto è arabo , ma vi assicuro che la sintassi XenForo è intuitiva e una volta compresa capirete anche quello che è stato scritto.

Passiamo adesso all'ultima parte :

1- Accediamo al nostro Pannello di controllo di XenForo e più precisamente nella voce dei Nodi e creiamo una nuova pagina , quindi il percorso da fare è :
Applicazioni --> Crea Nuova Pagina ( o tramite tasto destro in alto allo schermo)
2- riempite le seguenti voci cosi come segue :

Porzione della URL: TemplateDemo
Titolo: TemplateDemo
3- Cliccate sul pulsante a metà schermo verso l'alto denominato Callback PHP

4- In questa pagina troverete la voce Callback PHP dove vedete due spazi liberi , dove in uno è scritto CLASSE e nell'altro METODO


Se ricordate nel codice che è stato scritto qui sopra sono entrambe presenti , quindi in Classe inseriamo :

Dev_PageCallBack_TemplateDemo (che riporta anche il percorso della cartella dove si trova il file i formato .php)

mentre alla voce Metodo inseriamo :
respond

Devo far notare le ultime 2 cose :
1- Tutte le funzioni ulteriori ad oggetti che farete nel PHP devono essere poi richiamate o inserite nella funzione (metodo) respond , perche XenForo legge solo 1 metodo quando andate a creare una Nuova Pagina dal Pannello di controllo di XenForo.

2- Vi allego l'immagine del codice nativo per il template fatto da Kier:



e questo dovrebbe essere il risultato che otterrete una volta eseguito tutto quello che vi ho scritto in modo corretto :



Spero di esservi stato utile.
;)

P.S.: Agli Admin ed ai Mod : se ho sbagliato la sezione dove scrivere vi prego di spostare questo Topic , Grazie. Mi scuso se c'è qualche errore di sintassi italiana ma l'orario in cui sto scrivendo questo Topic è tardi (3 di notte) quindi sono un po fuso e stanco.
 

Il Custode

Custode del Forum
Membro dello Staff
Licenza Verificata
Punteggio reazioni
566
Punti
140
Sarebbe sicuramente da mettere come tutorial nel nostro resource manager! :)
 
  • Mi piace
Reazioni: NKZ

Per rispondere Entra o Registrati è Gratis…

Perchè dovresti Registrarti?

  • Partecipare e Creare Discussioni
  • Trovare Consigli e Suggerimenti
  • Condividere i tuoi Interessi
  • Informarti sulle Novità
Alto