Đây là index.php chính của tôi sử dụng Smarty Templating. Trong trang này tôi bao gồm một widget đăng nhập JQuery khi được kích hoạt trong bảng quản trị. $ sel là trang $ của bạn.
Nó đi qua một chuyển đổi trong trường hợp tôi thêm nhiều lượt xem hơn cho trang chỉ mục, ví dụ như chế độ xem công khai cho những người đến đó mặc dù quảng cáo trên google. Vì vậy, công khai có thể liên kết đến? Sel = googlead1 và tôi có thể hiển thị một trang dựa trên đó.
tôi gọi lớp xác thực của tôi và tải người sử dụng (phương pháp gọi là làm mới sự hiện diện của mình trên trang web để nó không vô dụng)
Sau đó, tôi tải trang lựa chọn thông qua một lời gọi hàm. Sau đó tôi thoát khỏi thực thi mã.
Trong hàm, tôi gọi một tiện ích được chia sẻ cho một số trang cho phép người dùng đăng nhập thông qua bảng điều khiển JQuery. Điều đó nhận được trang.
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;
}
Trong index_page.tpl thực tế tôi tải widget như vậy:
{if isset($auth_widget)}
<div id="auth_widget" style="float:right;">
{$auth_widget}
</div>
{/if}
Hope this helps hiển thị một cách khác để tổ chức mã của bạn với Smarty (đó là thực sự tuyệt vời trong quan điểm của tôi)
Chỉnh sửa: Đây là hàm getAuthWidget được chia sẻ - thông báo nó sử dụng tìm nạp thay vì hiển thị.
/**
* 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 chỉ là một cỗ máy template, nó không quan tâm 'cách' hoặc 'tại sao' trang web được tải. Những gì bạn đang làm là tạo một bộ điều khiển giao diện người dùng. Thông thường những gì mọi người sẽ làm là định tuyến một yêu cầu (uri) đến một phương thức controller-> cụ thể hơn là tải trực tiếp các mẫu như bạn hiện đang làm. Điều đó đang được nói, không có gì sai với cách bạn đang làm nó. – Supericy
Tốt, giữ nó như thế này. – sofl