Questa è la mia principale Index.php usando Smarty Templating. In questa pagina includo un widget di login JQuery quando attivato nel pannello di amministrazione. $ sel è la tua pagina $.
Passa attraverso un interruttore in caso aggiungo più visualizzazioni per la pagina di indice, ad esempio una visualizzazione di pubblicità per coloro che ottengono lì attraverso un annuncio google. Quindi la pubblicità può collegarsi a? Sel = googlead1 e posso visualizzare una pagina basata su questo.
io chiamo la mia classe di autentificazione e caricare l'utente (metodo chiamato rinfresca la sua presenza in loco, quindi la sua non inutile)
Poi ho caricare la pagina selezionata attraverso una chiamata di funzione. Successivamente, esco dall'esecuzione del codice.
Nella funzione, chiamo un widget condiviso per più pagine che consente all'utente di accedere tramite un pannello JQuery. Questo ottiene la pagina.
include "./include/includes.php";
$sel=null;
if(isset($_POST["sel"]) or isset($_GET["sel"]))
{
$sel =isset($_POST["sel"])?$_POST["sel"]:$_GET["sel"];
}
$auth = new authentification($dbconn, "", "","");
$user = $auth->checkuser();
switch($sel){
default: IndexPage();
}
exit;
function IndexPage(){
global $smarty, $lang, $config;
//load the text for the login
$smarty->assign("text", $lang["basiclogin"]);
if($config["auth_widget"] == "true")
{
$smarty->assign("auth_widget",getAuthWidget());
}
//display the whole index page
$smarty->display($config["index_theme_path"]."/index_page.tpl");
exit;
}
Nel index_page.tpl effettivo passo per caricare il widget in questo modo:
{if isset($auth_widget)}
<div id="auth_widget" style="float:right;">
{$auth_widget}
</div>
{/if}
Spero che questo aiuti mostrare un altro modo per organizzare il codice con Smarty (che è davvero impressionante a mio parere)
Modifica: questa è la funzione getAuthWidget condivisa: si noti che utilizza il recupero anziché la visualizzazione.
/**
* Allows various pages to get the authentification widget if desired
* @global Object $smarty
* @global Array $lang
* @global Array $config
* @global Array $user
* @return Page returns the fetched template widget
*/
function getAuthWidget($err = ""){
global $smarty, $lang, $config, $user;
$smarty->assign("text", $lang["basiclogin"]);
//check if user is loaded, if not, throw error
if(isset($user) && $user["id"] >= -1)
{
$smarty->assign("user", $user);
}
else
{
echo "user not set";
exit;
}
return $smarty->fetch($config["index_theme_path"]."/auth_widget.tpl");
}
Smarty è solo un motore di template, ma non si preoccupa 'come' o 'perché' la pagina viene caricata. Quello che stai facendo è un controller di front end. Di solito ciò che le persone faranno è instradare una richiesta (uri) a uno specifico controller-> metodo piuttosto che caricare direttamente i template come si sta facendo attualmente. Detto questo, non c'è niente di sbagliato nel modo in cui lo stai facendo. – Supericy
È buono, mantienilo così. – sofl