`

CodeIgniter支持smarty,并配置支持layout

阅读更多

以插件形式加入smarty.

根据CI的规则。

下载smarty,并将其放到application/libraries/smarty下。

新建Cismarty.php,放在application/libraries下

 

[php:showcolumns:firstline[1]] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. <?php defined('BASEPATH'or die('Access restricted!');  
  2. /* 
  3.  * 作者:晋勇 
  4.  */  
  5. require(APPPATH.'libraries/smarty/Smarty.class.php');  
  6. class Cismarty extends Smarty  
  7. {  
  8.     public $ext = 'tpl';  
  9.     public $dir = '';  
  10.     public $layout = 'layout/main';  
  11. /** 
  12.   * 构造函数 
  13.   * 
  14.   * @access public 
  15.   * @param array/string $template_dir 
  16.   * @return obj  smarty obj 
  17. */  
  18.     public function __construct($template_dir = ''$compile_dir = ''$config_dir = ''$cache_dir = '')  
  19.     {  
  20.          $this->Smarty();  
  21.          if(is_array($template_dir)){  
  22.           foreach ($template_dir as $key => $value) {  
  23.            $this->$key = $value;  
  24.           }  
  25.          }  
  26.          else {  
  27.             $this->cache_dir    = $cache_dir    ? $cache_dir    : BASEPATH . 'cache/';  
  28.             $this->template_dir  =   $template_dir ? $template_dir : APPPATH . 'views/';  
  29.             $this->compile_dir   =   $compile_dir  ? $compile_dir  : APPPATH . 'tpl_c/';  
  30.             $this->compile_check =   true;  
  31.             $this->debugging     =   false;  //debug模式  
  32.             $this->caching       =   0;  //启用缓存  
  33.             $this->cache_lefetime=   6000;//缓存时间s  
  34.             $this->left_delimiter=   '<!--{';  
  35.             $this->right_delimiter=  '}-->';  
  36.          }  
  37.     }  
  38.       
  39.     /** 
  40.      * 显示输出页面 
  41.      * @access public 
  42.      * @return string 
  43.      */  
  44.     public function show($tpl){  
  45.         $this->assign('jsFiles',$this->getJsHtml());  
  46.         $this->assign('jsFiles1',$this->getJsHtml(1));  
  47.         $this->assign('LAYOUT'$this->dir ? $this->dir.'/'.$tpl.'.'.$this->ext : $tpl.'.'.$this->ext);  
  48.         $this->display($this->layout.'.'.$this->ext);  
  49.     }  
  50.     /** 
  51.      * 添加一个CSS文件包含 
  52.      * @param string $file 文件名 
  53.      * @access public 
  54.      * @return void 
  55.      */  
  56.     public function addCss($file) {  
  57.         if (strpos($file,'/')==false) {  
  58.             $file = config_item('css') . $file;  
  59.         }  
  60.         $GLOBALS['cssFiles'][$file] = $file;  
  61.     }  
  62.     /** 
  63.      * 添加一个JS文件包含 
  64.      * @param string $file 文件名 
  65.      * @access public 
  66.      * @return void 
  67.      */  
  68.     public function addJs($file,$btm=NULL) {  
  69.         if (strpos($file,'/')==false) {  
  70.             $file = config_item('js') . $file;  
  71.         }  
  72.         if ($btm==NULL) {  
  73.             $GLOBALS['jsfiles'][$file] = $file;  
  74.         } else {  
  75.             $GLOBALS['jsbtmfiles'][$file] = $file;  
  76.         }  
  77.     }  
  78.     /** 
  79.      * 取生成的包含JS HTML 
  80.      * @access public 
  81.      * @return string 
  82.      */  
  83.     public function getJsHtml($btm=NULL) {  
  84.         $html = '';  
  85.         if (!$GLOBALS['jsfiles']) {  
  86.             return;  
  87.         }  
  88.         $jsFile = $btm?'jsbtmfiles':'jsfiles';  
  89.         if (@$GLOBALS[$jsFile]) {  
  90.             foreach ($GLOBALS[$jsFileas $value) {  
  91.                 $html .= $this->jsInclude($value,true)."/n";  
  92.             }  
  93.             return $html;  
  94.         } else {  
  95.             return ;  
  96.         }  
  97.     }  
  98.     /** 
  99.      * 添加html标签 
  100.      * @param string $tag 标签名 
  101.      * @param mixed $attribute 属性 
  102.      * @param string $content 内容 
  103.      * @return string 
  104.      */  
  105.     public function addTag($tag$attribute = NULL, $content = NULL) {  
  106.         $this->js();  
  107.         $html = '';  
  108.         $tag = strtolower($tag);  
  109.         $html .= '<'.$tag;  
  110.         if ($attribute!=NULL) {  
  111.             if (is_array($attribute)) {  
  112.                 foreach ($attribute as $key=>$value) {  
  113.                     $html .= ' '.strtolower($key).'="'.$value.'"';  
  114.                 }  
  115.             } else {  
  116.                 $html .= ' '.$attribute;  
  117.             }  
  118.         }  
  119.         if ($content) {  
  120.             $html .= '>'.$content.'</'.$tag.'>';  
  121.         } else {  
  122.             $html .= ' />';  
  123.         }  
  124.         $this->output .= $html;  
  125.         return $html;  
  126.     }  
  127.     /** 
  128.      * 添加html文本 
  129.      * @param string $content 内容 
  130.      * @return string 
  131.      */  
  132.     public function addText($content) {  
  133.         $this->js();  
  134.         $content = htmlentities($content);  
  135.         $this->output .= $content;  
  136.         return $content;  
  137.     }  
  138.     /** 
  139.      * 添加js代码 
  140.      * @param string $jscode js代码 
  141.      * @param bool $end 是否关闭js 代码块 
  142.      * @return void 
  143.      */  
  144.     public function js($jscode = NULL, $end = false) {  
  145.         if (!$this->inJsArea && $jscode) {  
  146.             $this->output .= "/n<mce:script language='JavaScript' type='text/javascript'><!--  
  147. /n//<!--[CDATA[/n";  
  148.             $this->inJsArea = true;  
  149.         }  
  150.         if ($jscode==NULL && $this->inJsArea==true) {  
  151.             $this->output .= "/n//]]-->/n  
  152. // --></mce:script>/n";  
  153.             $this->inJsArea = false;  
  154.         } else {  
  155.             $this->output .= "/t$jscode/n";  
  156.             if ($end) {  
  157.                 $this->js();  
  158.             }  
  159.         }  
  160.         return;  
  161.     }  
  162.     /** 
  163.      * 添加js提示代码 
  164.      * @param string $message 提示内容 
  165.      * @param bool $end 是否关闭js 代码块 
  166.      * @return void 
  167.      */  
  168.     public function jsAlert($message$end = false) {  
  169.         $this->js('alert("' . strtr($message'"''//"') . '");'$end);  
  170.     }  
  171.     /** 
  172.      * 添加js文件包含 
  173.      * @param string $fileName 文件名 
  174.      * @param bool $defer 是否添加defer标记 
  175.      * @return string 
  176.      */  
  177.     public function jsInclude($fileName,$return = false, $defer = false) {  
  178.         if (!$return) {  
  179.             $this->js();  
  180.         }  
  181.         $html = '<mce:script language="JavaScript" type="text/javascript" src="'  
  182.                 . $fileName . '" mce_src="'  
  183.                 . $fileName . '"' . ( ($defer) ? ' defer' : '' )  
  184.                 . '></mce:script>';  
  185.         if (!$return) {  
  186.             $this->output .= $html;  
  187.         } else {  
  188.             return $html;  
  189.         }  
  190.     }  
  191.     /** 
  192.      * 添加css文件包含 
  193.      * @param string $fileName 文件名 
  194.      * @return string 
  195.      */  
  196.     public function cssInclude($fileName,$return = false) {  
  197.         if (!$return) {  
  198.             $this->js();  
  199.         }  
  200.         $html = '<LINK href="' . $fileName . '" mce_href="' . $fileName . '" rel=stylesheet>' . chr(13);  
  201.         if (!$return) {  
  202.             $this->output .= $html;  
  203.         } else {  
  204.             return $html;  
  205.         }  
  206.     }  
  207.     /** 
  208.      * 输出html内容 
  209.      * @param bool $print 是否直接输出,可选,默认返回 
  210.      * @return void 
  211.      */  
  212.     public function output($print = false) {  
  213.         $this->js();  
  214.         if ($print) {  
  215.             echo $this->output;  
  216.             $this->output = '';  
  217.             return;  
  218.         } else {  
  219.             $output = $this->output;  
  220.             $this->output = '';  
  221.             return $output;  
  222.         }  
  223.     }  
  224. }  
  225. ?>  
 

 

打开配置文件(config/autoload.php)

$autoload['libraries'] = array('cismarty');//加入cismarty

这样在所有应用中,都可以使用$this->cismarty来调用smarty实例了。

 

Cismarty类已经在原有的smarty::display基础上做了小的改动,已经支持layout功能

默认加载view/layout/main.tpl作为布局文件。

可以通过$this->cismarty->layout = "xxxx"来更改

 

http://blog.csdn.net/a600423444/article/details/5892726

分享到:
评论

相关推荐

    CodeIgniter +Smarty集成

    集成过程包括安装Smarty库、配置CodeIgniter以使用Smarty,以及设置模板目录等步骤。 1. **安装Smarty**:首先,你需要下载Smarty的最新版本,并将其解压到CodeIgniter的`application/third_party`目录下,这通常...

    CodeIgniter整合Smarty的方法详解

    在这个类的构造函数中,加载Smarty的配置文件,并根据CodeIgniter的配置文件来设置Smarty的参数,比如缓存生命周期、缓存开关、模板目录、编译目录、缓存目录和配置目录等。这些参数允许开发者定义Smarty模板的存储...

    CodeIgniter集成smarty的方法详解

    在这个自定义的类中,需要配置模板目录、编译目录等参数,并引入CodeIgniter的配置文件及URL帮助函数,以便能获取到CodeIgniter的根目录和URL。 3. 自动加载Smarty:在CodeIgniter的autoload.php文件中添加SMARTY库...

    Codeigniter框架整合Smarty引擎DEMO

    然后,你需要下载Smarty模板引擎的PHP库,将其解压并放置在CodeIgniter的"libraries"目录下,通常这个目录下存放自定义的类库。 在整合过程中,你需要创建一个名为"Smarty"的新的库文件。这个文件将作为CodeIgniter...

    CodeIgniter中使用Smarty3基本配置

    在CodeIgniter框架中集成Smarty3模板引擎,需要先创建一个类库来管理Smarty的实例,并在控制器中进行调用。以下是具体的操作步骤和知识点详解: 一、创建Smarty类库 1. 将Smarty的libs文件夹复制到CodeIgniter的...

    CodeIgniter框架实现的整合Smarty引擎DEMO示例

    这个类是用于加载Smarty引擎的关键,它继承自Smarty类,并提供了对CodeIgniter框架特定路径的配置方法。 5. 在CI_Smarty类中,需要定义构造函数,并根据传入的参数或默认值来配置Smarty的模板目录(template_dir)...

    基于 Codeigniter 3.0.6 + Smarty 3 + AdminLTE + RBAC 的后台管理系统.zip

    在基于CodeIgniter 3.0.6的后台管理系统中,开发者首先需要配置数据库连接,使用MySQL存储用户、角色和权限信息。这通常涉及到创建相应的数据表,如用户表、角色表和权限表,以及它们之间的关联关系。接下来,使用...

    后台管理程序框架源码,使用codeigniter框架和Smarty模板

    后台管理程序由php开发,目前只实现了基本功能:模块管理... 使用codeigniter框架和Smarty模板 页面使用ACE Admin UI模板,为了结合frame做了二次修改 图形报表使用openflashchart,OFC php有不少BUG,我已经做了修复

    smarty-3.1.29

    7. **配置选项**:Smarty有许多可配置的选项,比如模板目录、编译目录、缓存目录等,可以根据项目需求进行灵活设置。 8. **模板设计模式**:Smarty支持多种模板设计模式,如块(block)、分配(assign)、函数...

    CodeIgniter 中文手册1.6.3版本

    4. 错误处理与日志:CodeIgniter提供了错误报告和日志记录功能,帮助开发者追踪并解决程序运行中的问题。通过调整错误级别设置,可以在开发阶段获取详细的错误信息,而在生产环境中则可以生成日志文件。 5. 模板...

    CodeIgniter

    - **URL伪静态**:CodeIgniter支持友好的URL结构,有助于SEO优化。 在CodeIgniter 2.1.2版本中,可能没有后来版本中的一些新特性和改进,比如改进的安全特性、更好的性能优化以及对新PHP版本的支持。但是,如果你...

    Netbeans对Codeigniter框架支持的插件

    标题中的“Netbeans对Codeigniter框架支持的插件”是指NetBeans IDE为了方便开发者使用Codeigniter框架而设计的扩展工具。Codeigniter是一款轻量级、高效的PHP框架,常用于快速开发Web应用程序。NetBeans作为一个...

    【共享】codeigniter配置类库

    配置类库在CodeIgniter中扮演着核心角色,帮助开发者管理并设置应用的各个组件,如数据库连接、URL路由、邮件发送等。 配置类库是CodeIgniter的核心部分之一,它允许开发者在应用的生命周期内定义和改变各种设置。...

    CodeIgniter-2.2.6一键安装包

    5. **模板引擎**:虽然CodeIgniter本身不强制使用特定的视图模板,但它有一个简单的模板解析器,允许开发者创建自定义的模板引擎或者选择第三方库如Twig或Smarty。 6. **错误处理和调试**:内置的错误报告和日志...

    Codeigniter中集成smarty和adodb的方法

    在CodeIgniter框架中集成Smarty模板引擎和ADODB数据库抽象层库的方法涉及到几个关键步骤,包括创建特定的文件和配置文件来让CodeIgniter能够加载和使用这些库。下面详细阐述这些集成知识点。 1. 创建CodeIgniter库...

    CodeIgniter2.0 中文手册

    10. 配置(Configuration):CodeIgniter的配置文件允许开发者自定义框架的行为,如数据库连接、字符集、URL分隔符等。大部分配置项位于`config/`目录下的PHP文件中。 11. 布景类(Benchmarking):CodeIgniter的布景类...

    Smarty-3.1.16.zip

    8. **模板继承和布局**:Smarty提供了一种布局(layout)的概念,可以创建一个基础布局模板,其他模板可以引用这个布局,并在其内部添加自己的内容。 9. **预处理和后处理**:Smarty允许在模板处理前或处理后执行...

    codeigniter框架

    5. **模板引擎**:虽然视图文件可以是纯PHP,但CodeIgniter还支持使用模板引擎,如Smarty,以增强视图的灵活性和可读性。 6. **安全**:提供了输入过滤、输出编码等功能,帮助防止SQL注入和跨站脚本攻击。 **使用...

    CodeIgniter框架

    2. **数据库支持**:CodeIgniter支持多种数据库系统,包括MySQL、PostgreSQL、SQLite等,通过其简单的数据库抽象层和活动记录库,使得数据库操作变得非常直观。 3. **安全与防止XSS攻击**:CodeIgniter提供了输入...

Global site tag (gtag.js) - Google Analytics