To jest mój główny index.php użyciu szablonów Smarty. Na tej stronie umieszczam widżet logowania JQuery po uaktywnieniu w panelu administracyjnym. $ sel to twoja strona $.
Przechodzi przez Switch incase Dodaję więcej widoków do strony indeksu, na przykład widok reklamy dla tych, którzy dostają się tam przez reklamę google. Więc reklama może prowadzić do? Sel = googlead1 i mogę wyświetlić na tej podstawie stronę.
nazywam moją klasę uwierzytelniania i załadować użytkownika (metoda zwana odświeża swoją obecność na miejscu, tak więc jej nie bezużyteczne)
Potem załadować wybraną stronę poprzez wywołanie funkcji. Następnie kończę wykonywanie kodu.
W funkcji wywołuję udostępniony widget dla kilku stron, który pozwala użytkownikowi zalogować się za pośrednictwem panelu JQuery. To dostaje stronę.
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;
}
W rzeczywistej index_page.tpl załadować widżet tak:
{if isset($auth_widget)}
<div id="auth_widget" style="float:right;">
{$auth_widget}
</div>
{/if}
Hope this helps pokazują inny sposób organizowania kodu z Smarty (co jest naprawdę niesamowite moim zdaniem)
Edytuj: Oto udostępniona funkcja getAuthWidget - zauważ, że używa pobierania zamiast wyświetlania.
/**
* 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 jest tylko silnik szablonów, to nie obchodzi „jak” i „dlaczego” strona jest ładowana. To, co robisz, to tworzenie kontrolera frontowego. Zwykle to, co ludzie robią, polega na kierowaniu żądania (uri) do konkretnej kontrolki-> metody, a nie bezpośrednio ładują szablony takie jak obecnie. Biorąc to pod uwagę, nie ma nic złego w sposobie, w jaki to robisz. – Supericy
To dobrze, zachowaj to w ten sposób. – sofl