pasargadteam
یک شنبه 14 مهر 1392, 12:17 عصر
سلام و درود بیکران
من خیلی سرچ کردم اما به نتیجه خاصی نرسیدم.
در سیستمی که دارم مینویسم میخواهم طرف کاربری به صورت تمپلیت با پسوند tpl باشه. درون فایل مخصولات HTML و PHP باشه.
برنامه های مختلفی مثل Smarty , Rain TPL دیدم اما مثل اینا نه.
میخواهم کلاسش رو از بیس خودم بنویسم. اما نمیدونم از کجا شروع کنم. منبع خاصی هم پیدا نکردم.
یکی از دوستانم این کارو کرده در سیستم خودش اما دقیقاً سر در نمیارم چطوری این کارو کرده. خودشم در دسترس نیست بتونم ازش بپرسم.
اگر منبعی هست که کامل توضیح بده ممنون میشم کمک کنید یا کسی میتونه کمک کنه من این کار رو انجام بدم ممنون میشم.
نمونه کدی که دوست من نوشته میزارم اینجا یه تیکه اش رو:
<?php
################################################## ################################################## ################### CMS Start
class CMS {
var $root_templates_folder= 'templates/';
var $template_js='js/';
var $template_css='css/';
var $template_images='images/';
var $selected_template;
function CurrentFullUrl(){
if(!isset($_SERVER['REQUEST_URI'])){ $serverrequri = $_SERVER['PHP_SELF']; }
else{ $serverrequri = $_SERVER['REQUEST_URI']; }
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = CMS::strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$final=$protocol."://".$_SERVER['SERVER_NAME'].$port.$serverrequri;
// remove error code from RwMod url:
$final=str_replace('error.13/','/',$final);
return $final;
}
function GetSetting($name){
/**
* read a system setting parameter
**/
if($name!="selected_template"){
$row=@mysql_fetch_array(mysql_query("select `sitetemplate` from `settings` where `sitetemplate`='".$name."'"));
return $row['sitetemplate'];
}else{
//if($_SESSION['url_selected_template']!=""){
//return $_SESSION['url_selected_template'];
//}else{
$row=@mysql_fetch_array(mysql_query("select `sitetemplate` from `settings` where `sitetemplate`='".$name."'"));
return $row['sitetemplate'];
//}
}
}
function TemplateFolder($folder_name=''){
if(CMS::GetSetting('rwmod_status')==1){
return CMS::GetRootBackStepsInRwMod().'templates/'. CMS::GetSetting('selected_template').'/'.$folder_name;
}else{
return 'templates/'. CMS::GetSetting('selected_template').'/'.$folder_name;
}
}
function TemplatesRoot($page_name){
include('templates/'.$page_name);
}
function Template($page_name,$type,$only_root=true){
if(!$only_root){
if(CMS::GetSetting('rwmod_status')==1){
if(file_exists('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type)){
echo '<script>alert(\'found !!\');</script>';
}else{
echo '<script>alert(\'not found !!\');</script>';
}
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}else{
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}
}else{
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}
}
}
################################################## ################################################## ############################
?>
یه موضوعی که هست یکم این نام جدول هاش ویرایش شده تا به سیستم من سازگار بشه.
الان فایل index.tpl رو میشناسه اما از درون پوشه templates.
من میخواهم که درون پوشه ای که در جدول دیتابیس مشخص شده رو هم بره نشون بده. یعنی اونجا مینویسه defaults.
آدرس بشه: templates/defaults
پیشاپیش از کمکتون ممنون.
من خیلی سرچ کردم اما به نتیجه خاصی نرسیدم.
در سیستمی که دارم مینویسم میخواهم طرف کاربری به صورت تمپلیت با پسوند tpl باشه. درون فایل مخصولات HTML و PHP باشه.
برنامه های مختلفی مثل Smarty , Rain TPL دیدم اما مثل اینا نه.
میخواهم کلاسش رو از بیس خودم بنویسم. اما نمیدونم از کجا شروع کنم. منبع خاصی هم پیدا نکردم.
یکی از دوستانم این کارو کرده در سیستم خودش اما دقیقاً سر در نمیارم چطوری این کارو کرده. خودشم در دسترس نیست بتونم ازش بپرسم.
اگر منبعی هست که کامل توضیح بده ممنون میشم کمک کنید یا کسی میتونه کمک کنه من این کار رو انجام بدم ممنون میشم.
نمونه کدی که دوست من نوشته میزارم اینجا یه تیکه اش رو:
<?php
################################################## ################################################## ################### CMS Start
class CMS {
var $root_templates_folder= 'templates/';
var $template_js='js/';
var $template_css='css/';
var $template_images='images/';
var $selected_template;
function CurrentFullUrl(){
if(!isset($_SERVER['REQUEST_URI'])){ $serverrequri = $_SERVER['PHP_SELF']; }
else{ $serverrequri = $_SERVER['REQUEST_URI']; }
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = CMS::strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$final=$protocol."://".$_SERVER['SERVER_NAME'].$port.$serverrequri;
// remove error code from RwMod url:
$final=str_replace('error.13/','/',$final);
return $final;
}
function GetSetting($name){
/**
* read a system setting parameter
**/
if($name!="selected_template"){
$row=@mysql_fetch_array(mysql_query("select `sitetemplate` from `settings` where `sitetemplate`='".$name."'"));
return $row['sitetemplate'];
}else{
//if($_SESSION['url_selected_template']!=""){
//return $_SESSION['url_selected_template'];
//}else{
$row=@mysql_fetch_array(mysql_query("select `sitetemplate` from `settings` where `sitetemplate`='".$name."'"));
return $row['sitetemplate'];
//}
}
}
function TemplateFolder($folder_name=''){
if(CMS::GetSetting('rwmod_status')==1){
return CMS::GetRootBackStepsInRwMod().'templates/'. CMS::GetSetting('selected_template').'/'.$folder_name;
}else{
return 'templates/'. CMS::GetSetting('selected_template').'/'.$folder_name;
}
}
function TemplatesRoot($page_name){
include('templates/'.$page_name);
}
function Template($page_name,$type,$only_root=true){
if(!$only_root){
if(CMS::GetSetting('rwmod_status')==1){
if(file_exists('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type)){
echo '<script>alert(\'found !!\');</script>';
}else{
echo '<script>alert(\'not found !!\');</script>';
}
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}else{
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}
}else{
include('templates/'.$this->GetSetting('selected_template').'/'.$page_name.'.'.$type);
}
}
}
################################################## ################################################## ############################
?>
یه موضوعی که هست یکم این نام جدول هاش ویرایش شده تا به سیستم من سازگار بشه.
الان فایل index.tpl رو میشناسه اما از درون پوشه templates.
من میخواهم که درون پوشه ای که در جدول دیتابیس مشخص شده رو هم بره نشون بده. یعنی اونجا مینویسه defaults.
آدرس بشه: templates/defaults
پیشاپیش از کمکتون ممنون.